Loading

Java中的运算符

短路

1.true || 2.true || 3.false || 4.true
其中 走完1表达式 就不会再走了 节省了不必要的计算

1.true && 2.true && 3.false && 4.true
其中 走完3表达式 就不会再走了(结果已经为false) 节省了不必要的计算

字面量

如果程序里使用了一个字面量(literal value),则编译器能准确地知道它是什么类型的。

不过当类型模棱两可的时候,你就必须使用与该字面量相关的一些字符,以此添加额外信息来引导编译器

0x:十六进制前导

0(零):八进制

0B:二进制

F/f:float型后缀

D/d:double型后缀

L:long型后缀(规范:用大写 以区分i与l)

字面量中的下划线

可在数字字面量中加入下划线

规则

  1. 只能使用单个下划线,不能连续使用多个;
  2. 数字的开头或结尾不能有下划线;
  3. FDL这样的后缀周围不能有下划线;
  4. 在二进制或十六进制标识符bx的周围不能有下划线。

eg:

@Test
public void test(){
    double a = 99_999_998.123;
    System.out.println(a);//9.9999998123E7
    int b = 0B1010_1110_1011_1111;
    System.out.println(b);//44735
    System.out.println(Integer.toBinaryString(b));//1010111010111111
}

位操作符

位移运算

>>保留符号位右移(无符号右移)

<<保留符号位左移(...)

>>>不保留符号位右移

@Test
public void test1(){
    System.out.println(-2 >> 1);//-1
    System.out.println(-2 << 1);//-4

    /**
     * -2 ->    0B1000_0000_0000_0000_0000_0000_0000_0010 
     *    -反-> 0B1111_1111_1111_1111_1111_1111_1111_1101 
     *    -补-> 0B1111_1111_1111_1111_1111_1111_1111_1110
     * 无符号右移后 (最高位补零)
     *          0B01111_1111_1111_1111_1111_1111_1111_111
     */
    System.out.println(-2 >>> 1);//2147483647
    System.out.println(0B01111_1111_1111_1111_1111_1111_1111_111);//2147483647
}

类型转换

小数转整数

直接强制转换会将小数部分接去掉

@Test
public void test(){
    float f1 = 1.1f;
    float f2 = 1.9f;

    double d1 = 1.1d;
    double d2 = 1.9d;
    System.out.println((int) f1);//1
    System.out.println((int) f2);//1
    System.out.println((int) d1);//1
    System.out.println((int) d2);//1
}

四舍五入

Math.rund();

类型提升

(任何算数操作、按位操作)表达式中最大的数据类型 决定表达式返回数值的类型

short s1 = 2;
short s2 = 3;
int i1 = 1;

Object o1 = s1+s2;
Object o2 = s1+i1;

System.out.println(o1 instanceof Integer);//true 算数运算优先被转为int进行计算
System.out.println(o1 instanceof Short);//false

System.out.println(o2 instanceof Integer);//true
System.out.println(o2 instanceof Short);//false

java没有sizeof

C/C++中用来获取数据被分配的字节大小,为了移植性

不同的数据类型在不同机器上可能有不同的大小,所以在做一些与数据大小有关的运算时,程序员必须知道这些类型有多大。

Java不需要,java——与平台无关的语言

posted @ 2022-10-01 23:33  fogey  阅读(10)  评论(0编辑  收藏  举报