栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java基本数据类型转换

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java基本数据类型转换

Java基本数据类型转换
    • 隐式类型转换:
      • 规则:
    • 强制类型转换:
      • 情况:
    • 类型转换注意事项:

byte < short = char < int < long < float < double
boolean不参与转换

System.out.println('a' + 0);//a是char类型 要向int类型转换
隐式类型转换:

小范围数据类型转换为大范围数据类型。
不同的数据类型之间不能进行运算,只有转化为同一种类型才可以进行运算。

规则:

1.比int小的都转化为int

class Demo {
	public static void main(String[] args){
		byte a = 10;
		short b = 20;
		byte c = a + b;  //编译报错 因为a+b的结果是int类型 大类型无法向小类型进行转换
		byte c = (byte) (a + b) ;//可以强制类型转换
		System.out.println(c);
	}
}

2.比int大的数据类型进行转换时,小范围数据类型会自动转为大范围数据类型

public class Demo {
	public static void main(String[] args) {
		long lo = 100L;
		double d = 3.14;
		int a = lo +d; // 编译报错  long和double运算  long会自动转double
		double dou = lo +d;
		System.out.println(dou);

		long lon = (long) (lo + d);
		System.out.println(lon);
	}
}
强制类型转换:

大范围数据类型强制转为小范围数据类型

情况:

1.大转小,大超小的范围,转过去之后数据发生改变,意义不大

		int a = 200;
		byte b = (byte)a;  // 强制类型转换
		System.out.println(b); // -56

2.大转小,大未超过小的范围,转过去之后数据不发生改变

		int c = 100;
		byte d = (byte)c; // 意义所在
		System.out.println(d); //100

3.浮点数转整数:
切掉小数部分

		double dou = 3.14;
		int i = (int)dou; //意义所在
		System.out.println(i);//3 
类型转换注意事项:

1.boolean不参与任何类型转换

boolean b = true;
int c = b; //编译报错 
int a = (int)b; //编译报错
System.out.println(a);

2.常量优化机制(基本类型中只有比int小的数据才有常量优化)
常量优化是为了小数据类的快捷运算

public class Demo {
	public static void main(String[] args) {
		System.out.println(100); // 默认是 int 类型 4个字节。

		byte b = 100; // 正确的。 100虽然是int的 但是他是一个常量数据。  常量优化机制 
			//底层 其实是这样的 byte b = (byte)100;

		int a = 100;
		byte c = a;  //错误的 因为a是变量  只有常量才有 常量优化机制。

		byte d = 80 + 20;  //正确的  常量优化
			// 常量的运算 在编译成class文件的时候,  就已经把 80+20  变成了100 
			// 也就是说 等这句话 编译到了class文件的时候 就变成了 byte d = 100;  就又符合常量优化机制了。
			//大的数据类型是在运行的时候完成运算,所以没有常量优化
		byte e = 80;
		byte f = e+20; //  编译报错  e是变量

		// 以上的特点 ---演示的都是 比int小的 基本类型常量。
		// 在基本类型里面 只有 比int小的数据 才遵循常量优化机制。  比int大的没有。

		System.out.println(3.14); // 默认是double类型

		float flo = 3.14;  // 编译报错 double转float 报错。    比int大的没有常量优化机制。

		// 所以我们为了在 一个 小数常量的时候  告诉jvm  我这个小数常量 不再是默认是 double类型了 所以 我们就在小数后面加一个 F
		System.out.println(3.14F);  // 是float类型

		float flo = 3.14F;

		System.out.println(b);
	}
}
  • ps
byte d = 10;
	d += 5;
	System.out.println(d);//不报错 为15,+=底层自带强制类型转换
int e = 10;
int f = e+=1;//不报错,先算表达式的结果,表达式都是有结果的

3.long类型要在数据结尾加L

public class Demo12 {
	public static void main(String[] args) {
		int a = 100;
		long lo = a;
		System.out.println(lo);

		long lo = 100;
		System.out.println(lo);

		System.out.println(10000); //默认是int类型     int类型的范围 21亿

		//System.out.println(10000000000); //100亿
		// 所以 我们此时 就想 写一个 比21亿大的数据
		// 你需要告诉jvm  我现在写的这个数 不再是 int类型的  而是long类型     你怎么告诉jvm  你只需要在后面加一个 L 就告诉他了。

		System.out.println(10000000000L);
	}
}	
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1014449.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号