java 第三次记录 类型运算


运算基本于就是 加减乘除余( + - * / % ),

整型

运算溢出

由于整型存在不同的取值范围,当整型的运算超出该整型的取值范围时,就会出现溢出,而溢出不会返回错误,却会出现一个特别的结果。

byte:-128 ~ 127
short: -32768 ~ 32767
int: -2147483648 ~ 2147483647
long: -9223372036854775808 ~ 9223372036854775807
public class Calculate {
	public static void main(String[] args ) {
		int a = 2147483647;
		int b = 10;
		int number = a + b;
		System.out.println(number ); // -2147483639
	}
}

自增、自减

int a = 1;
a++; // 同等于 a = a + 1;
a--; // 同等于 a = a - 1;

++ 或 – 写在前面和后面的运算是不同的,++a 表示先加 1 再引用 a,a++ 表示先引用 a 再加1。

位运算

位运算符:&、|、~、^(与、或、非、异或)

n = 0 & 0; // 0
n = 0 & 1; // 0
n = 1 & 1; // 1

'与' 运算符(&)必须两个数同时为1,返回1,否则返回0
n = 0 | 0; // 0
n = 0 | 1; // 1
n = 1 | 1; // 1

'或' 运算符(|)只要一个数为1,返回1,否则返回0
n = ~0; // 1
n = ~1; // 0

'非' 运算符(~)取反。
n = 0 ^ 0; // 0
n = 0 ^ 1; // 1
n = 1 ^ 1; // 0

'异或' 运算符(^)两个数不同结果为1

运算优先级

  • ()
  • ! ~ ++ –
    • / %
  • << >> >>>
  • &
  • |
  • += -= *= /=

运行时的类型提升和转换:如果运算时两个数类型不同,计算结果为较大的类型。如 short 和 int 类型运算,返回结果是 int 类型,short 类型会被提升成 int 类型;可以将类型强制转换,强制转型使用(类型),但是转换的值如果超出该转换的类型的范围值就会得到一个错误的结果!

short a = 1234;
int b = 123456;
int c = a + b; // a 会变 int, 结果 124690
short d = a + b; // 编译错误!

int i = 12345;
short s = (short) i; // 12345
int i1 = 1234567;
short s1 = (short) i1; // -10617
int i2 = 12345678;
short s2 = (short) i2; // 24910

浮点型

整型和浮点型运算只能进行加减乘除这些计算,不能做位运算和移位运算。

溢出

整数运算在除数为0时会报错,而浮点数运算在除数为0时,不会报错,但会返回几个特殊值:

  • NaN表示Not a Number
  • Infinity表示无穷大
  • Infinity表示负无穷大

强制转型

可以将浮点数强制转型为整数。在转型时,浮点数的小数部分会被丢掉。如果转型后超过了整型能表示的最大范围,将返回整型的最大值;如果要进行四舍五入,可以对浮点数加上0.5再强制转型。

int n1 = (int) 12.3; // 12
int n2 = (int) 12.7; // 12
int n2 = (int) -12.7; // -12
int n3 = (int) (12.7 + 0.5); // 13
int n4 = (int) 1.2e20; // 2147483647

double d = 2.6;
int n = (int) (d + 0.5); // 3

布尔型

基本与JavaScript相同;

布尔运算是一种关系运算,包括以下几类:

  • 比较运算符:>,>=,<,<=,==,!=
  • 与运算 &&
  • 或运算 ||
  • 非运算 !

三元运算:c ? a : b;// a条件成立为true则 c = a,a条件不成立则 c = b。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值