优秀的编程知识分享平台

网站首页 > 技术文章 正文

java中 整数类型总结一(java中的整数类型)

nanyue 2024-10-25 13:24:30 技术文章 5 ℃

1、整数类型在java语言中共有四种:

1、byte 1个字节 最大值127

2、short 2个字节 最大值32767

3、int 4个字节 最大值2147483647

4、long 8个字节


1个字节 = 8个二进制位

1byte = 8bit

2、在java语言中整数型字面量有4种表示形式:

十进制 int a = 10 // 10

八进制 int b = 010 // 8

十六进制 int c = 0x10 //16

二进制 int d = 0b10 //2

3、在java中有一条非常重要的结论:在任何情况下,整数型的字面量默认被当做int类型处理,如果希望该整数类型被当做long类型来处理,主要在 字面量 后面添加 L/l

int a = 100;

上面这行代码会出现类型转换吗? 答案:不会

100这个字面量被当做int类型来出来

a变量也是int类型

int类型字面量赋值给int类型变量,不存在类型转换问题


4、分析下面代码是否存在类型转换。 long b = 200;

答案:存在类型转换

应为:200这个字面量,默认被当做int类型来处理。long类型占用8个字节,int类型占用4个字节。在java程序中小容量的可以自动转换成大容量的类型。称为自动类型转换。

5、分析下面代码是否存在类型转换。 long c = 300L;

答案:不存在类型转换

在整数字面量300后面加上一个L之后,300L联合起来就是一个long类型的字面量,

c变量也是long类型,所以long类型的字面量赋值给long类型的变量,是不需要类型转换的。

6、下面这行代码,编译器会报错吗 : long e = 2147483648;

答案:会报错

在java中整数字面量一上来就默认被当做int类型来处理

而2147483648已经超出了int的最大值,所以在没有赋值前就出错了。

记住,不是e放不下2147483648,e是long类型,完全可以放下2147483648。

只不过2147483648本身已经超出了int的最大值

7、大容量不能直接赋值给小容量,需要使用强制类型转换符进行强转。但需要注意的是:加强制类型转换符之后,虽然编译通过了,但是运行的时候可能会损失精度。下面我们来看一个精度丢失的情况

byte b1 = (byte)300;

int 类型 300的二进制:00000000 00000000 00000001 00101100

byte只占用一个字节既8个二进制位,所以int强转byte需要砍掉前面 三个字节:结果就是:00101100

00101100 --> 32 + 8 + 4 = 44

所以 :byte b1 = (byte)300; 强转之后的b1等于44


8、以下代码可以正常运行吗?byte b1 = 300;

答案:编译错误

字面量300默认是int类型,变量b1是byte类型的。int类型转byte类型属于大容量转小容量,所以需要加强制类型转换。所以编译会报错。

9、java中有一个重要的语法规则:当一个整数字面量的值没有超出byte类型的取值范围,那么这个字面量整数可以直接赋值给byte类型的变量。(short类型也是一样的)

byte b1 = 100; //可以正确编译和运行

short s1 = 100; //可以正确编译和运行

Tags:

最近发表
标签列表