码迷,mamicode.com
首页 > 编程语言 > 详细

Java基础语法

时间:2018-04-20 20:42:18      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:red   了解   栈内存   解析   很多   数学   逻辑运算   led   简写   

 

Java基础语法

0.Java语法的组成

 1.1 关键字        

关键字的定义和特点

定义:被Java语言赋予了特殊含义的单词

特点:关键字中所有字母都为小写

技术分享图片

1.2 标识符

在程序中自定义的一些名称。由26个英文字母大小写,数字:0-9 符号:_  $ 组成

定义合法标识符规则:

1,数字不可以开头。

2,不可以使用关键字。

3,Java中严格区分大小写。

注意:在起名字的时,为了提高阅读性,见名知意。

1.2.1 Java中的名称规范:

包名:多单词组成时所有字母都小写。

xxxyyyzzz

类名接口名:多单词组成时,所有单词的首字母大写。

XxxYyyZzz

变量名和函数名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写。

xxxYyyZzz

常量名:所有字母都大写。多单词时每个单词用下划线连接。

XXX_YYY_ZZZ

1.3 注释

用于注解说明解释程序的文字就是注释。

提高了代码的阅读性。

Java中的注释格式:

 单行注释

    格式: //注释文字
多行注释
    格式: /* 注释文字 */
文档注释 => javadoc命令
    格式:/** 注释文字 */

对于单行和多行注释,被注释的文字,不会被JVM(java虚拟机)解释执行。[查看源文件的属性大小作比较比较直观的了解]

  对于文档注释,是java特有的注释,其中注释内容可以被JDK提供的工具 javadoc 所解析,生成一套以网页文件形式体现的该程序的说明文档。注释是一个程序员必须要具有的良好编程习惯。将自己的思想通过注释先整理出来,在用代码去体现。因为代码仅仅是思想的一种体现形式而已。

1.4 常量和变量

1.4.1 常量表示不能改变的数值。

Java中常量的分类:

  1,整数常量:所有整数

  2,小数常量:所有小数

  3,布尔(boolean)型常量:较为特有,只有两个数值。true false。

  4,字符常量。将一个数字字母或者符号用单引号( ‘ ‘ )标识。

  5,字符串常量。将一个或者多个字符用双引号(" ")标识。

  6,null常量。只有一个数值就是:null.

对于整数:有四种表现形式。

二进制:0,1 ,满2进1.

八进制:0-7 ,满8进1. 用0开头表示。

十进制:0-9 ,满10进1.

十六进制:0-9,A-F,满16进1. 用0x开头表示。

进制的基本转换

十进制 二进制 互转

十进制转成二进制 除以2取余数

二进制转成十进制 乘以2的幂数

十进制 八进制 互转

十进制 十六进制 互转

负数的二进制表现形式

对应的正数二进制取反加1

1.4.2变量的概念:

内存中的一个存储区域,该区域有自己的名称(变量名)和类型(数据类型),该区域的数据可以在同一类型范围内不断变化。

为什么要定义变量:用来不断的存放同一类型的常量,并可以重复使用

使用变量注意:

变量的作用范围(一对{}之间有效)    

初始化值:定义变量的格式:

数据类型 变量名 = 初始化值;

int x=3;

注:格式是固定的,记住格式,以不变应万变。

理解:变量就如同数学中的未知数。

Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存中分配了不同大小的内存空间

技术分享图片

自动类型转换(也叫隐式类型转换) 强制类型转换(也叫显式类型转换)

类型转换的原理,什么时候要用强制类型转换?表达式的数据类型自动提升

所有的byte型、short型和char的值将被提升到int型。

如果一个操作数是long型,计算结果就是long型;

如果一个操作数是float型,计算结果就是float型;

如果一个操作数是double型,计算结果就是double型。

自动类型提升

byte b = 3;

int x = 4;

x = x + b;//b会自动提升为int类型进行运算。    

强制类型转换

byte b = 3;

b = b + 4;//报错

b = (byte)(b+4);//强制类型转换,强制将b+4的结果转换为byte类型,再赋值给b
Example

 1 /*变量
 2     整数默认:int        小数:double 双精度
 3 */
 4 class VarDemo 
 5 {
 6     public static void main(String[] args) 
 7     {
 8         //数据类型  变量名 = 初始化值
 9         byte b=3;
10         short s=4000;
11         int x=12;
12 
13         long l=12345678;
14         long l=541646465464564l;/*数值较大取值末尾+l*/
15         
16         float f= 2.3;/*报错:单精度*/
17         float f=2.3f/*强制转换f*/
18         double d=2.5;
19         
20         char ch=‘C‘;
21         boolean b1=true;
22         b1=false;
23         System.out.println("Hello World");
24     }
25 }
26 //------------------------------------------------------------------------------------------//
27 /*类型提升&强制转换*/
28 class VarDemo2
29 {
30     public static void main(String[] args) 
31     {
32         /*
33         int x=2; 
34         byte b=1;
35         x=x+b;//占用较小的自动提升为int型
36 
37         byte b1=2;
38         b1=(byte)(b1+5);//强制类型转换
39 
40         System.out.println((char)(‘a‘+1));//强制转换为char
41         */
42         byte b=4;
43         byte b1=3;
44         byte b2=7;
45         int s;/*强制转换*/
46         s=b1+b2;
47         System.out.println("s="+s);
48 
49         //Integer.MIX_VALUE int类型最大最小值
50         int max=Integer.MAX_VALUE;
51         int min=Integer.MIN_VALUE;
52         System.out.println("MAX="+max+"\n"+"MIN="+min);
53     }
54 }

 1.5 运算符

