Java试题

Java试题
      ☆来自网络,都是基础题目

      ☆ 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;就可以看出只有第一个'+'是作为算术运算符的。

你可能感兴趣的:(Java试题)