面试者需要掌握以下知识点:
在Java程序中,总共有8大基本类型,包括4种整型,1种字符型,2种浮点型,1种布尔型,除了这几种基本类型之外,其他都属于复合类型。
总的来说Java数据类型分为基本数据类型、复合数据类型。
基本数据类型分为:数型值、字符型(char)、布尔型(boolean)。
数值型分为:整型和实型。
整型分为:字节型(byte)、短整型(short)、整型(int)、长整型(long)
实型分为:单精度(float)、双精度(double)
复合数据类型分为:数组、类、接口。
面试题一:int和Integer有什么区别?
参考答案:Java提供两种不同的类型:引用类型和原始类型。int是Java的原始数据类型,Integer是Java为int提供的封装类。Java为每个原始类型提供了封装类。原始类型封装类,例如,Boolean是boolean的封装类;Character是char的封装类;Byte是byte的封装类;Short是short的封装类;Integer是int的封装类;Long是long的封装类;Float是float的封装类;Double是double的封装类。引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有不同的特征和用法,它们包括大小和速度问题、这种类型以哪种类型的数据结构存储、当引用类型和原始类型用作某个类的实例数据时所指定的默认值。对象引用实例变量的默认值为null,而原始类型实例变量的默认值与它们的类型有关。
面试题二、给出下面的代码,哪个叙述是正确的?
public class IntArray{
static int arr[]=new int[10];
public static void main(String[] args){
System.out.println("arr[1]");
}
}
A.输出为0
B.没有结果输出
C.编译时将发生错误
D.编译时正确但是运行时发生错误
试题分析:在本题中arr是个int型数组,数组是类对象,属于复合数据类型。它在类被加载时完成初始化,由于arr[1]是一个原始数据类型int数据,其初始值为0.
参考答案:A
面试题三:判断表达式的正误
short s1=1;s1=s1+1;有什么错?short s1=1;s1+=1;有什么错?
试题分析:这道题目主要考察了各数据类型之间的相互转换。要区分自动类型转换和强制类型转换。
参考答案:第一个表示中s1+1运算结果是int型,需要强制转换类型
第二个类型可以正确编译,可以强制类型转换。
面试题四:选出对float变量的合法声明
下面选项中表示的是对float型变量的声明,请选择哪些是正确的?
A.float fa=-586;
B.float fb=3.1415;
C.float fc=0xA4E
D.float fd=42e1.2L;
E.float fe=52.08D;
F.float ff=5.88F;
试题分析:浮点常量默认为双精度数,如果需要指定为单精度数,需要在末尾加上F或f。
参考答案:ACF
面试题五:char型数据的取值是多少?
A.-128~127
B.0~32767
C.由平台决定
D.0~65535
参考答案:D
面试题六、根据给出的代码,选择正确的答案:
class AA{
public char c;
public AA(char i) {
c=i;
}
public static void main(String[] args) {
AA c1=new AA('1');
AA c2=new AA('1');
AA c3=c2;
char a='1';
int b=1;
}
}
A.a==b
B.a==c1
C.c2==c3
D.c1==c2
试题分析:基本类型进行的是值比较,而对象类型进行的是地址比较,也就是指向它们内存地址的指针进行比较
参考答案:C
面试题七:char型变量能不能存储一个汉字?为什么?
参考答案:char 型变量能够存储一个汉字,因为Java采用的Unicode编码,一个char占16个位,而一个中文汉字只有两个字节,所以放一个汉字是没用问题。
面试题八:下面选项对boolean型变量的声明,请选择哪些选项是正确的?
A.boolean b1;
B.boolean b2=1;
C.boolean b3='true';
D.boolean b4=false;
E.boolean b5=Boolean.false();
试题分析:布尔类型是最简单的一种数据类型,布尔型变量是用关键字boolean来定义且布尔型数据只有两个值:true和false,分别表示“真”和“假”。在Java中,布尔类型是不能转换为int型。
参考答案:AD
面试题九:基本数据类型与String类型之间的转换
表达式10.4+"4.2"的结果是什么?
A.返回double类型14.6
B.返回String类型“14.6”
C.返回long类型14
D.返回String类型“10.44.2”
试题分析:当+运算符两侧的操作数的类型不一致时,需要统一类型,这时就会发生类型转换。当一个操作数为原始数据类型,另外一个为字符串时,则基本类型的操作数要转换为等价的字符串,这时“+”不再是加运算符而是连接符。
参考答案:D
面试题十:选择正确的结果
运行下面的代码,正确的结果是哪一个?
public class Test{
public static void main(String[] args) {
int x=1;
Test rt=new Test();
System.out.print("x1="+x);
rt.setValue(x);
System.out.print("x3="+x);
}
public void setValue(int x) {
x=x+1;
System.out.print("x2="+x);
}
}
A.x1=1 x2=2 x3=1
B.x1=1 x2=0 x3=2
C.x1=1 x2=1 x3=1
D.不能编译
参考答案:A
面试题十一:
在下面程序标明的位置处插入哪条语句会导致编译错误
public class FinalUse{
public static void main(String[] args) {
int x=0;
final int y=1;
int[] z= {2};
final int[] n= {3};
Use(x,y,z,n);
}
static void Use(final int x,int y,final int[] z,int[] n) {
//插入内容
}
}
A.x++
B.y++
C.y=x
D.z[0]++
E.n[0]++
F.z=n
参考答案:AF