1.       比较
a)         1L <<35;
b)        1<<35;
c)        1<<4
的大小?
2.       Class Student{
private String name;public Boolean nameDuplicate(Student student){
        if(this.name == student.name){
     return true;
        }else return false;
}
}
问nameDuplicate方法中能否直接调用student的name私有字段?
3.       short 类型需要几个字节?
4.       双精度指的是什么?精度有多少?
5.       三个特殊的浮点数是什么?
6.       如何判断一个变量是数字?
7.       goto功能如何实现?
8.       一个源文件中public类数量是否有限制?
9.       是否存在私有类?
10.   有没有一种情况可以访问另一个类的私有字段?
11.   是否可以定义与构造器同名的方法?
12.   Java的参数传递是哪种?传值,传地址,基本数据类型传值、对象传地址?
a)         通过Java参数传递,是否可以改变基本数据类型的值?
b)        是否可以改变对象的状态?
c)        是否可以创建对象?
13.   只写一个类不写main方法,能否像控制台输出“Hello World”。
14.   Java程序对final实例字段有何要求?
15.   如何利用Java反射机制创建一个“实例化时需要参数的”对象?
16.   protected的实例字段的可见范围?
17.   深度克隆和浅克隆的区别?
18.   何谓方法的隐式参数和显示参数?
19.   Date类跟GoreignCalendar类的关键区别?String和StringBuffer?
20.   如何编写判断两个对象的方法?

