Java的数据类型和运算符

一,数据类型分类(2种)

1. 基本数据类型(3种)

  • 数值型:

    • 整数类型(4种):

      1. byte(1字节):范围(-128~127);
      2. short(2字节):范围(-32768~32767);
      3. int(4字节);
      4. long(8字节):若数据定义为long类型超过int范围后面 需加“L”(推荐)或“l”(默认为int,超过int范围编译将会报错,未超过则不会);
    • 浮点类型(2种):

      1. float(4字节):第1位为符号位,接下来8位表示指数,再接下来23位表示尾数;若指定浮点类型为float需加“F”或“f”(默认为double,否则编译提示可能损失精度);
      2. double(8字节):第1位为符号位,接下来11位表示指数,再接下来52位表示尾数;
      3. 浮点数的形式:
        • a.十进制数形式:必须包含一个小数点(1.68、168.0和 .168),否则当成int类型;
        • b.科学计数法形式:只有浮点类型数值才可以使用,如1.68e2(168.0)、1.68E2和168e2(16800.0);
      4. 特殊浮点数:
        • a.正无穷大:正数除于0.0,用Double或Float的POSITIVE_INFINITY表示,所有的正无穷大都相等;
        • b.负无穷大:负数除于0.0,用Double或Float的NEGATIVE_INFINITY表示,所有的负无穷大都相等;
        • c.非数:0.0/0.0,用Double或Float的NaN表示,所有的非数均不相等;
  • 字符型:char(2字节)

  • 布尔型:boolean(1字节)

  • 注意switch语句中只能接受byte、short、int和char 类型变量(JDK1.6以前的版本),JDK1.7时,又增加了String

2. 引用数据类型

  • 类(class)
  • 接口(interface)
  • 数组([ ])

二,基本数据类型转换(2种)

1. 自动类型转换

  • 表数范围小的向表数范围大的自动转换
  • 当s为short类型时。s += 4;与s = s + 4;的区别
        class OperatorDemo {
            public static void main(String[] args){
                short s = 3;
                s += 4;
                System.out.println("s = " + s);
            /*
                s = s + 4;
                System.out.println("s = " + s);
                //s(short类型)与4(默认int类型),会自动提升为int类型,相加的和也为int类型,赋值给short类型的变量编译会提示损失精度
            */
            }
        }

2. 强制类型转换

  • 语法格式:(targetType)Value
  • 以下为负数的二进制相互转换示例:
        class BinaryDemo {
            public static void main(String[] args) {
                System.out.println(Integer.toBinaryString(128)); /*用于打印整数128的二进制 00000000 00000000 00000000 10000000 (4个字节,前面0不显示);
                                                                                    取反:11111111 11111111 11111111 01111111 (4个字节)
                                                                                       +                                   1 */
                System.out.println(Integer.toBinaryString(-128)); //用于打印-128的二进制   11111111 11111111 11111111 10000000  (4个字节);

                byte a=1,b=2;
                a = (byte)(a + 126);//a=127,强制为byte 1个字节,二进制的最高位为0,范围内;
                b = (byte)(b + 126);//b=128,强制为byte 1个字节,二进制的最高位为1,超出范围,后面取反再加1,转换为负数-128;
                System.out.println("a="+a+",b="+b);
                System.out.println(Integer.toBinaryString(a));
                System.out.println(Integer.toBinaryString(b));
            }
        }

运行结果:
Java的数据类型和运算符_第1张图片

三,运算符(6种)

1. 算数运算符

  • 正号(+) 、负号(-)、加(+)、减(-)、乘(*)
  • 除(/):整数与整数相除时,结果永远是整数,小数部分被忽略。
  • 模(%):负数对正数取模结果为负数;正数对负数取模结果为正数。
  • 自增(++):该运算符出现在操作数左边,操作数先自增,再参与运算;出现在右边,先参与运算再自增。
  • 自减(–):该运算符出现在操作数左边,操作数先自减,再参与运算;出现在右边,先参与运算再自减。
  • 字符串相连(+)

    int a = 4,int b = 5;
    System.out.println("a+b="+a+b);//打印结果:a+b=45
    System.out.println("a+b="+(a+b));//打印结果:a+b=9
    

2. 赋值运算符(13种)

  • 将值赋给变量(=);
  • 扩展后的赋值运算符:推荐使用,让程序更健壮。

    += , -= , *= , /= , %= , &= , |= , ^= , <<= , >>= , <<<= , >>>=

3. 位运算符(7种)

直接对二进制位进行运算

  • 按位与(&):可用于提取某一二进制数的其中几位。
  • 按位或(|)
  • 按位异或(^):一个数异或同一个数两次为本身(用于数据简单加密,还可用于两个整数的交换)。
        int m3=5,n3=7;
        System.out.println("互换前:m3="+m3+",n3="+n3);
        m3 = m3 ^ n3 ;
        n3 = m3 ^ n3 ;
        m3 = m3 ^ n3 ;  
        System.out.println("互换后:m3="+m3+",n3="+n3); 
  • 按位非(~):对二进制数值的每一位0变1,1变0。
  • 左移运算符(<<)、无符号左移运算符(<<<):左移几位其实就是该数据乘以2的几次方。
  • 右移运算符(>>)、无符号由移运算符(>>>):右移几位其实就是该数据除以2的几次幂。

4. 比较运算符(7种)

  • 返回结果为boolean类型
  • 符号:>、>=、<、<=、==、!=和instanceof

5. 逻辑运算符

  • 符号:&&(短路与)、||(短路或)、!(非)、&(与)、|(或)、^(异或)

6. 三目运算符

  • 语法格式:(expression)?(if-true-statement):(if-false-statement)
  • 说明:为if else的简写,当其运算有一具体结果时,可以使用三目运算符简化。

你可能感兴趣的:(java笔记)