我是靠谱客的博主 甜美秀发,最近开发中收集的这篇文章主要介绍Java基础语法(二)--数据类型转换,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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

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
		}
	}

 

最后

以上就是甜美秀发为你收集整理的Java基础语法(二)--数据类型转换的全部内容,希望文章能够帮你解决Java基础语法(二)--数据类型转换所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(57)

评论列表共有 0 条评论

立即
投稿
返回
顶部