Java基础语法(二)--数据类型转换

本文详细介绍了Java中的自动类型转换和强制类型转换,并通过实例演示了不同类型间的转换过程及注意事项,包括数据溢出、精度损失等问题。

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

当数据类型不一样时,会发生数类型转换

1、自动类型转换(隐式),数据范围从小到大(并非字节大小),下面举例

public class Demo01Type {
	public static void main(String [] args) {
		long num1 = 20; //正常应该加L,然而这一步被自动类型转换了,遵循数据范围从小到大的原则
		System.out.println(num1);
		double num2 = 2.5; //正常加F,然而这一步被自动类型转换了
		System.out.println(num2);
		float num3 = 30L; //输出30.0,别看是30L,但是float类型数据范围更广,满足数据范围从小到大
		System.out.println(num3); 
		}
	}

2、强制类型转换

public class Demo02Type {
	public static void main(String[] args) {
		int num = (int)100L; //强制类型转换
		System.out.println(num); //100
		}
	}

3、注意事项

      (1)强制类型转换不推荐使用,可能会出现数据溢出或者精度损失

		int num1 = (int) 6000000000L; //数据溢出,因为int最多到21亿
		System.out.println(num1);  //编译之后是17亿
		
		int num2 = (int) 3.5; //精度损失
		System.out.println(num2); //3

     (2)byte/short/char 这三种类型都可以进行数学运算

     (3)byte/short/char 这三种类型进行数学运算的之前,会首先被提升为int类型,然后进行运算

		char ch = 'A';
		System.out.println(ch + 1); //66 因为char类型与数字进行计算,会先转换为ASCII码,加法输出为66
		
		byte num3 = 30;
		byte num4 = 40;
		int result = num3+num4; // 数据类型提升,result必须定义为int类型,因为byte + byte --> int +int --> int
		System.out.println(result); //70

       (4)boolean类型不能进行数据类型转换,是true就是true,很严格啊

4、ASCII表

‘0’ --> 48,'A' --> 65,'a' -->97

ASCII表

Unicode表,万国码,0~127和ASCII表中的完全一样,128之后还有很多字符,如中文

public class Demo03Char {
	public static void main(String[] args) {
		char ch1 = '1';
		System.out.println(ch1 + 0); //输出的是ASCII值
		char ch2 = 'a';
		int num = ch2; //可以复制,因为进行了自动数据类型转换,另外满足数据范围总小到大的原则
		System.out.println(num); //97
		}
	}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值