JavaSE基础_基本语法

# 基本语法

## 1.变量的使用

    

#### 1.1变量的分类(java的八种基本数据类型)
        整型:byte(1字节 (-128 ~ 127)) short(2字节) int(4字节) long(8字节)
        浮点型: float(4字节) double(8字节)
        字符型:char(2字节)
        布尔类型 :boolean(忽略大小因为只有true和false)
        
#### 1.2引用数据类型:
            类, 接口,数组

#### 1.3定义变量的格式:

        格式:变量的类型  变量名 = 变量值
          方式:   
            1.声明和赋值同时进行:int a = 10;
            2.先赋值后声明:int a; a = 10;
            3.同时声明多个变量:int a,b,c;    a = b = c = 10;
            4.同时声明多个变量和赋值:int a = 10; int b = 20;
    

#### 1.4变量使用的注意点

        1.变量应该先声明后使用
        2.同一个变量可以被多次赋值,后一次赋值覆盖前一次的值
        3.作用域 :声明那个变量所在的那对大括号内
        4.在同一作用域内的变量名不能相同
    

#### 1.5java 常量的默认类型

        1.java的整型常量默认为 :int
        2.Java 的浮点型常量默认为 : double
    

#### 1.6变量的类型说明

        1.long类型数值后面加要"l/L": long l = 406666666L
        2.float类型的数值后面要加"f/F":列入 float f = 4.6F
    

#### 1.7基本数据类型变量间的运算

        1.自动类型提升:小容量的变量和大容量的变量做运算,结果用大容量的变量来接收。(容量指的是表数范围)                    
            byte,short,char -> int -> long -> float -> double
            **注意:**1.byte,short,char三者之间做运算会先将自身提升为int
        2.强制类型转换:自动类型提升的逆过程 (把大容量的变量赋值给小容量)
            格式 :(强转的类型)  (int)4.6
            注意:强制类型转换可能会损失精度
            
#### 1. 8变量的作用
    保存数据

## 2. 关键字和标识符
#### 2.1java关键字
        定义:被java赋值了特殊的含义的单词或字符串
        特点:所有的字母都是小写
        
#### 2.2保留字
        java现版本暂未使用,但以后的版本可能作为关键字来使用
        
    

#### 2.3标识符

        定义:凡是需要自己起名字的地方都叫做标识符
        规则:①由26个英文字母大小写,0-9 ,_或 $ 组成  
        ②数字不可以开头。
        ③不可以使用关键字和保留字,但能包含关键字和保留字。
        ④Java中严格区分大小写,长度无限制。
        ⑤标识符不能包含空格。
    

#### 2.4命名规范:

    包名:多单词组成时所有字母都小写:xxxyyyzzz
    类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz
    变量名、方法名:多单词组成时,第一个单词首字母小写,
                                第二个单词开始每个单词首字母大写:xxxYyyZzz
    常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ
    注意 :一定要做到见名知意

## 3.运算符
    

#### 3.1算术运算符
            
                正号
                负号
                加
                乘
                减
                除
                取模(取余)
                前加加:先自加一后取值(赋值)
                后加加:先取值(赋值)后自加一
                前减减:先自减一后取值
                后减减:先取值后自减一
                字符串连接符
    

#### 3.2赋值运算符

        =
        扩展赋值运算符 :+=, -=, *=, /=, %=     
        注意:  short s = 3;
                  s = s+2;  编译不通过,因为short和int做运算会将short提升为int,只能用int来接收。
                  s += 2;    编译能通过,不会改变原来的变量的数据类型

    

#### 3.3比较运算符

        ==
        !=
        <
        >
        <=
        >=
    

#### 3.4逻辑运算符

        &
            逻辑与
        &&
            短路与
        |
            逻辑或
        ||
            短语或
        !
            逻辑非
        ^
            逻辑异或
        说明:
        &和&& : 两边都为true结果为true
        |和|| : 两边只要有一个为true结果为true
        ! : 取反
        ^ : 相同为false,不同为true
         [面试题]& 和 && , | 和 ||的区别?
        
   &和&&的区别?
      &和&&左边式子的结果为true的时候,右边的式子都会执行。(因为判断不出结果)
      &左边的式子结果为false的时候,右边的式子仍然执行(无论左边结果为true还是false右边都执行)。
      &&左边的式子结果为false的时候,右边的式子不再执行(因为可以判断出结果就为false)。

      |和||的区别?
      |和||左边的式子的结果为false的时候,右边的式子都会执行。(因为判断不出结果)
      |左边的式子结果为true的时候,右边的式子仍然会执行(无论左边结果为true还是false右边都执行)。
      ||左边的式子结果为true的时候,右边的式子不再执行(因为可以判断出结果就为true)

