☆来自网络,都是基础题目
☆
Please write the output result :
public class Test {
public static void changeStr(String str){
str="welcome";
}
public static void main(String[] args) {
String str="1234";
changeStr(str);
System.out.println(str);
}
}
答案
答案:1234
解释:String 是final型,不可改变的对象
☆
What is the result?
public class Test {
static boolean foo(char c) {
System.out.print(c);
return true;
}
public static void main( String[] argv ) {
int i =0;
for ( foo('A'); foo('B')&&(i<2); foo('C')){
i++ ;
foo('D');
}
}
}
A. ABDCBDCB
B. ABCDABCD
C. Compilation fails.
D. An exception is thrown at runtime.
答案
答案:ABDCBDCB(没有好解释的)
☆
Which two are valid in a class that extends class A? (Choose two)
class A {
protected int method1(int a, int b) { return 0; }
}
A. public int method1(int a, int b) { return 0; }
B. private int method1(int a, int b) { return 0; }
C. private int method1(int a, long b) { return 0; }
D. public short method1(int a, int b) { return 0; }
E. static protected int method1(int a, int b) { return 0; }
答案
答案:AC
重写的时候遵循以下几条规则:
1、子类中的方法与父类中的方法有相同的返回类型,相同的方法名称,相同的参数列表;
2、子类中的方法的访问级别不能低于父类中该方法的访问级别(即方法前的修饰 private protected public 级别从低到高),且父类private和static方法不可以被重写(一个static方法不能在一个子类中重写为非static方法,同样,一个非static方法也不能在子类中重写为static方法)
3、子类中方法抛出的异常的范围不能大于父类中方法抛出的异常的范围(即子类可以不抛出异常,或者抛出的异常是父类抛出的异常的子类)
因此,可以确定答案是AC,A是重写,C是重载
☆
Which instantiates an instance of Inner?
public class Outer {
public void someOuterMethod() {
// Line 3
}
public class Inner {
}
public static void main(String[] argv) {
Outer o = new Outer();
// Line 8
}
}
A. new Inner(); // At line 3
B. new Inner(); // At line 8
C. new o.Inner(); // At line 8
D. new Outer.Inner(); // At line 8//new Outer().new Inner()
答案
答案:A
解释:在外部类的之外定义内部类:
OuterClass.InnerClass innerObject=outerObject.new InnerClass(Constructor Parameters);
因此在第三行可以写成:new Inner();或者this.new Inner();
也可以在第八行写成:Inner i=o.new Inner();或者Outer.Inner i=o.new Inner();
☆
找错?
public class Test {
public Test(int a){
}
public static void main(String args[]){
Test t=new Test();
}
}
答案
Test t=new Test();这行编译不过
解释:如果只定义一个带参数的constructor,则lose缺省的无参数的constructor,new xx()会出错,系统不会自动产生默认的constructor
☆输出结果
System.out.println(1+'\2');
System.out.println(1+'2');
System.out.println(1+2+"3"+4+5);
答案
答案:
3
51
3345
解释:
字符编码表示法:即以斜杠“\”开始和字符编码的十六进制或八进制数组合在一起用单引号引起来的一个串。如字母A可表示为'\101'(十六进制)或'\u0041'(八进制)。这种表示法可以表示所有的Unicode中的字符。
至于最后一个:对于PrintStream的println有以下几种方法
public void println(boolean x)
public void println(char x)
public void println(int x)
public void println(long x)
public void println(float x)
public void println(double x)
public void println(char x[])
public void println(String x)
public void println(Object x)
'+'即可以作为算术运算符也可以作为字符连接符,最后一个其实就是看String a=1+2+"3"+4+5;a的值是多少。如果加上括号:String a=(((1+2)+"3")+4)+5;就可以看出只有第一个'+'是作为算术运算符的。
posted on 2008-03-08 17:53
破茧而出 阅读(696)
评论(1) 编辑 收藏 所属分类:
Java 、
七七八八