javaSE知识点--02(01Java基础初探,运算符、流程语句)

Java语法规则:

         任何一种语言都有自己的语法规则,Java也一样,既然是规则,那么知道其如何使用就可以了。

1)代码都定义在类中,类由class来定义,区分 public class 和 class;

2)代码严格区分大小写,如main 和 Main  是不一样的;

3)Java中的标识符与关键字;

4)注释;

 

main方法的作用:

1)程序的入口

2)保证程序的独立运行

3)被JVM调用

 

Java语言分隔符:

 分号 ;

语句的分割,表示一句话结束,好比咱们使用的句号;

 

花括号 {}

表示一个代码块,是一个整体,花括号要一起使用;

 

方括号 []

定义数组和访问数组元素时使用;

 

圆括号 ()

使用很广泛,具体用到细讲;

 

圆点  .

类/对象 访问它的成员(字段,方法)时使用等。

 

空格 

分割一条语句的不同部分,空格的次数不限制;


Java的关键字预览:

javaSE知识点--02(01Java基础初探,运算符、流程语句)_第1张图片

关键字(都是小写的)是编程语言里事先定义的,有特别用途的单词。(好比古代皇帝的名字,老百姓是不能使用和皇帝一样的名字。)

Java的关键字对java的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等,关键字不能用作变量名、方法名、类名、包名。

goto 和 const不是Java的关键字,但是它们是java的保留字,我们也是不能直接使用的。

注意:关键字,都是小写的,jdk1.2多了strictfp(精准浮点型),关键字 jdk1.4多了assert(断言)关键字,  jdk1.5多了enum(枚举) 关键字


Java中的标识符:

         可简单理解为在Java程序中为了增强阅读性自定义的名称。比如:类名,方法名,变量名等。

Java标识符的命名规则:

                   (1)由字母、数字、下划线、$组成,不能以数字开头

                   注意:此处的字母还可以是中文,日文等;

                   (2)大小写敏感

                   (3)不得使用java中的关键字和保留字

                   (4)别用Java API里面的类名作为自己的类名。


Java数据类型复习:

javaSE知识点--02(01Java基础初探,运算符、流程语句)_第2张图片

Java基本数据类型所占的位数:

javaSE知识点--02(01Java基础初探,运算符、流程语句)_第3张图片

注意:boolean 类型数据只允许取值true 或 false(不可以使用0 或非0的整数来代替true和false,区分于C语言)。


基本数据类型转换之向上转型:

向上转换:将容量小的类型值,赋值给容量大的类型变量,自动转换:

boolean 类型是不可以转换为其他基本数据类型。

整型,字符型,浮点型的数据在混合运算中相互转换,转换时遵循以下原则:

容量小的类型可自动转换为容量大的数据类型;

byte,short,char → int → long → float → double

byte,short,char之间不会相互转换,他们在计算时首先会转换为int类型。



基本数据类型转换之向下转型:

         向下转换:将容量大的类型值,赋值给容量小的类型变量,需要强制转换:

容量大的数据类型转换为容量小的数据类型时,要加上强制转换符,但可能造成精度的降低或溢出,使用时要格外注意。

有很多种类型的数据混合运算时,系统首先自动的将所有数据转换成容器最大的哪一种数据类型,再计算。

浮点型:默认是double

整型:默认是 int


表达式的数据类型自动提升:

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

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

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

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


Java的运算符:

运算符是一种特殊符号,用以表示数据的运算、赋值和比较等共分以下几种:

1)算术运算符

2)赋值运算符

3)比较运算符

4)逻辑运算符

5)移位运算符


Java算术运算符概览:

javaSE知识点--02(01Java基础初探,运算符、流程语句)_第4张图片

C/C++只允许 % 两边的操作数是整型的,而Java既支持整型也支持浮点型.


double ret = 3.14 % 1.1;// 结果是 0.94


 比较下列结果,想想原因:

System.out.println(1.0 / 0);//Infinity
System.out.println(1 / 0);//抛出异常

因为double的精度比int的精度高,表达式自动转换为double数据类型,除数的值为0.0,1.0/0.0 等效应于1除以一个无限接近0的double类型的数据,结果就是无限大;

对于除号“/”,它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分。


字符串连接符:

“+” 除用于算数加法运算外,还可以对字符串进行连接操作:

例如,基本类型数据和String值相连接,就会组成一个新的String值;

                   

