Java八大基本数据类型

您所在的位置:网站首页 java基本数据类型有哪八种 Java八大基本数据类型

Java八大基本数据类型

2023-07-16 01:27| 来源: 网络整理| 查看: 265

1、数据类型

Java支持数据类型分为两类: 基本数据类型和引用数据类型。

基本数据类型共有8种,可以分为三类:

数值型:整数类型(byte、short、int、long)和浮点类型(float、double) 字符型:char 布尔型:boolean

8种基本数据类型的默认值、位数、取值范围,如下表所示:

Float和Double的最小值和最大值都是以科学记数法的形式输出的,结尾的“E+数字”表示E之前的数字要乘以10的多少倍。比如3.14E3就是3.14×1000=3140,3.14E-3就是3.14/1000=0.00314。

注意一下几点:

java八种基本数据类型的字节数:1字节(byte、boolean)、 2字节(short、char)、4字节(int、float)、8字节(long、double) 浮点数的默认类型为double(如果需要声明一个常量为float型,则必须要在末尾加上f或F) 整数的默认类型为int(声明Long型在末尾加上l或者L) 八种基本数据类型的包装类:除了char的是Character、int类型的是Integer,其他都是首字母大写 char类型是无符号的,不能为负,所以是0开始的 2、自动类型转换

转换规则:从存储范围小的类型到存储范围大的类型。简言之,由低到高。 具体规则为:byte→short(char)→int→long→float→double

经典面试题 1、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 +=1;有什么错?

答案:对于short s1 = 1; s1 = s1 + 1;来说,在进行s1 + 1运算时会自动提升表达式的类型为int,那么将int类型赋值给short类型的变量s1会出现类型转换错误。 对于short s1=1;s1+=1来说, +=是java语言规定的运算符,java编译器会对它进行特殊处理,因此可以正确编译。

2、char类型变量能不能储存一个中文的汉子,为什么?

答案: char类型变量使用的是Unicode编码的字符,Unicode字符集包含了汉字,所以char类型当然可以存储汉字,还有一种特殊情况就是某个生僻字没有包含在unicode编码字符集中,那么就char类型就不能存储该生僻字。

3、Integer和int的区别

答案: int是java的8种内置的原始数据类型。Java为每个原始类型都提供了一个封装类,Integer就是int的封装类。

int变量的默认值为0,Integer变量的默认值为null,这一点说明Integer可以区分出未赋值和值为0的区别,比如说一名学生没来参加考试,另一名学生参加考试全答错了,那么第一名考生的成绩应该是null,第二名考生的成绩应该是0分。关于这一点Integer应用很大的。Integer类内提供了一些关于整数操作的一些方法,例如上文用到的表示整数的最大值和最小值。

4、switch语句能否作用在byte上,能否作用在long上,能否作用在string上?

答案: byte的存储范围小于int,可以向int类型进行隐式转换,所以switch可以作用在byte上 long的存储范围大于int,不能向int进行隐式转换,只能强制转换,所以switch不可以作用在long上 string在1.7版本之前不可以,1.7版本之后switch就可以作用在string上了

5、基本数据类型和引用数据类型的区别?

答案:无

6、.64位的JVM当中,int的长度是多少?

答案:Java 中,int 类型变量的长度是一个固定值,与平台无关,都是 32 位。意思就是说,在 32 位 和 64 位 的Java 虚拟机中,int 类型的长度是相同的。

7、可以将int强转为byte类型么?会产生什么问题?

答案:可以做强制转换,但是Java中int是32位的而byte是8 位的,所以,如果强制转化int类型的高24位将会被丢弃,byte 类型的范围是从-128到128

8、判断输出结果

public static void say() { System.out.println(3 - 2.6 == 0.4);

} 答案:false ->int类型和float类型做运算会损失精度所以不等,可以System.out.println(3 - 2.6 )输出结果并不等于0.4

9、java 中 float f = 3.4; 是否正确?

答案:不正确,因为3.4是双精度类型属于double类型,而double类型范围大于float类型,如果想要赋给float类型必须强制转 换:float f=(float)3.4或者float f=3.4F

byte->short->int->long->float->double (范围从小到大)

10、输出结果?

byte a = 127; a+=5; System.out.println(a);

答案:124。首先byte取值范围-128~127 当a+=1时此时已经是超过了byte的临界值此时输出的为-128 、a+=2时输出 为-127,以此类推a+=5时输出为-124,只要记住这个技巧对于这个面试题就可以应对了。

11、为什么long l=2000000000可以,而long l=3000000000却编译报错

答案:因为在Java中二十亿和三十亿的默认类型都是int类型的,而二十亿是在int范围类的,三十亿不在int范围内,所以后面的long l=300000000会编译报错。解决方法:在三十亿后面加上一个大写或者小写的L

12、为什么 int a = 09;会报错

答案:因为在进制表示中0开头的表示八进制,而八进制中不能出现大于7的数!

13、int i = 3000000000; 编译能通过吗?原因是什么?(面试题)

答案:不能通过,因为三十亿在Java中的默认数据类型为int,而三十亿不在int能够表示的范围内,所以不能编译通过

14、输出结果?

int a=10; double b=3.4; System.out.println(a>b?a:b); System.out.println(a); //输出:10.0 10

15、输出结果?

int a=128; byte b=(byte)a; System.out.println(b);//输出-128,出现了数据溢出

double c=1.23; int d=(int)c; System.out.println(d);//输出1,精度丢失

16、输出结果?

运算时,运算结果会向较大的类型转换 int a=3; double b=4; System.out.println(a+b);//输出7.0

17、为什么 byte b=10b会报错?

答案:byte在java中表示字节,而b表示的是bit

参考博客:https://www.cnblogs.com/oldthree3/p/9088029.html 参考黑马程序员

本文如果存在错误,欢迎大家留言评论。。。。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3