1.5.1算术运算符

技术分享图片

Example

 1 /*
 2     运算符:
 3         算术运算符:+ - * / %(取余,模运算) +(连接符)
 4         ++(自增)  --(自减)
 5 
 6 */
 7 class  OperateDemo
 8 {
 9     public static void main(String[] args) {
10         int x=446;
11         x=x/15;
12 
13         System.out.println(3%2);
14         //连接符应用
15         int a=4,b=5;
16         System.out.println("a="+a+",b="+b);
17 
18         int a1=3,b1;
19         //a1++;//a=a+1
20         b1=a1++;
21         System.out.println("a1="+a1+",b1="+b1);
22     }
23 }

 1.5.2赋值运算符

符号:

        = , +=, -=, *=, /=, %=

示例:

        int a,b,c; a=b=c =3;

        int a = 3; a+=5;等同运算a=a+5;

Example 

 1 /*
 2     赋值运算符 = += -= *= /= %=
 3 */
 4 class OperateDemo2 
 5 {
 6     public static void main(String[] args) 
 7     {
 8         int a=4;
 9         a+=2;//a=a+4   a=6
10 
11         short s=3;
12         //s+=4;        s=7
13         s=s+4;
14         System.out.println("s="+s);
15     }
16 }

1.5.3比较运算符

技术分享图片

Example

 1 //比较运算符
 2 class OperateDemo3
 3 {
 4     public static void main(String[] args) 
 5     {
 6         /*
 7         比较运算符,运算结果:TRUE或FALSE
 8         */
 9 //        System.out.println(5>8);//false
10 //        System.out.println(3==3);//false
11 
12 /*逻辑运算符
13     逻辑运算符作用:用于连接两个Boolean类型的表达式
14     &:与    |:或    ^:异或    !:非
15 
16     &:运算特点:true & true   =>true;
17                 true & false  =>false;
18                 false & true  =>false;
19                 false & false =>false;
20     &:运算规律:
21         两边表达式同时为T则为T,一边表达式为F则为F;
22 */
23     int x=5;
24     System.out.println(x>2&x<=5);//true
25 
26     /*    |:运算特点:true | true   =>true;
27                      true | false  =>true;
28                      false | true  =>true;
29                      false | false =>false;
30         |:运算规律:
31         两边表达式同时为F则为F,一边表达式为T则为T;
32     */            
33         int i=3;
34         System.out.println(i>2 | i>6);//true
35     
36     /*    ^:运算特点: true ^ true   =>false;
37                      true ^ false  =>true;
38                      false ^ true  =>true;
39                      false ^ false =>false;
40         ^:运算规律:
41             两边表达式一样则为F,不同则为T;
42     */
43 //------------------------------------------------------//
44 
45     /*    !:运算特点:!true   =>false;
46                      !false  =>true;
47                      
48     */
49 //------------------------------------------------------//
50     
51     /*    &&:短路与 &:与区别 
52         &:无论左边的运算结果是什么,右边参与运算;
53         &&:当左边为false,右边不参与运算;
54 
55         ||:短路或 |:或区别
56         |:无论左边运算结果是什么,右边参与运算;
57         ||:当左边为true时,右边不参与运算;
58     
59     */
60 //------------------------------------------------------//
61     
62     }
63 }

 1.5.5逻辑运算符

技术分享图片

逻辑运算符用于连接布尔型表达式,在Java中不可以写成3<x<6,应该写成x>3 & x<6 。

"&"和"&&"的区别:

单&时,左边无论真假,右边都进行运算;

双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。

"|"和"||"的区别同理,双或时,左边为真,右边不参与运算。

异或( ^ )与或( | )的不同之处是:当左右都为true时,结果为false。

1.5.5位运算符

技术分享图片

技术分享图片

Example

 1 // 位运算符
 2 class OperateDemo4 
 3 {
 4     public static void main(String[] args) 
 5     {
 6 //        System.out.println(6&3);
 7 //        System.out.println(6|3);
 8 //        System.out.println(6^3^3);//一个数异或同一个数两次,结果还是这个数
 9 //        System.out.println(~6);//取反+1 =>-7
10 
11         System.out.println(3<<2);//3左移2位 3*(2^2)=12
12         System.out.println(6>>2);//6右移1位 6/(2^2)=1
13     }
14 }

 

技术分享图片


技术分享图片
1.5.6三元运算符

格式

(条件表达式)?表达式1:表达式2;

如果条件为true,运算后的结果是表达式1;

如果条件为false,运算后的结果是表达式2;

示例:

获取两个数中大数。

int x=3,y=4,max;

max= (x>y)?x:y;//max变量存储的就是两个数的大数。

