【Java基础】java学习之旅04-数据类型转换及运算

本文详细介绍了Java中不同数据类型的转换规则,包括自动类型转换和强制类型转换,以及转换可能遇到的精度丢失和溢出问题。同时,文章讲解了运算符的用法,包括赋值、算术、关系、逻辑和位运算符,并通过实例展示了它们的运算顺序和效果。此外,还探讨了条件运算符的使用以及自增自减操作的细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

进制转换

常用的进制:

  • 二进制:BIN,1010
  • 八进制:OCT,012
  • 十进制:DEC,10
  • 十六进制:HEX,0xA

数据类型之间的转换
  1. 自动类型转换(隐式转换):
  • byte -> short -> int -> long -> float -> double
  • char -> int -> long -> float -> double
  1. 强制类型转换(显式转换):
    会导致精度丢失,甚至数据溢出。

例:

		int money = 100;
		
		double salary = money;// 由于精度不会丢失,所以可以自动转换。
		
		System.out.println(money);
		System.out.println(salary);
		
		int pay = (int) salary;// 由于精度会丢失,所以需要加上强制转换。
		
		System.out.println(pay);
		
		char c1 = 'A';
		int i1 = c1;
		System.out.println(i1);
		
		int i2 = 255;
		char c2 = (char) i2;// 根据ASCII编码将数字转换为字符
		System.out.println(c2);
		
		short s1 = 129;
		byte b1 = (byte) s1; // 如果强转后的类型不足以存放之前的数据大小,会出现数据溢出的现象。
		System.out.println(b1);
运算符
  • 赋值运算符: =
  • 算术运算符: + - * / % ++ – += -= *= /= %=
  • 关系运算符: > < >= <= == !=
  • 逻辑运算符: && || !
  • 位运算符(面向二进制): & | << >>
  • 条件运算符:三元表达式,三元运算符,三目运算符
  • 表达式1 条件运算符 表达式2 ? 表达式3 : 表达式4
  • 如果?号前面的判断结果为true,运算的结果是表达式3,否则运算结果是表达式4。

优先级:算术 > 关系 > 逻辑 > 赋值

例:

		
		int i = 1;
		int j = 2;
		int z1 = i + j;// 3
		int z2 = i - j;// -1
		int z3 = i / j;// 0
		int z4 = i % j;// 1
		double z5 = i / j;// 两个整数使用/表示取整
		double z6 = 1 / 2.0;// 如果有一个数字是浮点型,那么就是除法。
		double z7 = i * 1.0 / j;
		//System.out.println(z7);
		
		
		
		int i1 = 1;
		i1++;// 自加:i1 = i1 + 1
		System.out.println(i1);
		i1--;// 自减:i1 = i1 - 1
		System.out.println(i1);
		++i1;
		System.out.println(i1);
		--i1;
		System.out.println(i1);
		
		System.out.println(i1++);// 先打印再++
		System.out.println(++i1);// 先++再打印
		
		int i2 = i1++;// 先赋值再++
		int i3 = ++i1;// 先++再赋值
		System.out.println(i2);
		System.out.println(i3);
		
		
		
		int i4 = 5;
		i4+=5;// i4 = i4 + 5
		System.out.println(i4);
		i4/=3;// i4 = i4 / 3
		System.out.println(i4);
		i4%=3;// i4 = i4 % 3
		System.out.println(i4);
		
		
		
		int i5 = 5;
		int i6 = 4;
		
		System.out.println(i5 == i6);
		boolean bool1 = i5 > i6;
		System.out.println(bool1);
		System.out.println(i5 != i6);
		System.out.println(i5 >= i6);
		
		
		
		boolean bool2 = true;
		boolean bool3 = false;
		System.out.println(bool2 && bool3);// 与,前后都要成立
		System.out.println(bool2 || bool3);// 或,前后有一个成立
		System.out.println(!bool2);//非,取反
		
		System.out.println(bool2 & bool3);
		System.out.println(bool2 | bool3);
		
		int i7 = 8;
		int i8 = 6;
		
		//System.out.println((i7 += 1) > i8 && i7 < (i8 += 6));// true
		//System.out.println(i7);// 9
		//System.out.println(i8);// 12
		
		// 短路||
		//System.out.println((i7 += 1) > i8 || i7 < (i8 += 6));// true
		//System.out.println(i7);// 9
		//System.out.println(i8);// 6
		
		// 短路&&
		//System.out.println((i7 += 1) < i8 && i7 < (i8 += 6));// false
		//System.out.println(i7);// 9
		//System.out.println(i8);// 6
		
		// 按位&
		System.out.println((i7 += 1) < i8 & i7 < (i8 += 6));// false
		System.out.println(i7);// 9
		System.out.println(i8);// 12
		
		
		
		int i9 = 6;
		int i10 = 8;
		
		int i11 = i9 > i10 ? i9 : i10;
		System.out.println(i11);
		
		//位运算符:左移和右移
		int a = 16;
		//16 -> 10000
		//10000 << 1 = 100000
		//100000 -> 32
		System.out.println(a << 1);// 32 = 16 * 2^1
		System.out.println(a << 2);// 64 = 16 * 2^2
		System.out.println(a << 3);// 128 = 16 * 2^3
		
		System.out.println(a >> 2);// 4 = 16 / 2^2
		

总结

数据类型的转换需要熟记由小到大的过程,从大转成小的数据类型会出现精度的丢失所以需要强制类型的转化,数据之间的运算与正常的数学运算类似

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JeffHan^_^

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值