java 对数取反_Java基础(一)--操作符

Java底层都是使用操作符来操作Java中的数据

常见的操作符:+、-、*、/、=

优先级:

当一个表达式存在多个操作符时,操作符的优先级决定了计算顺序,这点在我们刚开始学习数学的时候就会了解到

如果一个字符串后面有个+,在后面有非String类型的元素,会自动转换为String

关系运算符:> < <= >= == !=

基本数据类型通过==进行比较,其包装类需要用equals进行比较

Integer a = new Integer(2);

Integer b = new Integer(2);

int c = new Integer(2);

int d = new Integer(2);

System.out.println(a == b);

System.out.println(c == d);

System.out.println(a.equals(b));

a,b是对象,其内容相同,但是引用不同,如果比较对象,可以使用equals,而c,d虽然也是new Integer(),但只是把值赋给c,d

逻辑运算符:

&& || !,只能用于Boolean的比较,注意和& | ^ ~的区分(按位操作符)

短路:

&&除了与运算,还有一个功能就是短路,这也是面试中可能遇到的问题

if (false && true) { //第一个表达式为false,就不会计算比较后面的部分,可以获得性能提升

}

直接常量:

double:double =1d;float:float =1f;long:long = 1L;

PS:d/f/l大小写都可以

无论是Long还是Integer,都可以转换为二进制、八进制、十六进制的String,方法分别是:toBinaryString、toOctalString、toHexString

Double只有toHexString

八进制:以0开头,后面0-7

十六进制:以0x开头,后面为0-9-a-f

指数计数法:

float f = 1.39e-43f;double d = 47e47d;double d = 47e47;  //此时double的d可以省略的,编译器通常把指数当做double处理的,所以float必须声明的

"e"代表自然对数的基数,约等于2.718。1.39e-43f就是1.39*2.718^-43,然而在Java、C、C++中,e等于10,也就是1.39*10^-43

按位操作符:

用来操作操作整数中的单个bit,也就是二进制,直接对底层进行操作,设置寄存器内的二进制位

&:按位与

|:按位或

^:按位亦或

~:按位非,也就是取反

~是一元操作数,也就是只能对一个操作数进行操作,其余三个都是二元操作数,可以和=联合使用,&= |= ^=

对于Boolean,可以使用& | ^,但是不能使用~(可能是避免和!混淆),此时和逻辑操作符是相同的,只是没有短路效果

移位运算符:

操作的对象也是二进制bit,只能用来处理整数

<

>>:操作符右侧指定的位数向右移动(符号为正,高位补0,符号为负,高位补1)

>>>:无符号右移,无论正负,高位补0,Java独有的,C/C++没有

在对char、byte、short进行移位处理,首先会被转化为int类型,得到的结果也是int类型。只有数值的低五位才有效,int类型32位,是2的

5次方,而long类型处理的结果还是long

<<=、>=、>>>=:得到结果并赋值

int i = -1;

System.out.println(Integer.toBinaryString(i));

i>>>= 10;

System.out.println(Integer.toBinaryString(i));long l = -1;

System.out.println(Long.toBinaryString(l));

l>>>= 10;

System.out.println(Long.toBinaryString(l));short s = -1;

System.out.println(Integer.toBinaryString(s));

s>>>= 10;

System.out.println(Integer.toBinaryString(s));byte b = -1;

System.out.println(Integer.toBinaryString(b));

b>>>= 10;

System.out.println(Integer.toBinaryString(b));

b= -1;

System.out.println(Integer.toBinaryString(b));

System.out.println(Integer.toBinaryString(b>>>10));

结果:

11111111111111111111111111111111

1111111111111111111111

1111111111111111111111111111111111111111111111111111111111111111

111111111111111111111111111111111111111111111111111111

11111111111111111111111111111111

11111111111111111111111111111111

11111111111111111111111111111111

11111111111111111111111111111111

11111111111111111111111111111111

1111111111111111111111

>>>=如果对byte和short进行运算,得到可能不是正确的结果,上面可以看到-1右移过后还是-1的结果

而Integer.toBinaryString(b>>>10);没有赋值,得到的是正确的结果

类型转换操作符:

07252f7f9d81d81134b6bd2832084a88.png

低位自动转化为高位,高位只能强制转换为低位

截尾和舍入:

float、double转化成int,是直接舍掉小数部分,不是四舍五入。想要四舍五入,可以使用Math的round()

提升:

char、byte、short比int要小,会自动转成int。int和long运算,得到long。

Java没有sizeof,存在于C/C++

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值