zoukankan      html  css  js  c++  java
  • 二、基本语法

    一、关键字和标识符

     二、变量

     1.java中变量按照数据类型来分类:基本数据类型 和 引用数据类型

    >基本数据类型:

    整形:byte(8bit) short int(默认类型) long

    浮点型:float double(默认类型) 

    字符型:char(' ')

    布尔类型:boolean (只能取值true或false,不能取null)

    补充:按照变量在类中的位置不同:成员变量 VS局部变量

    2.进制

    十进制 二进制 八进制 十六进制

    二进制:计算机底层都是用二进制来存储和计算。

    >四种进制转换。

    3.变量运算:

    a.自动类型转换:容量小的数据类型自动转换为容量大的数据类型。

    short s = 12;

    int i = s+2;

    注意:byte short char 之间做运算,结果为int类型

    b.强制类型转换:使用(数据类型)实现强转。

    doubel d =10.5;

    int i=(int)d+2;

    三、运算符

    运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。 算术运算符 赋值运算符 比较运算符(关系运算符) 逻辑运算符 位运算符 三元运算符

    1.算术运算符:

    注意:

    如果对负数取模,可以把模数负号忽略不记,如:5%-2=1。 但被模数是负数则不可忽略。此外,取模运算的结果不一定总是整数。

    对于除号“/”,它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分。 例如:int x=3510;x=x/1000*1000; x的结果是?3000

    “+”除字符串相加功能外,还能把非字符串转换成字符串.例如:

    System.out.println("5+5="+5+5); //打印结果是?5+5=55

    System.out.println("5+5="+(5+5));//打印结果是?5+5=10

    以下二者的区别:

    System.out.println('*' + ' ' +'*');93

    System.out.println("*" + ' ' +'*');*     *

    2.赋值运算符:

    符号:= 当“=”两侧数据类型不一致时,可以使用自动类型转换或使用强制类型转换原则进行处理。

    支持连续赋值。 扩展赋值运算符: +=, -=, *=, /=, %=

    思考1: short s = 3;

    s=s+2; ①

    s+=2; ②

    ①和②有什么区别?

    a+=b  --> a=(a.Type)a+b;//返回的是a类型
    a=a+b --> a=a+b;//返回类型是a类型与b类型中的最高类型.

    1、对于同样类型的a,b来说

    两个式子执行的结果确实没有什么区别。但是从编译的角度看吧,a+=b;执行的时候效率高。

    2、对于不同类型的a,b来说

        2.1    不同类型的两个变量在进行运算的时候,我们经常说到的是类型的转换问题。这里,记住两点:

    一、运算过程中,低精度的类型向高精度类型转换。

    二、如果将高精度的数值赋值给低精度类型变量,则必须要进行显性的强制转换。

         2.2    对于a+=b;这个式子,要明确的一点是,+=运算中,结合了强制类型转换的功能,因此,不会出现编译错误;而对于a=a+b;这个式子,因为是简单的运算,没有类型转换,在编译过程中会报错,代码如下:

    public class Test{  
    public Test(){  
    int a = 5;  
    char b = 3;  
      
    b+=a;//编译通过  
    b=a+b;//编译出错  
      
    }  
    public static void main(String[] args){  
    Test t = new Test();  
    }  
    }  

    要想改正上面的错误,只要像这样写:

    public class Test{  
    public Test(){  
    int a = 5;  
    char b = 3;  
      
    b+=a;  
    b=(char)(a+b);//编译通过  
      
    }  
    public static void main(String[] args){  
    Test t = new Test();  
    }  
    }  

    因此,总的来说,a=a+b;和a+=b;并不是任何时候都等价,也要分情况的。

    3.比较运算符(关系运算符)

    比较运算符的结果都是boolean型,也就是要么是true,要么是false。 比较运算符“==”不能误写成“=” 。

    4.逻辑运算符

    5.位运算符

    6.三元运算符

    四、流程控制

    顺序结构:程序由上而下自动执行

    分支结构:

    if--else

    switch-case

    循环结构:

    while(){};

    do()while{};

    for(;;;){}

    1.分支结构

    1.1条件判断

    ①if(条件表达式){}

    ②if(条件表达式){

    }else{

    }

    ③if(条件表达式1){

    }else if(条件表达式2){

    }else if(条件表达式3){

    }...

    else{

    }

    【注意

    1.一旦满足某个条件表达式,则进入执行语句块执行,执行完毕,则跳出当前的条件判断结构,不会执行其以下的条件结构语句。

    2.如果诸多个条件表达式直接为互斥关系,则多个结构可以上下调换顺序。

    如果诸多个条件表达式之间为包含关系,则要求表达式范围小的应写在范围大的前面。

    1.2选择结构

    switch(变量){

      case 值:语句块;break;

      case 另一个值:语句块;break;

      ...

      defalut:语句块;break;

    }

    【注意】

    1.变量可以为如下数据类型:byte short int char 枚举 String

    2.case后只能填写常量,不能写范围。

    3.default是可以省略的,位置比较灵活,通常放到最后。

    4.注意break可写可不写,不写就会一直执行下去直到遇到break才会停止。

    5.

    下面是switch的简单写法:

    switch(A){

    case B;

    }

       A部分中的值必须是int型的,或者是能够自动进行饮试转换成int型的表达式。也就是说A部分可以是byteshortcharint型(因为这几种类型都可以自动转换为int型)的。

       其次要强调的是该程序中B部分的值必须是单个byteshortcharint型的值,或者是final型的变量。

    但是final型的变量也是有要求的,也即是它必须是编译时的常量,怎么讲呢,看下面的程序段:

    final int a = 0;

    final int b;

       第二个语句就是在编译时不能够被识别出值的变量,因为它没有初始化,当然,这条语句也是错误的。所以总结case后的值可以是常数值或final型的值。再看下面的程序段:

    public class TestSwitch {
    
     public static void main(String[] args){
    
      byte a = 11;
    
      switch(a){// C
    
      case 11 : System.out.println(" 11 "); break;
    
      case 225 : System.out.println(" 11 "); break;// D
    
      }
    
     }
    
    }


     

        该代码正确吗?答案是否定的。虽然在 C 处是合法的也即是byte型的a值可以出现在switch中,但是 D处的语句也即是第二个case后的值是225大小超过了byte的范围,所以是错误的。再就是case后的值不能出现重复。因此在使用中要注意。

    2.循环结构

    2.1 格式

    ①初始化条件

    ②循环条件

    ③迭代条件

    ④循环体

    ------for------

    for( ①; ②;③ ){

    };

    ------while------

    while(②){

    };

    ------do while------

    do{

    }while(②);

    注意:1.不同循环体结构之间可以相互转换

    2.注意while和do while的区别:无论是否满足循环条件,do while至少执行一次

    2.2 嵌套循环 

    循环结构还可以声明循环。让内层循环结构整体充当外层循环的循环体。

    若外层执行m次,内层执行n次,则一共执行m*n次。

    /*
    例1:

    ****** ****** ****** */ public class Test { public static void main(String[] args) { //外层循环三次,相当于控制行数 for(int i=0;i<3;i++){ //内层循环六次,相当于控制列数 for(int j=0;j<5;j++){ System.out.print("*"); } System.out.println(); } } }

    2.3 无限循环结构(死循环)

    for(;;){

    }

    while(true){

    }

    往往在无限循环结构内部提供循环终止的条件,使用break关键字。否则,循环将无限执行下去,形成死循环。

     五、数组

  • 相关阅读:
    Json -- 语法和示例,javascript 解析Json
    平衡二叉树的实现原理
    递归:汉诺塔
    递归:这帮坑爹的小兔崽子
    函数:递归是神马
    函数:lambda表达式
    函数:内嵌函数和闭包
    函数:我的地盘听我的
    函数:灵活即强大
    函数:Python的乐高积木
  • 原文地址:https://www.cnblogs.com/wenlin66/p/8215059.html
Copyright © 2011-2022 走看看