Java基本数据类型及其类型转换

Java基本数据类型及其类型转换,第1张

Java基本数据类型及其类型转换

此篇博客只对内置数据类型进行了总结,有些规律是自己在摸索中总结出来的,并不能保证100%正确,可以和大家一起讨论。

目录

数据类型

隐含的强制类型转换

类型转换规则:

自动类型转换


数据类型 数据类型所占字节数最小值最大值默认值byte1个字节(8位)-1281270short2个字节(16位)-32768327670int4个字节(32位)-2,147,483,648(-2^31)2,147,483,647(2^31 - 1)0long8个字节(64位)-2^632^63 -10Lfloat4个字节(32位)
1.4E-45
3.4028235E38
0.0fdouble8个字节(64位)
4.9E-324
1.7976931348623157E308
0.0dchar2个字节(16位)0
65535
‘u0000’boolean1个字节(8位)falsetruefalse 隐含的强制类型转换

整数字面量默认位 int 型,小数字面量默认为 double 型。

类型转换规则:
  • 1. 不能对boolean类型进行类型转换。

  • 2. 不能把对象类型转换成不相关类的对象。

  • 3. 在把容量大的类型转换为容量小的类型时必须使用强制类型转换。

  • 4. 转换过程中可能导致溢出或损失精度,例如:

     int i =128;
     byte b = (byte)i;
    

    因为 byte 类型是 8 位,最大值为127,所以当 int 强制转换为 byte 类型时,值 128 时候就会导致溢出。

自动类型转换

(1)整型、实型(常量)、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算。

(2)转换从低级到高级。

低  ------------------------------------>  高

byte,short,char—> int —> long—> float —> double 

(3)byte,short,char之间进行运算时,都会先转化为int在进行计算。

(4)计算机可以自动将低类型转换为高类型,但是不能将高类型转换为低类型。

(5)当整数字面值没有超过byte,short,char,int范围时,可以直接赋值给byte,short,char,int。

(6) 当整数字面值没有超过int范围时,可以直接赋值给long,如果超过了int范围,但是没有超过long范围,可以在整数字面值后面加上L或l。

(7)小数字面值赋值给float时需要在小数末尾加上F或f。

例:

class A
	{
		public static void main(String[] a)
		{
			long b = 2147483648;
			System.out.println(b);
			//错误
			//2147483648超出了int型
			//应该在2147483648后面加上L
			byte c = 10;
			System.out.println(c);
			//正确
			byte d = c / 2;
			System.out.println(d);
			//错误
			//c/2做运算时,会被当做int处理,高类型不能赋值给低类型
		    long e = c / 2;
			System.out.println(d);
			//正确
			//c/2做运算,被当做int处理,低类型可以赋值给高类型,存在类型转换
			float f = 3.2;
			System.out.println(f);
			//错误
			//应该在3.2后面加上F或者f
			byte g = 2;
			byte h = 2;
			byte i = g + h;
			System.out.println(i);
			//错误
			//g和h都是byte类型,进行运算时都会先转化为int类型,结果也为int类型,int类型不能赋值给byte类型
			double j = 10 / 3;
			System.out.println(j);
			//正确,编译结果为3.0
			//10和3都是int类型,运算结果还是int类型,int类型可以转化为double类型,存在类型转换
			j = 10.0 / 3;
			System.out.println(j);
			//正确,编译结果为3.3333333333333335
			//10.0是double类型,3是整型,运算结果也是double类型
			byte k = 4;
			k = k + 4;
			System.out.println(k);
			//错误
			//k + 4的类型为int型,int类型无法转化成byte类型
			k+ = 4;
			System.out.println(k);
			//正确,编译结果为8
			//k+ = 4  ====>   k = (byte)(k + 4);
		}
		
	}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5691312.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存