Example

 1 class  OperateDemo5
 2 {
 3     public static void main(String[] args) 
 4     {
 5         
 6         //求最大值(三元运算符)
 7         int x=3,y=9;
 8         int max=x>y?x:y;
 9         System.out.println("max="+max);
10 
11         //获取三个整数的最大值
12         int a=28,b=14,c=36;
13         int temp=a>b?a:b;//比较a,b数值,取出max存放temp;
14         int max2=temp>c?temp:c;//temp跟第三个数比较取出max
15         System.out.println("max2="+max2);
16     }
17 }
18 /*
19     三元运算符:(条件表达式?表达式1:表达式2)
20     1、条件表达式为T,返回表达式1;
21     2、条件表达式为F,返回表达式2;
22 */

 三元运算符测试Test:

 1 class OperateTest 
 2 {
 3     public static void main(String[] args) 
 4     {
 5         //最有效率的方法实现2*8=16?
 6         System.out.println(2<<3);//2*(2^3)=>16
 7 
 8         //对两个整数变量的值进行互换(不需要第三方变量)
 9         int a=3,b=5;
10         System.out.println("a="+a+",b="+b);
11         /*
12         int c;
13         c=a;
14         a=b;
15         b=c;
16         */
17 
18         //数值过大超过int取值范围,出现强制转换,数据发生变化
19         /*
20         a=a+b;//a=3+5;a=8
21         b=a-b;//3+5-5=3;b=3
22         a=a-b;//3+5-3=5;a=5
23         */
24 
25         //一个数异或同一个数两次,结果还是这个数(阅读性差)
26         a=a^b;//a=3^5;
27         b=a^b;//(3^5)^5;b=3;
28         a=a^b;//a=(3^5)^3;a=5
29         System.out.println("a="+a+",b="+b);
30     }
31 }

1.6 语句(程序的流程控制)

1.6.1 判断结构

技术分享图片

if语句特点:

    a,每一种格式都是单条语句。

    b,第二种格式与三元运算符的区别:三元运算符运算完要有值出现。好处是:可以写在其他表达式中。

    c,条件表达式无论写成什么样子,只看最终的结构是否是true 或者 false;

Example

 1 //判断结构
 2 class IfDemo 
 3 {
 4     public static void main(String[] args) 
 5     {
 6     
 7         int x=5;
 8         if(x>9)
 9         System.out.println("yes");
10         System.out.println("no");
11     }
12 }
13 /*
14         if语句第一种格式:
15         1、if(条件表达式)
16         {
17             执行语句;
18         }
19         if语句为单条语句时,if控制的大括号可省略;
20 */
 1 class IfDemo2 
 2 {
 3     public static void main(String[] args) 
 4     {
 5         int x=12;
 6         if(x>1){
 7             System.out.println("yes");
 8         }
 9         else{
10             System.out.println("no");
11         }
12 ///////////////////////////////////////////////////
13 
14         int a=3,b;
15         /*if(a>1){
16             b=222;
17         }
18         else{
19             b=333;
20         }
21         */
22         b=a>1?222:333;//三元运算符是if...else的简写格式;(简化的局限性)
23             System.out.println("b="+b);
24     }
25 }
26 /*
27         if语句第二种格式:
28         1、if(条件表达式)
29         {
30             执行语句;
31         }
32         else
33         {
34             执行语句;
35         }
36 
37         简写格式用法?
38             当if else运算后有具体的结果,可简化三元运算符
39 */
 1 class IfDemo3 
 2 {
 3     public static void main(String[] args) 
 4     {
 5         int x=3;
 6         if (x>1)
 7             System.out.println("a");
 8         else if(x>2)
 9             System.out.println("b");
10         else if(x>3)
11             System.out.println("c");
12         else
13             System.out.println("d");
14 
15 //        System.out.println("Hello World!");
16 
17         int y=3;
18         if (y>1)
19             System.out.println("a1");
20         if(y>2)
21             System.out.println("b1");
22         if(y>3)
23             System.out.println("c1");
24         else
25             System.out.println("d1");
26 
27     }
28 }
29 /*
30     if(条件表达式){
31         执行语句;
32     }
33     else if(条件表达式){
34         执行语句;
35     }
36     ......
37     else{
38         执行语句;
39     }
40 */

小测试:

 1 //根据用户指定的具体数据,判断对应的日期
 2 class IfTest 
 3 {
 4     public static void main(String[] args) 
 5     {
 6         int week=6;
 7         if (week==1)
 8         {
 9             System.out.println("星期一");
10         }
11         else if (week==2)
12         {
13             System.out.println("星期二");
14         }
15         else if (week==3)
16         {
17             System.out.println("星期三");
18         }
19         else if (week==4)
20         {
21             System.out.println("星期四");
22         }
23         else if (week==5)
24         {
25             System.out.println("星期五");
26         }
27         else
28         {
29             System.out.println("周末");
30         }
31     }
32 }
 1 /*
 2     春季:3 4 5
 3     夏季:6 7 8
 4     秋季:9 10 11 
 5     冬季:12 1 2
 6 */
 7 
 8 class IfTest2 
 9 {
10     public static void main(String[] args) 
11     {
12         int month=19;
13         if (month<1 || month>12)//短路与运算 一边为T则为T
14         {
15             System.out.println(month+"数字没有对应的月份");
16         }
17         else if (month>=3 && month<=5)
18         {
19             System.out.println(month+"月是春季【3 4 5】");
20         }
21         else if (month>=6 && month<=8)
22         {
23             System.out.println(month+"月是夏季【6 7 8】");
24         }
25         else if (month>=9 && month<=11)
26         {
27             System.out.println(month+"月是秋季【9 10 11】");
28         }
29         else
30         {
31             System.out.println(month+"月是冬季【12 1 2】");
32         }
33     }
34 }

1.6.2 选择结构

技术分享图片

 

