用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字

海大软件1102班    -  云代码空间

—— 你究竟输入什么了导致它崩溃?

7道Java笔试题

2013-01-31|1793阅||

摘要:1.写出程序运行结果    public class TestString { public static void link(String a){ a+="World"; } public static void main(String []args){

1.写出程序运行结果
  
public class TestString { 

    public static void link(String a){ 
         a+="World"; 
    } 
    public static void main(String []args){ 
         String a = "Hello"; 
         link(a); 
         System.out.println(a); 
    } 
} 

答: 这道题考两个方面:
1). String对象的内容是不能改变的,a+="World"并不是把a所指对象改变,
  而是先生成一个临时String对象,其值为a+"World",然后在把这个临时
  对象赋给a.
2). Java中函数参数传递方式为Call by value,link方法中会生产a的一个
  拷贝,同样指向a所指的对象,综合以上两点,得出结果为 Hello
 
2. 写出下面代码的结果
System.out.println("ja"+"va" == "java");
 
答:"=="用来比较对象的引用,而equals()用来比较对象的内容,但是如果是字符串常量,用"=="也可以比较内容
是否相等,"ja"+"va"和"java"都是字符串常量,因此结果为true
同理,下面代码结果也是true
 
final String str = "java";

System.out.println(str=="java")

 
3.继承时候类的执行顺序问题,一般都是选择题,问你将会打印出什么?
public class Parent { 
    //1 
    static int a = 1; 
    //2 
    static  
    { 
       a=10; 
       System.out.println("parent static code"); 
    } 
    //4 
    public Parent(){ 
      System.out.println("Parent constructor"); 
      System.out.println("Parent a ="+a); 
    } 
    public static void main(String []args){ 
      System.out.println("*****************"); 
      Parent c = new Child(); 
    }  
} 

public class Child extends Parent{ 
  
    static int a = 2; 
    //3 
    static { 
      a=20; 
      System.out.println("child static code"); 
    } 
    public Child(){ 
      System.out.println("Child constructor"); 
      System.out.println("Child var a="+a); 
    } 
}


输出结果:
parent static code 
***************** 
child static code 
Parent constructor 
Parent a =10 
Child constructor 
Child var a=20 

由此可看出在还没有实例化类的时候(注意*号)已经执行了static代码块。顺序是先父类后子类.然后才调用父类的构造方法,再调用子类的构造方法.就是这个顺序了.

4.内部类的实现方式:
public class OuterClass { 

    static int a; 
    int b; 
    private class InnerClass{ 
     public InnerClass(){ 
      System.out.println("InnerClass create:"+a); 
     } 
  } 
    public OuterClass(){ 
       InnerClass ic = new InnerClass(); 
       System.out.println("OuterClass create"); 
    } 
    public static void main(String []args){ 
        OuterClass oc = new OuterClass(); 
    } 
}

总结:

一.静态内部类可以有静态成员,而非静态内部类则不能有静态成员。 

二.静态内部类的非静态成员可以访问外部类的静态变量,而不可访问外部类的非静态变量; 

三.非静态内部类的非静态成员可以访问外部类的非静态变量
 
5. Float类型
public class TestFloat { 
  
    public static void main(String []args){ 
    Float a = new Float(3.4); 
    System.out.println(a.SIZE); 
    a = new Float(34000); 
    System.out.println(a.SIZE); 
    } 
}

让我们来看看此程序会输出什么呢?
我们先来看看JDK的解释吧.
public static final int SIZE The number of bits used to represent a float value.

 
意思是说:通常去描述一个float值的位数.
这个是一个常量,来看看源码吧:
 public static final int SIZE = 32;
final int 变量一旦被定义就不能被改变~
 
第二个Float类型题:
public class Test2
{
    public static void main(String[] args)
    {
        float a = 3.4;
    }

}

这个简单的程序能不能编译通过呢?
其实是不能的。
原因是精度问题,应该用强制类型转换.
float a = (float)3.4;

再来看看这个能不能编译通过
public class Test2
{
    public static void main(String[] args)
    {
        Float a = new Float(3.4);
        
    }

}


其实是没问题的。
我们来看看Float类的源代码吧:
public Float(double value) {
    this.value = (float)value;
    }



其中有一个构造方法在方法里已经进行了向下转型。
所以这样写是没有问题的.
 
6.选出用法错误的: 
a: Stirng a ="Gone With Wind"; 
String t= "Wind"; 
String m; 
m=a-t; 
B: Stirng a ="Gone With Wind"; 
String m ; 
m=a[3]+"one"; 
C: Stirng a ="Gone With Wind"; 
Sting m; 
m=a.toUpperCase(); 
D: 不记得了 


7.此程序会输出什么?
public class A { 
   //3 
    public A(){ 
       a1(); 
    } 
    public void a1(){ 
      System.out.println("A-a1"); 
    } 
} 

public class B extends A{ 

    int bb = 0; 
    //2 
    public B(){ 
    //5 
  bb=1000; 
    } 
    //4 
    public void a1(){ 
  System.out.println("bb is"+bb); 
  System.out.println("B-a1"); 
    } 
    public static void main(String []args){ 
  new B(); 
    } 
} 

答案:
bb is 0
B-a1
看看执行顺序就明白了.
在方法被a1()被重写的情况下,父类的a1是没有机会
被调用的.
顶 0踩 0收藏
文章评论
    发表评论

    个人资料

    • 昵称: 海大软件1102班
    • 等级: 初级设计师
    • 积分: 2516
    • 代码: 147 个
    • 文章: 70 篇
    • 随想: 11 条
    • 访问: 242 次
    • 关注

    站长推荐