1.转义字符

        Java中有些字符,Java语法赋予了特殊的含义,如果不想让这些字符代表特殊含义,想要表示其字符本身,可以使用转义字符进行转义,转义字符从\开始。(例:\'、\"、\\分别表示:'、"、\)

        例举比较常用的几个:

                                        \t(制表符):一个制表符位置代表8个空格,制表符位置前面的内容如果满制表符符位的整数倍,重新开辟一个制表符位,如果不满,补全一整个制表符位置,也就是8个空格位。

                                        \n(换行):光标从这一行的行尾换到下一行的行首。

                                        \b(退格):光标回到上一格,如果\b后面没有内容的输出,对原数据不影响,如果\b后面存在内容的输出,会覆盖原有位置的内容。

2.数值表现形式

    整型:进制: 满几进一
            二进制 : 由0,1组成           通过0b|0B开头
            八进制 : 由0~7之间的数字组合而成    通过0开头
            十进制 : 默认  由0~9之间的数字组合而成
            十六进制 : 由0~9,a~f组合而成        通过0x|0X开头

        转换:
            其他进制转为十进制: 从后往前,从右往左,最后一位开始,当前这一个位置的数值*当前进制数^0开始,每次+1,最后的和为转为十进制的数据
            十进制转为其他进制: 当前的十进制数据不停的除以2,每次关注余数,当结果为0不除了,余数从下往上看

       浮点型:
            1.当小数的整数位为0的时候,0.5-->0省略 : .5
            2.科学计数法 e|E->10
                1.23E3 - > 1.23*10^3
                1.23E-3 - > 1.23/10^3

3.数据类型转换

        正常: 对应类型的数据赋值给对应类型的变量

      (注:boolean类型不参与类型转换)

(1).自动类型提升:
            小 --> 大
            大范围类型 变量名 = 小范围类型的数据;

(2).强制类型转换
            大--> 小,有可能会损失精度
            小范围类型 变量名 = (小范围类型)大范围类型的数据;
                强转是发生在赋值之前的,大范围类型的数据强转为小范围类型,然后赋值给对应的小范围类型的变量

(注意:1.当多种类型参与运算时候,结果为参与运算中最大的数据类型
            2.当多种类型参与运算时候,如果参数运算的最大类型小于int类型,结果提升成为int类型
            3. byte->short->int->long->float->double
            4.当byte,short,char赋值的时候,只要在其范围内的常量就能够成功赋值)

4.运算符

运算符根据作用的不同分为:算数运算符、赋值运算符、关系运算符、逻辑运算符、位运算符、条件运算符。

(1)算数运算符

                  加号(+)也可作为加法运算,也可以用作正号,同时用作字符串的连接。当+左右两边一旦出现字符串,+作为字符串的连接符使用,最后会把左右两边的数据拼接成一整个字符串得到结果

                % 模以 取模  求余数
            操作1%操作数2  当操作数1<操作数2时候,结果为操作数1

注意:一个字符型数据参与运算(四则运算),会前转为十进制的整数再运算--> 参照Unicode,ASCII

(2)赋值运算符

            基础赋值运算符  = 
            =是java中唯一一个自右向左运算的符号
            
            扩展赋值运算符 (算数运算符+基础赋值运算符)
            +=    a+=b  ==> a = a+b;
            -=
            *=
            /=
            %=    a%=b  ==> a = a%b;
            
        缺点:
            不直观
        优点:
            提高执行效率,编译期会自动优化为扩展赋值运算符
            自动做强制类型转换

(3)关系运算符

             > 、<、 >= 、<=  
            只能针对数值型|能够转为数值型的数据进行操作
        ==  !=
            可以针对任意类型数据进行操作
            
        结果为boolean类型的运算符

(4)逻辑运算符

       逻辑运算符:
        & 与    
            一个为false就是false,两个都为true,结果才为true
        | 或
            一个为true就是true,两个都为false才是false
        ! 非 取反
            !true->false
            !false->true
        ^ 异或
            相同为false,不同为true
            
        短路运算符 : 当左边的操作数的值就能够决定最终的结果,右边操作数将不会执行(例如:System.out.println(10<5 && 10/0==0);此输出语句使用短路运算符&&时,右边的分母为0不会出现异常。)
        
            短路与 : 与单与逻辑相同
            短路或 : 与单或的逻辑相同
            
        推荐使用短路运算符
        两边的操作数为boolean类型
        结果为boolean类型结果

(5)位运算符(了解即可)

  把操作数转为二进制,对二进制的操作数进行某种规则的运算,最终得到的二进制的结果再转为十进制。
        
        以下三个 运算符,当操作数为boolean类型作为逻辑运算符,操作数为整数,作为位运算符
        & : 两边的操作数转为二进制,同一位置的两个数,一个为0就是0,两个都为1才1,结果转为十进制
        | : 两边的操作数转为二进制,同一位置的两个数, 一个为1就是1,两个都为0才是0,结果转为十进制
        ^ : 两边的操作数转为二进制,同一位置的两个数, 相同为0,不同为1,结果转为十进制

    位移运算符
            << 左移  : 第一个操作数转为二进制,向左移动第二个操作数个位置,空位补0,结果转为十进制
            >> 右移  : 第一个操作数转为二进制,向右移动第二个操作数个位置,移出的位置舍弃,结果转为十进制
            
            规律: 
                左移: 相当于*2的倍数    a<<b ==> a*2^b
                右移: 相当于/2的倍数    a>>b ==> a/2^b
        
        位运算符的执行效率较高,因为针对二进制的数据
        当想要对2或者2的倍数进行乘除,建议使用位移运算符效率更高

public class Test{  
	
	public static void main(String[] args){ 
        //位运算符计算
		System.out.println(3&2);  //2
		System.out.println(3|2);  //3  
		System.out.println(3^2);  //1
		//位移运算符
		System.out.println(3<<2);  //12
		System.out.println(12>>2);  //3
		System.out.println(9>>2);  //2
		
	}

}