switch语句特点:

  a,switch语句选择的类型只有四种:byte、short、int、char。

    b,case之间与default没有顺序。先执行第一个case,没有匹配的case执行default。

    c,结束switch语句的两种情况:遇到break,执行到switch语句结束。

    d,如果匹配的case或者default没有对应的break,那么程序会继续向下执行,运行可以执行的语句,直到遇到break或者switch结尾结束。

Example

 1 class SwitchDemo 
 2 {
 3     public static void main(String[] args) 
 4     {
 5         int x=3;
 6         switch (x)//byte,short,int,char
 7         {
 8         case 4:
 9             System.out.println("a");
10             break;
11         case 3:
12             System.out.println("b");
13             break;
14         default:
15             System.out.println("d");
16         }
17 /////////////////////////////////////////////
18         //switch char类型演示
19         int a=3,b=9;
20         char opr=‘+‘;
21         switch (opr)
22         {
23         case ‘+‘:
24             System.out.println(a+b);
25             break;
26         case ‘-‘:
27             System.out.println(a-b);
28             break;
29         case ‘*‘:
30             System.out.println(+a*b);
31             break;
32         case ‘/‘:
33             System.out.println(a/b);
34             break;
35         default:
36             System.out.println("此功能为开发!!!");
37         }
38     }
39 }
40 /*
41     switch(表达式)
42     {
43         case 取值1:
44             执行语句;
45             break;
46         case 取值2:
47             执行语句;
48             break;
49         ......
50         default:
51             执行语句;
52             break;
53     }
54 */

 小测试:

 1 class  SwitchTest
 2 {
 3     public static void main(String[] args) 
 4     {
 5         //用户输入数据对应的星期
 6         int week=1;
 7         switch (week)
 8         {
 9             case 1:
10                 System.out.println("星期一");
11                 break;
12             case 2:
13                 System.out.println("星期二");
14                 break;
15                 //以此类推
16         }
17 
18         //////////////////////////////////
19 
20         int month=8;
21         switch (month)
22         {
23             case 3:
24             case 4:
25             case 5:
26                 System.out.println(month+"月是春季");
27                 break;
28             case 6:
29             case 7:
30             case 8:
31                 System.out.println(month+"月是夏季");
32                 break;
33             case 9:
34             case 10:
35             case 11:
36                 System.out.println(month+"月是秋季");
37                 break;
38             case 12:
39             case 1:
40             case 2:
41                 System.out.println(month+"月是冬季");
42                 break;
43             default:
44                 System.out.println(month+"月无对应的季节!!!");
45         }
46     }
47 }

if语句和switch区别:

 1 class IfAndSwitch 
 2 {
 3     public static void main(String[] args) 
 4     {
 5         System.out.println("Hello World!");
 6     }
 7 }
 8 /*
 9     if    switch的应用:
10 
11 if:
12     1、对具体的值进行判断;
13     2、对区间判断;
14     3、对运算结果是boolean类型的表达式进行判断;
15 switch:
16     1、对具体值进行判断;
17     2、值的个数通常固定的;
18     3、对于几个固定值得判断,使用switch语句,switch将具体的值加载内存,效率相对高;
19 
20 */

 1.6.3 循环结构

技术分享图片

格式:

for(初始化表达式;循环条件表达式;循环后的操作表达式)

{

    执行语句;(循环体)

}

注:

     a,for里面的连个表达式运行的顺序,初始化表达式只读一次,判断循环条件,为真就执行循环体,然后再执行循环后的操作表达式,接着继续判断循环条件,重复找个过程,直到条件不满足为止。

     b,while与for可以互换,区别在于for为了循环而定义的变量在for循环结束就是在内存中释放。而while循环使用的变量在循环结束后还可以继续使用。

     c,最简单无限循环格式:while(true) , for(;;),无限循环存在的原因是并不知道循环多少次,而是根据某些条件,来控制循环。

 

技术分享图片



 

 

 

 




