1.下列哪种说法是正确的()
A.实例方法可直接调用超类的实例方法
B.实例方法可直接调用超类的类方法
C.实例方法可直接调用其他类的实例方法
D.实例方法可直接调用本类的类方法
分析:类方法指的是用static关键字修饰的方法,而实例方法就是相对于类方法的其它方法
当类的字节码文件被加载到内存时,类的实例方法不会被分配入口地址,当该类创建对象后,
类中的实例方法才分配入口地址,从而实例方法可以被类创建的任何对象调用执行。需要注意的是,
当我们创建第一个对象时,类中的实例方法就分配了入口地址,当再创建对象时,不再分配入口地址,
也就是说,方法的入口地址被所有的对象共享,当所有的对象都不存在时,方法的入口地址才被取消。
对于类中的类方法,在该类被加载到内存时,就分配了相应的入口地址。从而类方法不仅可以被类创建
的任何对象调用执行,也可以直接通过类名调用。类方法的入口地址直到程序退出才被取消。
对于A,不可以调用父类的private实例方法。因为private修饰的方法只有本类对象才可以调用
对于B,类方法只有本类才可以调用
对于C,跟A相同,比A更离谱
D是正确的
2.下列语句哪一个正确( )
A.Java程序经编译后会产生machine code
B.Java程序经编译后会产生byte code
C.Java程序经编译后会产生DLL
D.以上都不正确
解析:.java文件编译后是字节码,即.class文件,然后java虚拟机把.class文件翻译成字节码,让cpu来调用。这也是跨平台性的体现。所以答案是B
3.Java中将ISO8859-1字符串转成GB2312编码,语句为 ?
A. new String(String.getBytes("ISO8859-1"),GB2312)
B.new String(String.getBytes("GB2312"),ISO8859-1)
C.new String(String.getBytes("ISO8859-1"))
D.new String(String.getBytes("GB2312"))
解析:JAVA有一个public String(byte bytes[], Charset charset)函数可以用指定字节数组和编码来构造字符串。一个public byte[] getBytes(Charset charset)函数把字符串按指定编码来得到字节数组。可以用这两个函数来实现编码转
换。选A
4.下面函数将返回?
public static int func (){
try{
return 1;
}catch (Exception e){
return 2;
}finally{
return 3;
}
}
A.1 B.2 C.3 D.编译错误
解析:finally一般和try{}catch{}配套使用,try和catch执行之后总会执行finally.并且finally会覆盖前者的return。(当try和catch中有System.exit()语句时,则不会执行finally)
5.下列关于容器集合类的说法正确的是?
A.LinkedList继承自List
B.AbstractSet继承自Set
C.HashSet继承自AbstractSet
D.WeakMap继承自HashMap
解析:List、set、Map都是借口,list和set集成了Collection类。A和B应该说实现了接口而不是继承。C是正确的
6.
解析:实现会话跟踪的机制
Cookies,URL重写,隐藏式表单域,Session机制
Cookies
Cookies是使用最广泛的会话跟踪机制,Cookies是有服务器创建,并把Cookies信息保存在用户机器上的硬盘上,下次用户再次访问该站点服务器的时候,保存在用户机器上硬盘的Cookies信息就被送回给服务器。一般Cookies一般不多于4KB,且用户的敏感信息如信用卡账号密码不应该保存在Cookies中。
URL重写
URL重用户在每个URL结尾附加标识回话的数据,与标识符关联的服务器保存有关与会话的数据,如我们访问某个新闻的时候,在地址栏我们一般会看到这样的信息:http://www.XXX.com/news?id=??,通常的话id后面的问号表示该条新闻在后台数据库中的新闻表的id。URL重写能够在客户端停用cookies或者不支持cookies的时候仍然能够发挥作用。
隐藏表单域
通常,在表单中我们使用隐藏表单域的时候会有这么一句代码:。通过给type属性赋值为hidden值来实现隐藏,这样用户在浏览的时候看不到这行代码的数据,但是当用户通过查看源代码还是可以看到的。
Session机制
这个机制要慎用,特别是对于访问量很大的站点,因为这种机制是吧Session信息保存在服务器端。如果访问量特别大的话,对于服务器的承受力的要求有多高是可想而知的。
7.以下代码将打印出(C)
public static void main (String[] args) {
String classFile = "com. jd. ". replaceA11(".", "/") + "MyClass.class";
System.out.println(classFile);
1)replace的参数是char和CharSequence,即可以支持字符的替换,也支持字符串的替换(CharSequence即字符串序列的意思,说白了也就是字符串);
2)replaceAll的参数是regex,即基于规则表达式的替换,比如,可以通过replaceAll("\\d", "*")把一个字符串所有的数字字符都换成星号;
题目中“.”,在正则表达式中表示任何符号,所以答案是C,五个字母,2个点号,两个空格被代替。
8.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
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'
;
}
}
|
解析:String类是final类型的,不能继承和修改这个类。str=“teskok”,其实是隐含的让Java生成一个新的String对象,那么就与原来的“Hello”没有任何关系,当函数结束,str作用结束.ch[]是值传递,所以可以改变。
9.下列程序的运行结果(A)
1
2
3
4
5
6
7
8
9
10
11
|
public
void
getCustomerInfo() {
try
{
// do something that may cause an Exception
}
catch
(java.io.FileNotFoundException ex) {
System.out.print(
"FileNotFoundException!"
);
}
catch
(java.io.IOException ex) {
System.out.print(
"IOException!"
);
}
catch
(java.lang.Exception ex) {
System.out.print(
"Exception!"
);
}
}
|
解析:
1) 必须在 try 之后添加 catch 或 finally 块。try 块后可同时接 catch 和 finally 块,但至少有一个块。
2) 必须遵循块顺序:若代码同时使用 catch 和 finally 块,则必须将 catch 块放在 try 块之后。7) 除了下列情况,总将执行 finally 做为结束:JVM 过早终止(调用 System.exit(int));在 finally 块中抛出一个未处理的异常;计算机断电、失火、或遭遇病毒攻击
由此可以看出,catch只会匹配一个,因为只要匹配了一个,虚拟机就会使整个语句退出
解析:Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的,这在实际使用时存在很多的不便,为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表,即包装类。对应的基本类型和包装类如下表:
基本数据类型 |
包装类 |
byte |
Byte |
boolean |
Boolean |
short |
Short |
char |
Character |
int |
Integer |
long |
Long |
float |
Float |
double |
Double |