第3章 操作符

1.基本类型存储了实际的数值,而非引用,在为其赋值时,是直接将一个地方的内容复制到另外一个地方。

int a = 2;
// 将a的值复制一份给b
int b = a;
// 修改b不会对a造成任何影响
b = 3;
System.out.println(b); // 3
System.out.println(a); // 2

2.整数除法会直接去掉结果的小数位,而不是四舍五入地圆整结果。
3.通过java.util.Random类的对象,可以获取随机数。调用nextInt( )方法可获取随机整数,传入该方法的参数为随机数的上限+1,下限是0。

Random random = new Random(47); // 设定随机数种子,每次程序运行都产生相同的随机数序列
int randomInt = random.nextInt(100); // 0~99
System.out.println(randomInt);

4.基本类型不适用于equals( )方法,直接使用==和!=即可。
5.按位操作符(& | ^ ~)不能处理double和float,可以对boolean进行前三个操作,但不能对boolean进行取反操作(可能是为了避免与逻辑NOT混淆)
6.移位操作符(<< >> >>>)不能处理float、double和boolean,如果对char、byte或者short类型进行移位处理,在移位之前会将其转换为int类型。
左移位操作符(<<):在末尾补0
“有符号”右移位操作符(>>):根据原有符号在前面补0或1
“无符号”右移位操作符(>>>):无论正负,一律在前面补0

byte b = -1;
// 首先将b转换为int,然后右移10位,再将得到的int类型结果截断为byte类型,最后赋值给b,所以对char、byte、short使用>>>=会造成一些错误。
b >>>= 10;
// 这样会得到正确结果,因为没有赋值行为:
System.out.println(b >>> 10);
// 总的来说,就是窄化变换带来的错误!

7.将float或者double转换为整型时,总是对该数字进行截尾。

double above = 29.7;
System.out.println((int) above); // 29
System.out.println(Math.round(above)); // 30

8.通常,表达式中出现的最大数据类型决定了表达式最终结果的数据类型。
9.对byte、short、char数据类型直接进行算术操作,得到的结果会自动转换为int类型。使用复合赋值,则不会转换为int类型。

byte b2 = 2;
byte b3 = 4;
// 对byte、short、char数据类型直接进行算术操作,得到的结果会自动转换为int类型。
// 想要赋值给b2必须转型为byte:
// b2 = (byte) (b2 + b3);
System.out.println(getType(b2 + b3)); // java.lang.Integer
// 使用复合赋值,则不会转换为int类型
b2 += b3;
System.out.println(getType(b2)); // java.lang.Byte

//getType方法
public static String getType(Object o) {
	return o.getClass().getName();
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值