Example

 1 class WhileDemo 
 2 {
 3     public static void main(String[] args) 
 4     {
 5         int x=1;
 6         while(x<=3)
 7         {
 8             System.out.println("x="+x);
 9             x++;
10         }
11     }
12 }
13 /*
14     while(条件表达式)
15     {
16         执行语句;
17     }
18 */
 1 class WhileTest 
 2 {
 3     public static void main(String[] args) 
 4     {
 5         //获取1-100之和
 6         int i=1,s=0;
 7         while(i<=100)
 8         {
 9             s=s+i;
10             i++;
11         }
12         System.out.println("sum="+s);
13 
14         //能被2整除的数之和
15         int x=1,sum=0;
16         while (x<=10)
17         {
18             if(x%2==0)
19                 sum=sum+x;
20                 x++;
21         }
22         System.out.println("sum="+sum);
23     }
24 }
 1 class WhileTest2
 2 {
 3     public static void main(String[] args) 
 4     {
 5         int i=1;
 6         int count=0;//定义累加个数
 7         while(i<=100)
 8         {
 9             //判断i%6是否等于0,T,count++,i++
10             if(i%6==0)
11                 count++;//累加器
12                 i++;
13         }
14         System.out.println("count="+count);
15     }
16 }
17 //1~100之间6的倍数出现次数
 1 class DoWhileDemo  
 2 {
 3     public static void main(String[] args) 
 4     {
 5         int x=1;
 6         do
 7         {
 8             System.out.println("x="+x);
 9             x++;
10         }while(x<1);
11 
12         int y=1;
13         while(y<1)
14         {
15             System.out.println("y="+y);
16             y++;
17         }
18     }
19 }
20 /*
21     do
22     {
23         执行语句;
24     }while(条件表达式);
25 */
26 
27 //do while特点:无论条件是否满足,循环体至少执行一次;
 1 class ForDemo
 2 {
 3     public static void main(String[] args) 
 4     {
 5         int s=0;
 6         for (int i=0;i<=100;i++ )
 7         {
 8             s=s+i;
 9         }
10         System.out.println("s="+s);
11 
12         //for 循环图解
13         int x=1;
14         for (System.out.println("a");x<3;System.out.println("c"))
15         {
16             System.out.println("d");
17             x++;
18         }
19         //a d c d c
20     }
21 }
22 /*
23     for(初始化表达式;循环条件;循环后的表达式)
24     {
25         执行语句;(循环体)
26     }
27 */
 1 class ForTest 
 2 {
 3     public static void main(String[] args) 
 4     {
 5         //for 完成累加
 6         int s=0;
 7         for (int i=1;i<=100;i++)
 8         {
 9             s=s+i;
10         }
11         System.out.println("s="+s);
12 
13 /*
14     for和while特点:
15     1、for和while可以互换;
16     2、格式上的不同,在使用上有点区别
17         若需要通过变量来对循环进行控制,改变量作为循环增量存在时,区别就体现了。
18     
19 */
20         int x=1;
21         while (x<=5)
22         {
23             System.out.println("x="+x);
24             x++;
25         }
26         System.out.println("x==>"+x);//while循环体外
27 
28         //----------------------------------------//
29         for (int y=1;y<=5;y++)
30         {
31             System.out.println("y="+y);
32         }
33 //        System.out.println("y==>"+y);//for循环体外,y离开作用域,报错
34     }
35 }
36 //无限循环最简单的形式
37 //    while (){}
38 //    for (; ; ){}
39 
40 //什么时候使用循环结构?
41     /*    
42         1、当对某些代码执行很多次,使用循环结构;
43         2、当对一个条件进行一次判断,if语句
44         3、当对一个条件进行多次判断,while语句
45 
46     注:1、在使用循环时,明确哪些语句需要参与循环,哪些不需要;
47         2、循环通常情况下,需要定义条件,需要控制次数;
48         
49 
50     */

 For循环的嵌套:
Example

 1 class ForForDemo 
 2 {
 3     public static void main(String[] args) 
 4     {
 5         /*for (int x=0;x<3;x++ )
 6         {
 7             for (int y=0;y<4;y++ )
 8             {
 9                 System.out.println("ok");
10             }
11         }*/
12         
13         /*
14             *****
15             *****
16             *****
17             *****
18         */
19         for (int i=0;i<4;i++)//外循环控制行数
20         {
21             for (int j=0;j<5;j++)//内循环控制列数(每一行的个数)
22             {
23                 System.out.print("*");
24             }
25             System.out.println("");
26         }
27     }
28 }
 1 class ForForTest2 
 2 {
 3     public static void main(String[] args) 
 4     {
 5         //99乘法表
 6         for (int i=1;i<=9;i++)
 7         {
 8             for (int j=1;j<=i;j++)
 9             {
10                 System.out.print(i+"*"+j+"="+i*j+"\t");//  /t转义字符  制表符
11             }
12             System.out.println("");
13         }
14     }
15 }
16 /*
17 \n:回车
18 \t:制表符
19 \b:退格
20 \r:按下回车键
21 
22 windows中回车符由两个符号组成 \r\n
23 linux中回车符:\n
24 */
 1 class ForForTest3 
 2 {
 3     public static void main(String[] args) 
 4     {
 5         /*
 6             * * * * *
 7             -* * * * 
 8             --* * *
 9             ---* *
10             ----*
11         */
12         for (int x=1;x<=5;x++)
13         {
14             for (int y=1;y<=x;y++)
15             {
16                 System.out.print(" ");
17             }
18             for (int z=x;z<=5;z++)
19             {
20                 System.out.print("* ");
21             }
22             System.out.println("");
23         }
24     }
25 }

1.6.1其他控制语句

break(跳出), continue(继续)

break语句:应用范围:选择结构和循环结构。

continue语句:应用于循环结构。

注:
  a,这两个语句离开应用范围,存在是没有意义的。

  b,这个两个语句单独存在下面都不可以有语句,因为执行不到。

  c,continue语句是结束本次循环继续下次循环。

  d,标号的出现,可以让这两个语句作用于指定的范围。
Example

 1 class BreakContinueDemo
 2 {
 3     public static void main(String[] args) 
 4     {
 5         /*
 6         break:跳出;
 7         break作用范围:switch 或者循环语句;
 8         当break语句单独存在时,下面不要定义其他语句,因为执行不到;
 9 
10         for (int x=0;x<3;x++)
11         {
12             break;
13             System.out.println("x="+x);
14         }
15         */
16 
17         out:for (int x=0;x<3;x++)
18         {
19             inner:for (int y=0;y<4;y++)
20             {
21                 System.out.println("x="+x);
22                 break out;//循环标识,跳出指定的循环;
23             }
24         }
25 
26 
27     System.out.println("====================");
28 
29     /*
30     continue:继续;
31     作用范围:循环结构;
32     continue:结束本次循环,执行下次循环;
33     当continue语句单独存在时,下面不要定义其他语句,因为执行不到;
34     */
35     for (int i=0;i<11;i++)
36     {    
37         if (i%2==0)
38         continue;
39         System.out.println("i="+i);
40         }
41     }
42 }

 1.7 函数