booleanb = false;
Strings  = false + "will";// 组成可一个新的String值"falsewill"
String s = (String)false;//false,基本数据类型是不能强制转换成String类型的!
int  sum = 99 + 1;
String s = "cd" +"itcast"; //cditcast

“+”运算符两侧的操作数中只要有一个String类型,一个是基本数据类型时,编译成class文件后,两个操作数就被连接成了一个新的String值:

int age = 80;
Sysytem.out.println("c= " + c);
System.out.println(8+7+"hello");	//结果是:15hello
System.out.println(8+"hello"+7);	//结果是:8hello7
System.out.println("hello"+8+7);	//结果是:hello87

++运算符:

int a = 4;
int b = a ++;
++在后:先运算再递增1,   a = 5,b= 4;
int b = ++ a;
++在前:先递增1,再运算,  a = 5; b= 5;


Java赋值运算符:

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

         inta,b,c;  a = b = c = 3;

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

         思考:

                   shorts = 3;  s = s + 2;

                   与s += 2;有什么不同?

         注意:数据类型的隐式转换


Java比较运算符:

javaSE知识点--02(01Java基础初探,运算符、流程语句)_第5张图片

注1:比较运算符的结果都是boolean型,也就是要么是true,要么是false。

注2:比较运算符“==”不能误写成“=”。


Java逻辑运算符:

javaSE知识点--02(01Java基础初探,运算符、流程语句)_第6张图片

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

“&”和“&&”的区别:单与时,左边无论真假,右边都进行运算;双与时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。

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

“ ^ ”与“|”不同之处是:当左右都为true时,"^"结果为false。


Java表达式:

         表达式,是由数字、运算符、数字分组符号(括号)等以能求得数值的有意义排列的序列;

a + b

3.14 + a

(x + y) * z + 100

boolean b= i < 10 && (i%10 != 0)

         表达式的类型和值:

                   对表达式中操作数进行运算得到的结果是表达式的值。

                   表达式值的数据类型即为表达式的类型。

表达式的运算顺序:

应按照运算符的优先级从高到低的顺序进行;

优先级相同的运算符按照事先约定的结合方向进行;


Java运算优先级(结合性不用记,在使用中用括号就行了!!!):

javaSE知识点--02(01Java基础初探,运算符、流程语句)_第7张图片


三目运算符:

         “三目运算符”,语法格式:

                   x? y : z;

其中x为boolean类型表达式,先计算x的值,若为true,则整个三目运算符的结果是表达式y的值,否则就是z的值。问:y和z的结果类型一样吗,由什么决定?  


Java位运算符:

javaSE知识点--02(01Java基础初探,运算符、流程语句)_第8张图片

位运算符结果表:

javaSE知识点--02(01Java基础初探,运算符、流程语句)_第9张图片

位运算符之按位与(&):

参与运算的两个数,若两个相应的位数都为1,则该位的结果值是1,否则是0;

例如:3 & 5 不等于8,先把 3和5以二进制表示,再进行按位于运算:

javaSE知识点--02(01Java基础初探,运算符、流程语句)_第10张图片


位运算符之按位或(|):

参与运算的两个数相应位中只要有一个1,结果就是1;

例如:3 | 5 不等于8,先把 3和5以二进制表示,再进行按位于运算:

javaSE知识点--02(01Java基础初探,运算符、流程语句)_第11张图片


位运算符之按位异或(^):

         参与运算的两个数相应位相同则结果为0,异号则为1;

javaSE知识点--02(01Java基础初探,运算符、流程语句)_第12张图片


位运算符之左移(<<)和右移(>>):

左移操作“<<”:将运算数的二进制码整体左移指定位数,左移之后的空使用“0”来补充。

右移操作“>>”:将运算数的二进制码整体右移指定位数,右移之后的空使用“符号位”来补充。

若是正数使用“0”补充;

若是负数使用“1”补充;

无符号右移">>>":将运算数的二进制码整体右移指定位数,右移之后的空使用“0”来补充

javaSE知识点--02(01Java基础初探,运算符、流程语句)_第13张图片


Java7新特性:

数值的二进制表示:0B或0b;

数值的底线格式;

简单地说,就是一个数值(整数或浮点数)的表示方式,除了数字、类型符号、正负符号、小数点外,还能加上底线来增加数值的可读性。