解决方案 »

  1.   

    我面试过不少,有的是华为工作几年的,有的是“超强”的优秀毕业研究生等等。能答对并解释清楚原因的,未必有哦!也许你能答出,不见得答对哦!答对,不见得能讲清楚原因!这些讲不清楚的,就是基础!如果你能讲清楚,哇塞!值得敬佩,至少是很踏实的!不代表高水平哦,因为这只是基础题!跟我一道呼吁基础的重要性吧!现在国外的技术专家已经不推荐大学生学习Java了,因为Java程序员更多的是使用“轮子”,而不是发明“轮子”。对于编程的底层知识几乎触摸不到!这种情况下,希望我们能够更注重基础!其实一些比较崇尚技术的公司,你知道的,都很注重基础。尤其是大公司真正做Java EE的,更是注重基础。我们老大,自己做了一个商用的J2EE 1.4的容器,他面试,也很注重基础。开源框架不算是基础,会用不代表什么,只能说明有经验,仅此而已。因此,强烈呼吁!不可浮躁,踏踏实实!不可实用主义!
      

  2.   

    楼主是面试官啊,华为的都主要玩C的,他们当然不是很清楚这些东西了,而且你这些题目,我觉得都很不入流.
    比如这道:
    双精度指的是什么?精度有多少? 谁记这个啊? 大学女生才有可能在这个条目下划红线.我都不是做Java的人,答对你这些问题的一半也觉得很有把握,但是我觉得答对全部的人,也未必就说明问题,因为这些题目不怎么样.
      

  3.   

    只写一个类不写main方法,能否像控制台输出“Hello World”。 
    这个我没看懂,没有main怎么执行呢?
      

  4.   

    oooooo! 可以写成applet 或者 servlet 让容器去执行! 呵呵!
      

  5.   

    applet无法获取控制台, servlet的main在JavaEE的容器里. 这两个答案也许是楼主要的, 楼主要的要是这种答案, 是不是有点牵强啊?
      

  6.   


    放在静态方法里 然后system.exit(0)? 好像是这样 括号里有没有0忘了
      

  7.   

    说实话,这些也许刚学java没多久的倒会回答.学久的人就容易想过头.
      

  8.   

    一个完整的Java程序没有main怎么可能执行呢? 还是有我不知道的东西.我知道一个汇编/C/C++程序,你只要指定了EntryPoint就可以不需要写main函数了. Java也可以嘛?
      

  9.   

    放在静态块里 不是方法public class Test {
    static {
     System.out.print("no main");
     System.exit(0);
     }
    }
      

  10.   

    哈哈 其实在我刚知道类的初始化顺序我就想过不写main来输出内容 但是会出错 因为我不知道可以用system.exit(0);来结束程序 
      

  11.   

    学习 up up
    哈哈,记住这些是不行的,关键要吃透,就比如写一个没有main还能跑的java application一样
    我们的口号是:学习java,从《java核心技术》开始
      

  12.   

    不用main方法执行程序可以用其它语言来调用java的类。好像是jni的一种技术。
    核心技术写的很细,要看很多遍的。
      

  13.   

    to: #  bootupnow
    今天是清明...你还是别拜我了...
      

  14.   

    JAVA2核心技术,是本好书,讲的很细,非常适合初学者。
      

  15.   

    除了 static {
    }
    用 java 5的动态代理也可以,不过复杂多了! 呵呵!
      

  16.   

    今天又对jvm的装载机制有了进一步的了解!学无止境啊!!!
      

  17.   

    3.       short 类型需要几个字节?                   答案:2个                 
    4.       双精度指的是什么?精度有多少?                  :double类型,精度:8 -1.7E308~1.7E308 
    5.       三个特殊的浮点数是什么?                        :不知道
    6.       如何判断一个变量是数字?                        :好象在lang包里有个方法可以判断
    7.       goto功能如何实现?                             :goto是关键字可以用break label实现goto的功能
    8.       一个源文件中public类数量是否有限制?           :不知道
    9.       是否存在私有类?                                :有,内部类就是
    10.   有没有一种情况可以访问另一个类的私有字段?          :给它个PUBLIC 的GET方法
    11.   是否可以定义与构造器同名的方法?                    :这个到没试过
    12.   Java的参数传递是哪种?传值,传地址,基本数据类型传值、对象传地址?   :值传递
    a)         通过Java参数传递,是否可以改变基本数据类型的值?                :不可以吧
    b)        是否可以改变对象的状态?                                         :不可以
    c)        是否可以创建对象?                                                :可以
    13.   只写一个类不写main方法,能否像控制台输出“Hello World”。          :JSP就可以
    14.   Java程序对final实例字段有何要求?                                   :必须初始化
    15.   如何利用Java反射机制创建一个“实例化时需要参数的”对象?             :不知道
    16.   protected的实例字段的可见范围?                                     :继承的可以访问
    17.   深度克隆和浅克隆的区别?                                             :听说过这个词,但不清楚
    18.   何谓方法的隐式参数和显示参数?                  :是不是用THIS调用出来是前者,反之是后者
    19.   Date类跟GoreignCalendar类的关键区别?String和StringBuffer?      :GregorianCalendar 是
                                                                                  Calendar 的一个具体子
                                                                    类提供了世界上大多数国家使用的标准日历系。
    20.   如何编写判断两个对象的方法?                                     :用equest方法
    以上是我个人的回答,还不知道正不正确,请各位DX多多指教
      

  18.   

    static ...切...偶都会了...
    就是实现方法多了去了
      

  19.   

    正无穷 xx/0 负无穷 -xx/0  还一个NaN吧 0/0或者负数开根号
      

  20.   


    楼主想法很好,可是这些问题还是很浮躁啊,不如直接考编译原理和数据结构好了。从底层(基础知识如数据结构和编译原理)看楼主问的问题都只是表象、细节而已,大部分都不需要记忆,碰到问题的时候知道到哪里找就可以了。
    另外我比较感兴趣的是:12.   Java的参数传递是哪种?传值,传地址,基本数据类型传值、对象传地址? 我确定一定以及肯定清楚答案,但是我很怀疑楼主也清楚。
      

  21.   

    10.   有没有一种情况可以访问另一个类的私有字段? 利用反射可以访问任何一个类的私有字段.
    15.   如何利用Java反射机制创建一个“实例化时需要参数的”对象?  在反射包中有一个专门的处理构造器的类,只要给定参数模板就可以通过这个构造器类实例化新的对象出来。
      

  22.   

    "有没有一种情况" 我想这个情况是不是考的内部类啊 如果问访问另一个类私有字段的方法 应该是用的反射了 当然也可以用那位兄弟说的给个public的get方法
      

  23.   

    答案仅共参考。1.       比较 
    a)         1L  < <35; 
    b)        1 < <35; 
    c)        1 < <4 
    的大小? 
    答:a最大。b最小。c中间大。理由:1L<<35等同于1L<<(35%64);1<<35等同于1<<(35%32)即1<<32.       Class Student{ 
    private String name; public Boolean nameDuplicate(Student student){ 
            if(this.name == student.name){ 
         return true; 
            }else return false; 


    问nameDuplicate方法中能否直接调用student的name私有字段? 
    答:当然可以。理由:private是在类的层次而不是对象的层次进行保护的。3.       short 类型需要几个字节?     
    答:2个。理由:JAVA中就这么规定的。    
                  
    4.       双精度指的是什么?精度有多少?
    答:double类型,保证15位有效数字的精度。5.       三个特殊的浮点数是什么?
    答:正无穷Double.POSITIVE_INFINITY,负无穷Double.NEGATIVE_INFINITY ,保持 double 类型的非数字值Double.NaN
    6.       如何判断一个变量是数字?
    答:若是判断一个字符串变量vs是不是整数值:可用:
              try{
                           int v = Integer.parseInt(vs);
                        }
                       catch(NumberFormatException e){
                            System.out.println("不是数值。");
                          }
    说明:或者使用“正则表达式”亦可。                       
    7.       goto功能如何实现?  
    答:使用带标号的break语句。如:break label 实现goto的功能。 
    理由:JAVA中已取消了goto语句(但保留了goto这个保留字。)goto语句存在的价值是从嵌套较深的循环中一下子跳出来。
    8.       一个源文件中public类数量是否有限制?
    答:当然有。只能有一个。
    理由:JAVA源程序取名时,扩展名是 .java,但文件名必须与public类的类名相同。故最多只能定义一个(最少0个。)。
       若没有public类则文件名可从源程序中的类名随便取一个来用。9.       是否存在私有类? 
    答:如:对内部类的定义。
     
    10.   有没有一种情况可以访问另一个类的私有字段?
    答:当然可以。典型情况:非static型内部类就可以访问外部类的一切成员。(含:private型)这也是内部类存在的价值之一。
            
    11.   是否可以定义与构造器同名的方法?
    答:当然可以。12.   Java的参数传递是哪种?传值,传地址,基本数据类型传值、对象传地址?
    答:值传递机制 
    a)         通过Java参数传递,是否可以改变基本数据类型的值?
    答:不能。  理由:值传递机制b)        是否可以改变对象的状态?
      答:可以。 理由:对象的状态是由其数据成员表达的。而数据成员的值是可以用方法来修改的。 
    c)        是否可以创建对象? 
    答:可以。
     
    13.   只写一个类不写main方法,能否像控制台输出“Hello World”。 
    答:当然可以。理由:用类的初始化块 static{ System.out.println("Hello World");}14.   Java程序对final实例字段有何要求?
    答: 一定要初始化。最好在定义的同时就进行初始化。
     
    15.   如何利用Java反射机制创建一个“实例化时需要参数的”对象?
    答:若一个类MyClass定义了一个带有int类型参数的构造器:
      public MyClass(int i)
    {...}
    则用反射机制创建一个“实例化时需要参数的”对象如下:
    Class cls = Class.forName("MyClass");
    Constructor cl= cls.getConstructor(int.class);
    MyClass t12=(MyClass)cl.newInstance(20);
    16.   protected的实例字段的可见范围?
    答:子类或同一个包。     17.   深度克隆和浅克隆的区别?   
    答:浅克隆只复制对象自身的二进制位图。源对象与克隆产生的对象都引用相同的其它资源。
    深度克隆不仅是复制对象自身,而且源对象所引用的其它对象(或资源)都要递归地进行克隆复制。 
    18.   何谓方法的隐式参数和显示参数? 
    答:this是隐含传递给对象的方法的(类方法是不隐含传递的)。显式参数:程序员自己明确定义的方法参数。 
    19.   Date类跟GoreignCalendar类的关键区别?String和StringBuffer? 
    答:1)Date类跟GoreignCalendar类的关键区别是:国际化。Date类不易国际化。而GregorianCalendar 是
     Calendar 的一个具体子类,提供了世界上大多数国家使用的标准日历系统。
      2)String和StringBuffer:String是一个字符串常量。可能产生修改串的操作都会生成一个新的String对象。
        而:StringBuffer是可以进行插入、删除、修改等操作,都是在自身上进行的。不产生新的StringBuffer对象。
    20.   如何编写判断两个对象的方法?
    答:obj1.equals(obj2)
      

  24.   

    6.       如何判断一个变量是数字? 
    答:若是判断一个字符串变量vs是不是整数值:可用: 
              try{ 
                           int v = Integer.parseInt(vs); 
                        } 
                       catch(NumberFormatException e){ 
                            System.out.println("不是数值。"); 
                          } 
    说明:或者使用“正则表达式”亦可。 
    c)        是否可以创建对象?  
    答:可以。 
    19.   Date类跟GoreignCalendar类的关键区别?String和StringBuffer?  
    答:1)Date类跟GoreignCalendar类的关键区别是:国际化。Date类不易国际化。而GregorianCalendar 是 
     Calendar 的一个具体子类,提供了世界上大多数国家使用的标准日历系统。 
      2)String和StringBuffer:String是一个字符串常量。可能产生修改串的操作都会生成一个新的String对象。 
        而:StringBuffer是可以进行插入、删除、修改等操作,都是在自身上进行的。不产生新的StringBuffer对象。 
    20.   如何编写判断两个对象的方法? 
    答:obj1.equals(obj2) 除了以上几个,都比较准确。
      

  25.   

    c)        是否可以创建对象?   
    答:可以。 不一定可以。若类的构造器定义为private呢?
      

  26.   


    不对。即使定义为private,还是不能阻止在本类自身中按需要再去创建对象啊。
      

  27.   

    这些东西对写Core的成员来说还是非常有必要的,其他的软件工人除了数字判断和StringBuffer仿佛没有太大用处。
      

  28.   

    7. goto功能如何实现?   
    我觉得这个无法实现 goto是随意跳转 break 或continue能跳转到的位置都是有限的
      

  29.   

    仔细读过Core Java2 Volumn I Fundamentals(Java 2 核心技术 卷I:原理)书的,站出来把最后几个不准确的答案也给修复了吧!
      

  30.   

    楼上都说了用label加break、continue了嘛。当然可以实现goto。不过话说回来,很早很早以前就有人论证过while+if+顺序就能搞定一切,现在还在这里讨论goto的替代方法真是.....
      

  31.   


    话不能这么讲, 有的时候用goto, 代码反而会简洁, 那这个时候就该用goto. 
      

  32.   

    但是怎么我运行的时候它说“no main”呢?
      

  33.   


    麻烦你告诉我这种用break continue如何实现 int[][] num=new int[10][10];
    num[3][2]=432;
    num[3][8]=54;
    num[2][6]=83;
    num[2][9]=792;
    int i,j,k;//还有N多
    for(i=0;i<10;i++){
    aa:
    if(num[i][5]==0&&num[i][7]==0){
    num[i][5]=234;
    num[i][7]=395;
    }
    }
    for(j=0;j<10;j++){
    bb:
    if(num[j][6]==0&&num[j][8]==0){
    num[j][6]=425;
    num[j][8]=624;
    break;
    }else{
    num[i][5]=0;
    num[i][7]=0;
    i++;
    goto aa;
    }
    }
    for(k=0;k<10;k++){
    cc:
    if(num[k][3]==0&&num[4][k]==0){
    num[k][3]=52;
    num[4][k]=974;
    break;
    }else{
    num[j][6]=0;
    num[j][8]=0;
    j++;
    goto bb;
    }
    }
    ……………………
      

  34.   

    int[][] num=new int[10][10];
    num[3][2]=432;
    num[3][8]=54;
    num[2][6]=83;
    num[2][9]=792;
    int i,j,k;
    for(i=0;i<10;i++){
    aa:
    if(num[i][5]==0&&num[i][7]==0){
    num[i][5]=234;
    num[i][7]=395;
    }
    }
    for(j=0;j<10;j++){
    bb:
    if(num[j][6]==0&&num[j][8]==0){
    num[j][6]=425;
    num[j][8]=624;
    break;
    }
    if(j==9){
    num[i][5]=0;
    num[i][7]=0;
    i++;j=0;
    goto aa;
    }
    }
    for(k=0;k<10;k++){
    cc:
    if(num[k][3]==0&&num[4][k]==0){
    num[k][3]=52;
    num[4][k]=974;
    break;
    }
    if(k==9){
    num[j][6]=0;
    num[j][8]=0;
    j++;k=0;
    goto bb;
    }
    }
      

  35.   

    反正大概意思就是要从一个循环体内调到另一个循环体内 用continue break 可以吗
      

  36.   

    先问一句:
    对于对象的getter方法(俗称:对象访问器)如果对象的一个field的类型为GoreignCalendar,那么这个访问器的方法应该如何实现?为什么?
      

  37.   


    10.   有没有一种情况可以访问另一个类的私有字段? 
    也就这道题有点儿技术含量。
    我知道有两种,一种是授予特权(privliage)的方式,我不会写,在网上看到过代码,应该能找得到。
    第二种是JNI,在本地代码里可以任意访问。
      

  38.   

    public class test {
        static{
         System.out.println("你好!");
         System.exit(0);
        }
    }
    这样也不能向控制台输出数据吧,没main方法怎么执行啊,真是的,只能编译,编译又输出不了数据
      

  39.   

    LZ一味的说XXXX不对,也不说出哪里不对,恐怕难以服众.之所以很多人做这些题目正确率低于50%,很有可能是思考角度跟你不同,与其说这些题目考的是别人的基础,还不如说是测试他在这方面思考方式是不是跟你相同.
      

  40.   


    从设计上讲,访问器要返回不可变对象,否则使用访问器的客户获得了GoreignCalendar以及StringBuffer这样的对象的句柄后,就可以不用通过setter(设置器)就可以改变包含GoreignCalendar类型field的对象的状态,相当于打破了封装。这个道理跟J2EE1.4里面的客户端可以获得EJBObject(EJB Bean代理)的效果是类似的。大家知道String是不可变的,是单独放在常量池中维护的。加入在程序中写道:String x = "Hello";
    String y = "Hello";那么(x == y)表达式将为真。因为由于常量池的管理,使得变量x和y都指向常量池中的“Hello”对象。如果我们返回了这样的对象,即使调用者更改了返回值,也没有更改被调用对象的状态。所以从设计上讲,关键的差别在于,StringBuffer和GoreignCalendar可变,而String和Date不可变.
      

  41.   

    20.   如何编写判断两个对象的方法?有人回答用equals方法,注意我的提问,如何编写判断两个对象的方法。不是用什么方法,而是如何编写,如果你回答equals方法,等于不懂java 对equals方法是如何实现的。请大家再慎重考虑。
      

  42.   

    如果仅停留在用什么方法上,那说明还在狭义的“技术层面”,还没到“设计层面”。这是Java程序员最需要小心的,因为Java有很多开源组件,甚至不需要思考一个算法,就可以直接拿来用。如果程序员没有经历过算法设计这个过程(这里要求对时间复杂度和空间复杂度要严重考虑),如果没有经历过,那么可想而知,就算你把Java SE所有API都技术又怎么样?就算你把Apache 开源的common lib里的都记住又怎么样?
    一样不懂设计!所以请新手注重基础,注重设计!
      

  43.   

    stringbuffer 和 stringbuilder 还有个小区别,就是  stringbuilder 线程不安全。
      

  44.   

    上面的各位基本上把正确的答案都写出来了!这个帖子也算差不多了!有权威人士愿意归纳一下正确答案么??哦,忘了,对象相等的还没有正确答案呢!Java 语言规范要求equals方法具有如下性质:
    1)自反性:对于任何非空引用x, x.equals(x)将返回true;
    2)对称性:对于任何引用x和y,当且仅当y.equals(x)返回true时,x.equals(y)返回true;
    3)传递性:对于任何引用x、y和z,如果x.equals(y)返回true并且,y.equals(z)也返回true,那么x.equals(z)应该返回true;
    4)一致性:如果x和y引用的对象没有改变,那么x.equals(y)的重复调用应该返回统一结果;
    5)对任何非空引用x,x.equals(null)应该返回false.
    谁来归纳一下所有的正确答案,能总结对的,我就结贴加分了,虽然没多少分!
      

  45.   

    我来回答一下,请考官指正。1. 比较 
    a) 1L  < <35; 
    b) 1 < <35; 
    c) 1 < <4 
    的大小? a > c > b
    2. Class Student{ 
      private String name;   public Boolean nameDuplicate(Student student){ 
        if(this.name == student.name){ 
          return true; 
        }else return false; 
      }

    问nameDuplicate方法中能否直接调用student的name私有字段? 可以。(ps. 这题有点弱)3. short 类型需要几个字节? 2个。4. 双精度指的是什么?精度有多少? 浮点数由符号位+阶码+尾数组成,浮点数的精度是由尾数的位数决定的,可以通过增加浮点数尾数的位数来提升精度。java的float型是32位,布局是1+8+23,而double型是64位,布局是1+11+52,尾数位数增加了2倍多,因此叫双精度。5. 三个特殊的浮点数是什么?Double.POSITIVE_INFINITY,Double.NEGATIVE_INFINITY,Double.NaN
     
    6. 如何判断一个变量是数字?这题不好答。
    如果一个简单变量是数字,声明的时候我就知道了,而且它永远是数字,如果我要把它当作别的什么,编译器不允许,所以我永远知道它是数字,不存在判断。
    如果要判断一个Object型的变量是否是Integer,Byte,Short,Float或Double中的一种,用o instanceof Number来判断即可。
    如果是判断一个String是否是数字格式,用正则表达式来判断。或者用parseXXX系列函数转换,再通过捕获异常来判断。
    7. goto功能如何实现? 通过分支结构结合label来实现。8. 一个源文件中public类数量是否有限制?有,限制为一个。(这题也有点弱)
     
    9. 是否存在私有类?存在。
     
    10. 有没有一种情况可以访问另一个类的私有字段?有。反射。
     
    11. 是否可以定义与构造器同名的方法?可以。12. Java的参数传递是哪种?传值,传地址,基本数据类型传值、对象传地址? 基本数据类型传值、对象传地址。a) 通过Java参数传递,是否可以改变基本数据类型的值? 
    不可以。
    b) 是否可以改变对象的状态? 
    可以。
    c) 是否可以创建对象? 
    不可以。13. 只写一个类不写main方法,能否像控制台输出“Hello World”。 
    可以。写在static { }中即可。但是运行不含main方法的类,会抛出异常。14. Java程序对final实例字段有何要求?
    必须显式初始化。要么在定义的同时初始化,要么在构造器中,要么在实例初始化块中。但只能初始化一次。15. 如何利用Java反射机制创建一个“实例化时需要参数的”对象? 
    先获取所有构造器,再分析每个构造器的参数情况,判断所需参数类型,并传入相应类型的值。如下例:
    import java.lang.reflect.*;public class Test {
    public static void main(String[] args) throws Exception {
    Constructor[] constructors = T.class.getConstructors();
    for (int i = 0; i < constructors.length; i++) {
    Constructor c = constructors[i];
    Class[] parameterTypes = c.getParameterTypes();
    Object[] parameters = new Object[parameterTypes.length];
    for (int j = 0; j < parameters.length; j++) {
    if (parameterTypes[j].isPrimitive())
    parameters[j] = 0;
    else
    parameters[j] = new Object();
    }
    c.newInstance(parameters);
    }
    }
    }class T {
    public T() {
    System.out.println("T() invoked.");
    }
    public T(int i) {
    System.out.println("T(int i) invoked.");
    }
    public T(int i, int j) {
    System.out.println("T(int i, int j) invoked.");
    }
    }16. protected的实例字段的可见范围?本包所有类和包外派生类。(这题也有点弱)17. 深度克隆和浅克隆的区别? 浅克隆只克隆当前对象,这样,对于对象类型的成员变量,只有其引用被克隆。
    深度克隆不仅克隆当前对象,还对当前对象中所有对象类型成员变量的引用进行递归克隆。
    18. 何谓方法的隐式参数和显示参数?显式参数是方法签名中标明的参数,由方法的直接调用者传递。隐式参数是运行时由jvm传递的,如this引用。
     
    19. Date类跟GoreignCalendar类的关键区别?String和StringBuffer? 这题不答了。20. 如何编写判断两个对象的方法? 
    题没看懂,反复念了20遍,还是没看懂。
      

  46.   

    以下答案综合各位网友,仅共参考。 1.比较  
    a)1L   <  <35;  
    b)1  <  <35;  
    c)1  <  <4  
    的大小?  
    答:a最大。b最小。c中间大。理由:1L < <35等同于1L < <(35%64);1 < <35等同于1 < <(35%32)即1 < <3 2.Class Student{  
    private String name;  public Boolean nameDuplicate(Student student){  
            if(this.name == student.name){  
         return true;  
            }else return false;  
    }  
    }  
    问nameDuplicate方法中能否直接调用student的name私有字段?  
    答:当然可以。理由:private是在类的层次而不是对象的层次进行保护的。 3.short 类型需要几个字节?      
    答:2个。理由:JAVA中就这么规定的。     
                   
    4.双精度指的是什么?精度有多少? 
    答:double类型,保证15位有效数字的精度。 5.三个特殊的浮点数是什么? 
    答:正无穷Double.POSITIVE_INFINITY,负无穷Double.NEGATIVE_INFINITY ,保持 double 类型的非数字值Double.NaN 
    6.如何判断一个变量是数字? 
    [问题有笔误]:如何判断一个double变量是数字
    答:使用Double.isNaN(double)方法
                            
    7.goto功能如何实现?   
    答:使用带标号的break语句。如:break label 实现goto的功能。  
    理由:JAVA中已取消了goto语句(但保留了goto这个保留字。)goto语句存在的价值是从嵌套较深的循环中一下子跳出来。 

    8.一个源文件中public类数量是否有限制? 
    答:当然有。只能有一个。 
    理由:JAVA源程序取名时,扩展名是 .java,但文件名必须与public类的类名相同。故最多只能定义一个(最少0个。)。 
       若没有public类则文件名可从源程序中的类名随便取一个来用。 
    9.是否存在私有类?  
    答:可以定义私有内部类。
      
    10.有没有一种情况可以访问另一个类的私有字段? 
    答:当然可以。典型情况:非static型内部类就可以访问外部类的一切成员。(含:private型)这也是内部类存在的价值之一。 
             
    11.是否可以定义与构造器同名的方法? 
    答:当然可以。 12.Java的参数传递是哪种?传值,传地址,基本数据类型传值、对象传地址? 
    答:值传递机制   
    a)通过Java参数传递,是否可以改变基本数据类型的值? 
    答:不能。  理由:值传递机制 b)是否可以改变对象的状态? 
      答:可以。 理由:对象的状态是由其数据成员表达的。而数据成员的值是可以用方法来修改的。  
    c)是否可以创建对象?  
    答:不可以。 
      
    13.只写一个类不写main方法,能否像控制台输出“Hello World”。  
    答:当然可以。理由:用类的初始化块 static{ System.out.println("Hello World");} 。如果再加上System.exit(0);就不会打印异常了。14.Java程序对final实例字段有何要求? 
    答: 一定要初始化。最好在定义的同时就进行初始化。 
      
    15.如何利用Java反射机制创建一个“实例化时需要参数的”对象? 
    答:先获取所有构造器,再分析每个构造器的参数情况,判断所需参数类型,并传入相应类型的值。如下例: Java codeimport java.lang.reflect.*;public class Test {
        public static void main(String[] args) throws Exception {
            Constructor[] constructors = T.class.getConstructors();
            for (int i = 0; i < constructors.length; i++) {
                Constructor c = constructors[i];
                Class[] parameterTypes = c.getParameterTypes();
                Object[] parameters = new Object[parameterTypes.length];
                for (int j = 0; j < parameters.length; j++) {
                    if (parameterTypes[j].isPrimitive())
                        parameters[j] = 0;
                    else
                        parameters[j] = new Object();
                }
                c.newInstance(parameters);
            }
        }
    }class T {
        public T() {
            System.out.println("T() invoked.");
        }
        public T(int i) {
            System.out.println("T(int i) invoked.");
        }
        public T(int i, int j) {
            System.out.println("T(int i, int j) invoked.");
        }
    }
    16.protected的实例字段的可见范围? 
    答:子类或同一个包。      17.深度克隆和浅克隆的区别?    
    答:浅克隆只复制对象自身的二进制位图。源对象与克隆产生的对象都引用相同的其它资源。 
    深度克隆不仅是复制对象自身,而且源对象所引用的其它对象(或资源)都要递归地进行克隆复制。 
      
    18.何谓方法的隐式参数和显示参数?  
    答:this是隐含传递给对象的方法的(类方法是不隐含传递的)。显式参数:程序员自己明确定义的方法参数。   
    19.Date类跟GoreignCalendar类的关键区别?String和StringBuffer?  
    答:从设计上讲,访问器要返回不可变对象,否则使用访问器的客户获得了GoreignCalendar以及StringBuffer这样的对象的句柄后,就可以不用通过setter(设置器)就可以改变包含GoreignCalendar类型field的对象的状态,相当于打破了封装。这个道理跟J2EE1.4里面的客户端可以获得EJBObject(EJB Bean代理)的效果是类似的。 
    大家知道String是不可变的,是单独放在常量池中维护的。 
    加入在程序中写道: 
    String x = "Hello"; 
    String y = "Hello"; 
    那么(x == y)表达式将为真。因为由于常量池的管理,使得变量x和y都指向常量池中的“Hello”对象。 
    如果我们返回了这样的对象,即使调用者更改了返回值,也没有更改被调用对象的状态。 
    所以从设计上讲,关键的差别在于,StringBuffer和GoreignCalendar可变,而String和Date不可变 
    20.如何编写判断两个对象相等的方法?[问题有笔误] 
    答:
    Java 语言规范要求equals方法具有如下性质: 
    1)自反性:对于任何非空引用x, x.equals(x)将返回true; 
    2)对称性:对于任何引用x和y,当且仅当y.equals(x)返回true时,x.equals(y)返回true; 
    3)传递性:对于任何引用x、y和z,如果x.equals(y)返回true并且,y.equals(z)也返回true,那么x.equals(z)应该返回true; 
    4)一致性:如果x和y引用的对象没有改变,那么x.equals(y)的重复调用应该返回统一结果; 
    5)对任何非空引用x,x.equals(null)应该返回false.

    以上题目都非常基础,但是没有完全答对(仅包括答上的题目)的,再加上题目笔误(实在抱歉),也没有完全说得清楚的!但是有两人打得相对最完整了!
    Dan1980 
    jiangnaisong 
    虽然搂主一共也没几分,加给你俩每人20分吧
      

  47.   

    看了高手们的回答受益匪浅啊!
    java反射机制我不了解,麻烦高手指点1-2!Thanks!