什么是函数?
  />函数定义在类中的具有特定功能的一段独立的小程序。
  />函数也称为方法。
函数的格式:
  修饰符 返回函数类型 函数名(参数类型 形式参数1,参数类型 形式参数2, ...)
  {
  执行语句;
  return 返回值;
  }

>>返回值类型:函数运行后的结果数据类型;
>>参数类型:形式参数的数据类型;
>>实际参数:传递给形式参数的具体数值;
>>return :用于结束函数
>>返回值:函数运算后的结果,该结果返回给调用者;

Example

 1 //方法的简单应用
 2 class FunctionDemo 
 3 {
 4     public static void main(String[] args) 
 5     {    //调用函数add
 6         int temp=add(3,4);
 7     }
 8     //定义函数add
 9     static int add(int a,int b)
10     {
11         return a+b;
12     }
13 }

函数特点:
  a.将功能代码进行封装
  b.提高了代码的复用性
细节 a,对于函数没有具体的返回值,返回值类型用关键字:void表示;return语句也可省略不写。
    技术分享图片

    b,函数中只能调用函数,不可以在函数内部定义函数。

 1 //格式错误:方法(函数)内部不能定义其他方法(函数)
 2         class err
 3         {
 4             public static void main(String[]args)
 5             {
 6                 static void sop()
 7                 {
 8                     System.out.println("Hello World!");
 9                 }
10                 sop();
11             }
12         }

    c,定义函数时,函数的结果应该返回给调用者,交由调用者处理。

函数的重载:

     同一个类中,允许存在一个以上的同名函数,他们的参数个数或者参数类型不同即可。

满足条件:

    1,方法名相同

    2,参数个数或参数类型不同

重载的特点:重载与返回类型无关,跟参数列表

重载示例:

//返回两个整数的和

  int add(int x,int y){return x+y;}

//返回三个整数的和

  int add(int x,int y,int z){return x+y+z;}

//返回两个小数的和

  double add(double x,double y){return x+y;}
Example

 1 //函数的重载
 2 class FunctionDemo2 
 3 {
 4     public static void main(String[] args) 
 5     {
 6         int temp=add(3,2);
 7         double temp2=add(3.6,3.1);
 8         int temp3=add(3,6,9);
 9         System.out.println("temp="+temp);
10         System.out.println("temp2="+temp2);
11         System.out.println("temp3="+temp3);
12         System.out.println("/----------------------- sop乘法表 -----------------------/");
13         sop99();
14         System.out.println("/----------------------- sop乘法表指定num  -----------------------/");
15         sop99(6);
16     }
17     //两个整数的加法运算
18     public static int add(int a,int b)
19     {
20         return a+b;
21     }
22     //两个小数之和
23     public static double add(double a,double b)
24     {
25         return a+b;
26     }
27     //三个整数之和
28     public static int add(int a,int b,int c)
29     {
30 //        return a+b+c;
31         return add(a,b)+c;//重载a+b函数功能省略,return a+b+c;语句,提高代码复用性
32     }
33 
34     //定义两个功能:打印标准乘法表;打印指定的乘法表
35     //标准乘法表
36     public static void sop99()
37     {/*
38         for (int i=1;i<=9;i++)
39         {
40             for (int j=1;j<=i;j++)
41             {
42                 System.out.print(j+"*"+i+"="+j*i+"\t");
43             }
44                 System.out.println("");
45         }*/
46         
47         sop99(9);//重载下面的代码,提高复用性
48     }
49 
50     //打印指定乘法表:传入相关的num值
51     public static void sop99(int num)
52     {
53         for (int i=1;i<=num;i++)
54         {
55             for (int j=1;j<=i;j++)
56             {
57                 System.out.print(j+"*"+i+"="+j*i+"\t");
58             }
59                 System.out.println("");
60         }
61     }
62 }
63 /*
64     函数的重载
65     1,同一个类
66     2,同名
67     3,参数个数不同,参数类型不同
68     4,函数的重载和返回值类型无关
69 */

1.8 数组

1.8.1 数组的定义

       概念:同一种类型数据集合。可理解为容器;数组都是从0开始编号

 数组格式1:ArrayDemo

 1 //数组定义格式1
 2 class  ArrayDemo
 3 {
 4     public static void main(String[] args) 
 5     {
 6         //元素类型[] 数组名 = new 元素类型 [元素个数或数组长度];
 7         int[] arr=new int[5];//定义int类型数组,长度为5;[0-4]
 8         arr[0]=12;//为数组第一个角标赋值12
 9         System.out.println("arr[0]="+arr[0]);//打印0角标的数组元素
10     }
11 }

 数组格式2:ArrayDemo3

 1 //数组格式2
 2 class ArrayDemo3 
 3 {
 4     public static void main(String[] args) 
 5     {
 6         //格式1    />需要容器,不明确具体数据
 7         //元素类型[] 数组名 = new 元素类型 [元素个数或数组长度];
 8         int []arr=new int [3];
 9 
10         //格式2 />需要容器,存储已知的具体数据
11         //元素类型[] 数组名= new 元素类型[]{元素1,元素2, ...};
12         int []arr =new int [] {12,34,5,4,6};//常规初始化
13         int []arr={12,34,5,35,6};//静态初始化
14     }
15 }