当我们表示一个二进制的数值。

int bin1 = 0b000000000000000001100011;//99的二进制,很容易多些或少些一个0或1,为此Java7后开始支持新的书写格式。

int bin2 = 0b00000000_00000000_01100011;//清晰多了

float pi = 3.14_159_26f;

注意:

底线不能加在数值的开头;

例如 _12_34,这样是错误的。

底线不能加上数值的结尾;

例如 12_34_,这样是错误的。

底线不能加在2进位和16进位的进位表示字元之后;

例如 0x_1234,0b_1100,这样是错误的。


程序运行流程:

         顺序结构:

如果代码里没有流程控制,程序是至上而下一行一行执行的,一条语句执行完之后继续执行下一条语句,直到程序的最后。

 

         程序流程控制----分支结构:

                   if的3种格式:

   1.

if(boolean条件){
  //若为true就执行这里
  }


                                    

                                    

 2.

if(boolean条件){                     
//若为true就执行这里
}else{
//为false就执行这里
}和三目运算符相似:

和三目运算符享受

       格式:  boolean表达式 ? 语句1 : 语句2 ;

         若表达式结果是true:   执行语句1

                                     false: 执行语句2

 

  boolean表达式 ? 语句1 : 语句2; 结果类型是啥?

                                                                 由语句1和语句2来决定,一般要求两个语句的值类型是一样的;

                                    

                                    

3.

                              

if(boolean条件){
     //若为true就执行这里
   }elseif(boolean条件){
     //若为true就执行这里
    }
     ....
    else{
      //以上条件都不满足就执行这里
    }

                  

                  

                   条件语句----switch:

                  

                            格式:

                           

                            注意:switch的判断表达式的返回值支持的类型:

                                     byte,short,char,int,引用类型;java5开

                                     始支持enum,java7开始支持String。

 

 switch(表达式)
   {
     case 表达式的值1:
         //操作语句
     break;
                                    
     case 表达式的值2:
        //操作语句
     break;
                                    
     case 表达式的值3:
       //操作语句
     break;
     case 表达式的值4:
       //操作语句
     break;
                                    
     default:
      //以上都不满足
                                              
     break;
                                    
    }

  注:case和default没有先后顺序可言,default放在case前面也是最后找它!

 

 

 

 

         程序流程控制----循环结构:

        

                   1.while

                  

                   格式:

while(boolean条件){
     //条件为true就执行这里
  }


 

 

                   2.do while

                  

                   格式:

do{
   //循环体
   }while(boolean条件);

   dowhile 无论条件是否满足至少会执行一次;

                           

                   3.  for

                  

                   格式:

for(初始化语句A;boolean条件B;循环完后执行语句C){
             //语句D
  }

                            初始化语句只执行一次,

                            执行顺序:  A -> B(判断) -> D ->C  -> B(判断)

                            for循环:适合于事先知道循环的次数;

                            三大循环是可以相互转换的;

                           

                           

for(inti=0; i < 4; i ++){
                                    
   }
   System.out.println(i);//访问不到
   //---------------------------------------------------------------
   inti;
   for(i=0;i < 4; i ++){
                                    
   }
   System.out.println(i);//可以访问
   //---------------------------------------------------------------        
   int j = 0 ;
   while(j< 4){
      j++;
    }
   //---------------------------------------------------------------        


                   嵌套循环:

while(true){
      while(true){
               //
            }
   }

                  

                  

                   控制循环:

                            break;         表示终止当前所在的循环

                            continue;表示跳过当前正在执行的这一次循环,然后继续执行下一次的循环

                            return;   表示终止该循环所在的方法;

                           

 

for(inti = 0; i < 5; i ++){
      if(i== 3){
               break;//0 1 2
              //注意:break,和continue,return语句后面,不能再有语句;
           }
        System.out.println(i);
        }
        System.out.println("Hello");
                           
                           
        for(inti = 0; i < 5; i ++){
             if(i== 3){
                        //break;//0 1 2
                        continue;//仅仅是不打印3
                        //注意:break,和continue语句后面,不能再有语句;
            }
              System.out.println(i);
         }

 

         控制外层循环:

                            使用标签(必须符合标识符的命名规范):

                            放在循环的前面:

                           

 outer:while(true){
                           
                   inner:while(true){
                            break outer;
                       }
                  }

                            


你可能感兴趣的:(javaSE)