1.java语言中的几种数组复制方法效率排列顺序:System.arraycoppy>clone>copyof>for循环逐一复制。
2.如果希望监听TCP端口9000,应该怎样创建socket?
A.new Socket("localhost",9000);
B.new ServerSocket(9000);
C.new Socket(9000);
D.new ServerSocket("localhost",9000);
答案:选择B 因为监听端口是服务器端 所以排除AC 根据构造方法ServerSocket(int port)选择B
3.选择输出结果:
package algorithms.com.guan.javajicu;
public class Example {
String str =
new
String(
"good"
);
char[] ch = {
'a'
,
'b'
,
'c'
};
public static void main(String[] args) {
Example ex =
new
Example();
ex.change(ex.str, ex.ch);
System.out.print(ex.str +
"and"
);
System.out.print(ex.ch);
}
public void change(String str, char ch[]){
str=
"test ok"
;
ch[0]=
'g'
;
}
}
A.test okandabc
B.test okandgbc
C.goodandabc
D.goodandgbc
正确答案:D
解释:
java 中String是 immutable的,也就是不可变,一旦初始化,其引用指向的内容是不可变的。
也就是说,String str = “aa”;str=“bb”;第二句不是改变“aa”所存储地址的内容,而是另外开辟了一个空间用来存储“bb”;同时由str指向
原来的“aa”,现在已经不可达,GC时会自动回收。
因此String作为参数传进来时候,str= "test ok"; 实际给副本引用str指向了新分配的地址,该地址存储“test ok”。
因此,原先的str仍然指向“good”
区分基本数据类型和引用数据类型
基本数据类型:值传递
引用数据类型:引用传递 数组,类和接口。