1.8.2数组的内存分配及特点
          数组的内存结构

技术分享图片

内存的划分:

    1/>寄存器

    2/>本地方法区

    3/>方法区

    4/>栈内存

          存储的都是局部变量(定义在方法中变量);且变量所属的作用域结束,变量自动释放;

              for(int x=0;x<=3;x++){}

              System.out.println("x="+x);//执行不到,x值被释放

    5/>堆内存

            存储是数组和对象(数组就是对象,new建立的都在堆内存中);

            特点:

                   1,每一个实体都有首地址值;

                   2,堆内存中的每一个变量都有默认初始化值,类型不同而不同;

                          整数/>0;小数/>0.0或0.0f;boolean/>false;char/>‘\u0000‘

                   3,垃圾回收机制;

1.8.3数组操作常见问题

 1 //数组常见错误问题
 2 class ArrayDemo2 
 3 {
 4     public static void main(String[] args) 
 5     {
 6         int []arr=new int[3];
 7         System.out.println(arr[3]);//ArrayIndexOutOfBoundsException
 8         //当访问到数组中不存在的角标时:角标越界
 9 
10         arr=null;
11         System.out.println(arr[0]);//NullPointerException
12         //当引用型变量没有任何实体指向时,继续指向实体,发生空指针异常
13 
14         System.out.println(arr);//[I@3219ab8d:哈希值
15     }
16 }

1.8.4 数组操作[遍历、求最值、排序、查找]
数组的遍历:

 1 //数组遍历
 2 class ArrayDemo3 
 3 {
 4     public static void main(String[] args) 
 5     {
 6     //对数组操作最基本的动作:存和取;核心思想:对角标的操作
 7     //数组的遍历
 8     int []arr={12,3,15,57,548,123};
 9     System.out.println("length:"+arr.length);//数组长度
10     for (int x=0;x<=arr.length-1;x++)
11     System.out.println("arr ["+x+"] ="+arr[x]);
12     
13     System.out.println("");
14     
15     System.out.println("==/反向遍历/==");
16     for (int x=arr.length-1;x>=0;x--)
17     System.out.println("arr ["+x+"] ="+arr[x]);
18     }
19 }

数组的最值:

 1 //数组的最值
 2 class  ArrayDemo4
 3 {
 4     public static void main(String[] args) 
 5     {
 6         int []arr={-123,-1,-53,-62,-23,-32};
 7         int max=getMax(arr);//调用最值函数
 8         System.out.println("max="+max);
 9 
10     }
11     //获取最值函数(元素比较)
12     public static int getMax(int []arr)
13     {
14         //定义变量记录较大值
15 //        int maxElement=0; //直接用max初始化0;全是负数求最值则取不到max
16         int maxElement=arr[0];
17         for (int x=1; x<arr.length;x++ )
18         {
19             if(arr[x]>maxElement)
20                 maxElement=arr[x];
21         }
22             return maxElement;
23     }
24 
25     //角标比较
26     public static int getMax_2(int []arr)
27     {
28         int maxIndex=0;
29         for (int x=1; x<arr.length;x++ )
30         {
31             if(arr[x]>arr[maxIndex])
32                 maxIndex=x;
33         }
34             return arr[maxIndex];
35     }
36 }
37 /*
38     1,定义变量记录每次比较后较大的值
39     2,数组进行遍历取出,和变量中记录的元素进行比较,若变量的元素大于变量中记录的元素,就用该变量记住该值;
40     3,遍历结果,该变量记录就是max
41 */

 数组的排序[选择排序]

 1 //选择排序
 2 class ArrayDemo5 
 3 {
 4     //遍历数组功能sopArray
 5     public static void sopArray(int []arr)
 6     {
 7         System.out.print("[");
 8         for (int x=0;x<arr.length ;x++)
 9         {
10             //判断最后是否为最后一个数组,T=>" 、"
11             if (x!=arr.length-1)
12             {
13                 System.out.print(arr[x]+"、");
14             }else
15             {
16                 System.out.println(arr[x]+"]");
17             }
18         }
19     }
20 
21     public static void main(String[] args) 
22     {
23         int []arr={34,19,11,109,3,56};
24         //调用功能
25         sopArray(arr);
26         selectSort(arr);
27         sopArray(arr);
28         
29     }
30 
31     //selectSort功能
32     public static void selectSort(int[] arr)
33     {
34         for (int x=0;x<arr.length-1;x++)
35         {
36             for (int y=x+1;y<arr.length;y++)
37             {
38                 if (arr[x]>arr[y])
39                 {
40                     //位置置换
41                     int temp=arr[x];
42                     arr[x]=arr[y];
43                     arr[y]=temp;
44                 }
45             }
46         }
47     }
48 }

  数组的排序[冒泡排序]

 1 class  ArrayDemo6
 2 {
 3     //遍历数组
 4     public static void sop(int [] arr)
 5     {
 6         for (int x=0;x<arr.length;x++ )
 7         {
 8             System.out.print(arr[x]+" ");
 9         }
10         System.out.println("");
11     }
12 
13     public static void main(String[] args) 
14     {
15         int arr[]={34,19,11,109,3,56};
16         sop(arr);
17         bubbleSort(arr);
18         sop(arr);
19 
20     }
21     //bubbleSort
22     public static void bubbleSort(int [] arr)
23     {
24         for (int x=0;x<arr.length-1;x++)
25         {
26             for (int y=0;y<arr.length-1-x;y++ )
27             {
28                 if (arr[y]>arr[y+1])
29                 {
30                     int temp=arr[y];
31                     arr[y]=arr[y+1];
32                     arr[y+1]=temp;
33                 }
34             }
35         }
36     }
37 }

