1 / 49
文档名称:

面试常见考题 java基础(全).docx

格式:docx   大小:731KB   页数:49页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

面试常见考题 java基础(全).docx

上传人:1557281760 2018/12/2 文件大小:731 KB

下载得到文件列表

面试常见考题 java基础(全).docx

相关文档

文档介绍

文档介绍:J2SE基础
九种基本数据类型的大小,以及他们的封装类。
基本类型:boolean byte char short int long float double void
封装类型:Boolean Byte
基本类型
大小
范围
默认值
包装类型
boolean
1
True、false
False
Boolean
byte
8
-128 +127
0
Byte
char
16
Unicode0 unicode2^16 -1
'\u0000'
Character
short
16
-2^15 2^15-1
Short
int
32
-2^31 2^31-1
Integer
long
64
-2^63 2^63-1
Long
float
32
Float
double
64
Double
void
Void
基本数据类型与其对应的封装类由于本质的不同,具有一些区别:
基本数据类型只能按值传递,而封装类按引用传递。
基本类型在堆栈中创建;而对于对象类型,对象在堆中创建,对象的引用在堆栈中创建。基本类型由于在堆栈中,效率会比较高,但是可能会存在内存泄漏的问题。
2. Switch能否用string做参数?
在java7之前,switch只支持byte、short、char、int 或者其对应的封装类以及Eumn类型,
在java7中,String支持被加上了。
如在jdk 7 之前的版本使用, 会提示如下错误:
Cannot switch on a value of type String for source level below . Only convertible int values or enum variables are permitted
3. equals与==的区别。
值类型是存储在内存的栈中,引用类型的变量在栈中存放其引用类型变量的地址,其值存储在堆中。
== 比较的是两个变量的值是否相等,对于引用变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。
Equals 比较的是两个变量是否是对同一个对象的引用,即堆中的内容是否相同。
public class TestString {
public static void main(String[] args) {
String s1 = "Monday";
String s2 = "Monday";
if (s1 == s2)
("s1 == s2");
else
("s1 != s2");
}
}
创建对象之前会在字符串缓冲池中查找是否有此字符串常量,如果存在直接返回其引用,s1、s2两者的引用都是相同的。
public class TestString {
public static void main(String[] args) {
String s1 = "Monday";
String s2 = new String("Monday");
s2 = ();
if (s1 == s2)
("s1 == s2");
else
("s1 != s2");
if ((s2))
("s1 equals s2");
else
("s1 not equals s2");
}
}
本程序中的s1指向字符串缓冲区中的常量的引用,s2根据字符串缓冲区中的常量作为构造函数的参数,新建了一个对象并存储在内存中的另一个位置。(如果常量不存在与字符串缓冲区,则先在字符串缓冲区中建立常量,然后newString,这样就创建了两个对象!)
附:构造方法 original即为字符串缓冲池中得到的
public String(String original) {
= ;
= ;
}
java字符串缓冲池分析java字符串缓冲池分析:  java的虚拟机在内存中开辟出一块单独的区域,用来存储字符串对象,这块内存区域被称为字符串缓冲池。
到底创建了几个对象?1,0,2,1,1
String a = "abc";
String b = "abc"