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

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

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

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

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

目录

数据类型

隐含的强制类型转换

类型转换规则:

自动类型转换


数据类型
数据类型所占字节数最小值最大值默认值
byte1个字节(8位)-1281270
short2个字节(16位)-32768327670
int4个字节(32位)-2,147,483,648(-2^31)2,147,483,647(2^31 - 1)0
long8个字节(64位)-2^632^63 -10L
float4个字节(32位)
1.4E-45
3.4028235E38
0.0f
double8个字节(64位)
4.9E-324
1.7976931348623157E308
0.0d
char2个字节(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);
		}
		
	}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/690829.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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