数组的排序[Arrays.sort()]

 1 //导入Java包
 2 import java.util.*;
 3 class  Temp
 4 {
 5     //遍历数组
 6     public static void sop(int [] arr)
 7     {
 8         for (int x=0;x<arr.length;x++ )
 9         {
10             System.out.print(arr[x]+" ");
11         }
12         System.out.println("");
13     }
14 
15     public static void main(String[] args) 
16     {
17         int arr[]={34,19,11,109,3,56};
18         sop(arr);
19         //导入Java自身的排序函数
20         Arrays.sort(arr);
21         sop(arr);
22     }
23 }

数组[置换代码抽取封装]

 1 //[排序位置  置换代码抽取]
 2 class  ArrayDemo7
 3 {
 4     //遍历数组
 5     public static void sop(int [] arr)
 6     {
 7         for (int x=0;x<arr.length;x++ )
 8         {
 9             System.out.print(arr[x]+" ");
10         }
11         System.out.println("");
12     }
13 
14     public static void main(String[] args) 
15     {
16         int arr[]={34,19,11,109,3,56};
17         System.out.print("排序前:");
18         sop(arr);
19         bubbleSort(arr);
20 //        selectSort(arr);
21         System.out.print("排序后:");
22         sop(arr);
23 
24     }
25     //定义置换功能 [排序位置  置换代码抽取]
26     /*
27                     int temp=arr[y];
28                     arr[y]=arr[y+1];
29                     arr[y+1]=temp;
30                     
31                     //位置置换
32                     int temp=arr[x];
33                     arr[x]=arr[y];
34                     arr[y]=temp;
35     */
36 
37     //抽取置换代码  定义置换功能swap
38     public static void swap(int[] arr,int a,int b)
39     {
40         int temp=arr[a];
41         arr[a]=arr[b];
42         arr[b]=temp;
43     }
44     
45     //bubbleSort
46     public static void bubbleSort(int [] arr)
47     {
48         for (int x=0;x<arr.length-1;x++)
49         {
50             for (int y=0;y<arr.length-1-x;y++ )
51             {
52                 if (arr[y]>arr[y+1])
53                 {
54                     //传入相关的变量
55                     swap(arr,y,y+1);
56                     /*
57                     int temp=arr[y];
58                     arr[y]=arr[y+1];
59                     arr[y+1]=temp;
60                     */
61                 }
62             }
63         }
64     }
65 
66 
67 //selectSort功能
68     public static void selectSort(int[] arr)
69     {
70         for (int x=0;x<arr.length-1;x++)
71         {
72             for (int y=x+1;y<arr.length;y++)
73             {
74                 if (arr[x]>arr[y])
75                 {
76                     swap(arr,x,y);
77                     /*
78                     //位置置换
79                     int temp=arr[x];
80                     arr[x]=arr[y];
81                     arr[y]=temp;
82                     */
83                 }
84             }
85         }
86     }
87 }

数组简单查找

 1 //基本数组的查找
 2 class ArrayDemo8 
 3 {
 4     public static void main(String[] args) 
 5     {
 6         //*[arr中有两个相同的元素,按照第一个出现的位置元素找]
 7         int arr[]={12,2,45,25,62,5,2,6};
 8         int index=getIndex(arr,2);
 9         System.out.println("incex="+index);
10     }
11 
12 //getIndex找角标
13     public static int getIndex(int [] arr,int key)
14     {
15         for (int x=0;x<arr.length;x++ )
16         {
17             if (arr[x]==key)
18             {
19                 return x;
20             }
21         }
22         return -1;
23     }
24 }

二维数组

 1 //二维数组定义格式
 2 class  Array2Demo
 3 {
 4     public static void main(String[] args) 
 5     {
 6 //        int [][]arr=new int[3][2];
 7 //        System.out.println(arr);//直接打印二维数组(哈希值)
 8 //        System.out.println(arr[0]);//打印二维数组中角标0的一维数组(哈希值)
 9 //        System.out.println(arr[0][0]);//打印二维数组中角标0的一维数组中角标为0的元素
10 //        System.out.println("length:"+arr.length);//二维数组的长度就是一维数组的个数
11         
12         //二维数组的第二种格式
13         int [][] arr={{3,1,2},{6,3,2,1},{2,4}};
14         //二维数组的遍历
15         int sum=0;
16         for (int x=0;x<arr.length;x++)
17         {
18             for (int y=0;y<arr[x].length;y++)
19             {
20                 sum+=arr[x][y];
21 //                System.out.print(arr[x][y]+" ");
22             }
23         }
24         System.out.println("sum="+sum);
25     }
26 }

 注:学习之用;共享与道友。

Java基础语法

标签:red   了解   栈内存   解析   很多   数学   逻辑运算   led   简写   

原文地址:https://www.cnblogs.com/cao-yin/p/8710412.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!