Java面试宝典(一):JavaSE基础(5)——Java的数据类型

1、Java的基本数据类型都有哪些?各占几个字节?

四类 八种 字节数 数据表示范围
整型 byte 1 -128~127
short 2 -32768~32767
int 4 -2147483648~2147483647
long 8 -263~263-1
浮点型 float 4 -3.403E38~3.403E38
double 8 -1.798E308~1.798E308
字符型 char 2 表示一个字符,如('a','A','0','家')
布尔型 boolean 1 只有两个值true与false

2、String是基本数据类型吗?

String是引用类型,底层用char数组 实现的

3、short s1=1;s1=s1+1;有错吗?short s1=1;s1 += 1;有错吗?

前者不正确,后者正确。对于short s1=1;s1 = s1+1;由于1是int类型,因此,s1+1 运算结果也是int型,需要强制转换类型才能赋值给short型。而short s1 = 1; s1+=1;可以正确编译,因为s1+=1;相当于s1 = (short)(s1+1);其中有隐含的强制类型转换。

4、int和Integer有什么区别

Java是一个近乎纯洁的面向对象编程语言,但是为了编程的方便还是引入了基本数据类型,为了能够将这些基本数据类型当成对象操作, Java 为每一个基本数据类型都引入了对应的包装类型( wrapper class int 的包装类就是Integer ,从 Java 5 开始引入了自动装箱 拆箱机制,使得二者可以相互转换。

Java为每个原始类型提供了包装类型:

-原始 类型:boolean,char,byte,short,int,long,float,double

-包装类型:Boolean,Char,Byte,Short,Integer,Long,Float,Double

Java面试宝典(一):JavaSE基础(5)——Java的数据类型_第1张图片

5、String类常用方法

Java面试宝典(一):JavaSE基础(5)——Java的数据类型_第2张图片

6、String、StringBuffer、StringBuilder的区别

(1)可变不可变

String:字符串常量,在修改时不会改变自身;若修改,等于重新生成新的字符串对象。

StringBuffer:在修改时会改变对象自身,每次操作都是对 StringBuffer 对象本身进行修改,不是生成新的对象;使用场景:对字符串经常改变情况下,主要方法: append()  insert()等。

(2)线程是否安全

String:对象定义后不可变,线程安全。

StringBuffer:是线程安全的(对调用方法加入同步锁),执行效率较慢,适用于多线程下操作字符串缓冲区大量数据。

StringBuilder :是线程不安全的,适用于单线程下操作字符串缓冲区大量数据。

(3) 共同点

StringBuilder与 StringBuffer 有公共父类 AbstractStringBuilder( 抽象类 )。

StringBuilder、 StringBuffer 的方法都会调用 AbstractStringBuilder 中的公共方法,如 super.append(...) 。只是 StringBuffer 会在方法上加 synchronized 关键字,进行同步。最后,如果程序不是多线程的,那么使用StringBuilder 效率高于 StringBuffer 。

7、数据类型之间的转换

(1)字符串转基本数据类型

调用基本数据类型对应的包装类中的方法parseXXX(String)或valueOf(String)即可返回相应基本类型。

(2)基本数据类型如何转字符串

一种方法是将基本数据类型与空字符串("")连接(+)即可获得 其所对应的字符串,另一种方法是调用String类中的valueOf()方法返回相应字符串。

你可能感兴趣的:(Java技术)