## 5.三元运算符
    格式:(条件表达式)? 表达式1 :表达式2;
    说明:1.条件表达式的结果只能为boolean类型
        2.如果条件表达式的结果为true则执行表达式1,如果为false则执行表达式2
        3.表达式1和表达式2的类型应该保持一致,如果表达式1和表达式2可以进行自动类型提升那么也可以
                    例:double d = (m > n)? 5 : 12.3;
        4.三元运算符可以嵌套使用但不建议
        5.三元运算符可以使用if语句所替代。反之不行。如果两者都可以使用建议使用三元运算符,因为
                效率高一些。
    代码: 求三个数的最大值
        int aa = 10,bb = 20,cc = 30;
        int maxNumber = (aa > bb)? aa : bb;
        maxNumber = (maxNumber > cc)? maxNumber : cc;
        
        char x = 'x';
        int i = 10;
        int j = 10 + 'x';
            j = x;
        System.out.println(true? x : i);//120
        System.out.println(true? 80 : x); ?
        System.out.println(true? x : 10);//x
        System.out.println(false? 'x' : i);//10
        System.out.println(j);//130
        System.out.println(true? 10.5 : i);//10.5
        System.out.println(true ? 'a' : 120);//a
        /*
         * *int和char使用三元运算符总结:有一个变量就变为变量的类型,都是常量就变为char,都是变量就自动提升。
         * 其它long int float double 使用三元运算符和基本运算符一样,会自动提升。
         */
        

## 6.进制

    1.二进制,八进制,十进制,十六进制
    二进制 : 以0b或0B开头
    八进制 : 以0开头
    十六进制 : 以0x或0X开头
    2. 二进制 ->  十进制
        1011 =>  2的0次方 + 2的1次方 + 2的3次方
    十进制 -> 二进制
        除2取余,最后将余数反过来
    二进制 -> 八进制  :三位二进制 -> 一位八进制
二进制 ->  十六进制:四位二进制 -> 一位十六进制
## 7.位运算符
    运算符
        << 左移:在一定的范围内,原来的数乘以2
        >> 右移:在一定的范围内,原来的数除以2
        >>> 无符号右移
        & 与运算
        | 或运算
        ~ 反码
        >> 与 >>> 的区别:>> 右移:正数右移最高位用0补,负数右移最高位用1补
                            >>>  无符号右移 : 无论正负,最高位都是用0补

## 8.流程控制

#### 8.1结构

    

##### 8.1.1 顺序结构

        程序从上到下逐行地执行,中间没任何判断和跳转。
    

##### 8.1.2 分支结构

        根据条件,择性地执行某段代码。
## 8.1.3循环结构
        根据循环条件,重复性的执行某段代码。(while、for、do ... while)
死循环
    一 格式 :
        for(;;){}
        while(true){}
        do{}while(true);
    二 如何终止循环:

        1.将循环条件改成false
        2.使用break关键字
嵌套循环
    一 嵌套循环 :一个循环a中再嵌套一个循环b。a循环叫做外层循环b循环叫做内层循环。
    二 执行的次数 =  外层循环执行的次数 * 内层循环执行的次数
    三 说明 :
        1. 外层循环控制行,内层循环控制列。
        2.外层循环执行一次,内层循环执行一轮。
    
        //外层循环
        for(int i = 1; i < 10; i++){
            //内层循环
            for(int j = 1; j < 10;j++){
            }
        }
break和continue
    continue:
    使用范围 :1.在循环结构中
    作用 :用来结束当次循环
    在嵌套循环中 :用来结束包含它的那个循环的当次循环
    break :
    使用范围 :1.在switch-case结构中   2.在循环结构中
    作用 :用来结束当前循环
    在嵌套循环中 :用来结束包含它的那个循环的当前循环    
        三 说明 :
            1. 外层循环控制行,内层循环控制列。
            2.外层循环执行一次,内层循环执行一轮。
    如何结束外层循环? - 可以给外层循环起名字
        //lable : 给外层循环起的名字
        lable : for(int i = 1; i <= 3; i++){
            for(int j = 1; j <= 3; j++){
                System.out.print("j=" + j + " ");
                if(j == 2){
                    break lable;  //用来结束外层循环
                    //注意:break和continue的后面不能直接再写其它语句,因为不可能被访问到
                    //System.out.println("aaaa");
                }
            }
            System.out.println("i=" + i);
        
        }

你可能感兴趣的:(JavaSE基础_基本语法)