1.定义:String s1 = “uml”; String s2 = “uml”; String s3= new String(“uml”); String s4= new String(“uml”);那么,s1==s2;s3 == s4;s1.equals(s3); 判断正确与否

正确答案: A   你的答案: A (正确)

T,F,T
F,T,F
解析:
        该题考察的是String类创建的对象在JVM中的内存分配equals”与“==”的区别
                    '=='是比较地址和值,'equals'是比较内容
    
        s1==s2,比较的是地址和值,由上图得知两个引用指向的是同一个地址,返回true
        s3==s4,比较的是两个new出来开辟的空间的对象地址,所以值相同,但地址不同,返回false
        s1.equals(s3),比较的是内容,返回true

2.不考虑反射,String类型变量所指向内存空间中的内容是不能被改变的 。 ( )

正确答案: A   你的答案: A (正确)

正确
错误
解析:
        String类的源码实现是final类修饰的和char数组,因此其在常量池中的内容是不可变的。
        但是String类型的变量的指向是可以改变的,比如常量池中有两个字符串内容:"ABC"和"abc",定义一个String变量的Str,既可以指向"ABC",也可以改变为指向"abc"

3.A 是抽象父类或接口, B , C 派生自 A ,或实现 A ,现在 Java 源代码中有如下声明:

1. A  a0=new  A();

2. A  a1 =new  B();

3. A  a2=new  C();

问以下哪个说法是正确的?( )

正确答案: A   你的答案: D (错误)

第1行不能通过编译
第1、2行能通过编译,但第3行编译出错
第1、2、3行能通过编译,但第2、3行运行时出错
第1行、第2行和第3行的声明都是正确的
解析:这道题错的就很离谱。。。抽象类和接口不能实例化

4.命令javac-d参数的用途是?()

正确答案: A   你的答案: A (正确)

指定编译后类层次的根目录
指定编译时需要依赖类的路径
指定编译时的编码
没有这一个参数
解析:
        -d destination 目的地
        -s source 起源地
        javac -d 指定放置生成的类文件的位置
        javac -s 指定放置生成的源文件的位置

5.关于下面的程序,说法正确的是:

	
	
	
	
1. classStaticStuff
2 {
3.     staticintx = 10;
4.
5.     static{ x += 5; }
6.
7. publicstaticvoidmain(String args[])
8. {
9.     System.out.println(“x = ” + StaticStuff .x);
10. }
11.    static
12.     {x /= 3; }
13.}

正确答案: D   你的答案: B (错误)

第5行和12行不能编译,因为该方法没有方法名和返回值。
第12 行不能编译,因为只能有一个static初始化块。
代码编译并执行,输出结果x = 10.
代码编译并执行,输出结果 x = 5.
代码编译并执行,输出结果 x = 15.
解析:
        这题考察的是代码的执行顺序
        第5行和12行是静态代码块,不是方法,A、B错
        静态代码块以及静态变量自上而下的顺序依次随着类加载而执行,所以依据题目的变量初始化:
                        x初始为10,
                        x+5赋值给x,为15
                        x/3赋值给x,为5
        

6.下列哪个说法是正确的()

正确答案: D   你的答案: A (错误)

ConcurrentHashMap使用synchronized关键字保证线程安全
HashMap实现了Collction接口
Array.asList方法返回java.util.ArrayList对象
SimpleDateFormat是线程不安全的
解析:
        A. JDK1.8 的 ConcurrentHashMap 采用CAS+Synchronized保证线程安全。 JDK1.7 及以前采用segment的分段锁机制实现线程安全,其中segment继承自ReentrantLock,因此采用Lock锁来保证线程安全。
        B.HashMap定义规则如下:
     public class HashMap<K,V>
        extends AbstractMap<K,V>
        implements Map<K,V>, Cloneable, Serializable
        C. Arrays.asList()  返回  java.util.Arrays.ArrayList 对象,这里的 ArrayList 是 Arrays 私有的内部类
            

7.@SuppressWarnings(“deprecation”)的功能是什么?

正确答案: A   你的答案: B (错误)

屏蔽不赞同使用的类和方法的警告
屏蔽在强制类型转换的时候编译器给出的警告
关闭所有警告信息
当在可序列化的类上缺少serialVersionUID定义的警告
解析:
        java三大注解:@Override @Deprecated @Suppresswarnings
                @Override:
                             指明被注解的方法需要覆写超类中的方法.
                             如果某个方法使用了该注解,却没有覆写超类中的方法(比如大小写写错了,或者参数错了,或者是子类自己定义的方法),编译器就会生成一个错误.
                @Deprecated      
                            可以修饰类、方法、变量,在java源码中被@Deprecated修饰的类、方法、变量等表示不建议使用的,可能会出现错误的,可能以后会被删除的类、方法等,如果现在使用,则在以后使用了这些类、方法的程序在更新
                    新的JDK、jar包等就会出错,不再提供支持。     个人程序中的类、方法、变量用@Deprecated修饰同样是不希望自己和别人在以后的时间再次使用此类、方法。  当编译器编译时遇到了使用@Deprecated修饰的类、方法、
                    变量时会提示相应的警告信息。
                @Suppresswarnings
                            可以达到抑制编译器编译时产生警告的目的,但是很不建议使用@SuppressWarnings注解,使用此注解,编码人员看不到编译时编译器提示的相应的警告,不能选择更好、更新的类、方法或者不能编写更规范的编码。
                    同时后期更新JDK、jar包等源码时,使用@SuppressWarnings注解的代码可能受新的JDK、jar包代码的支持,出现错误,仍然需要修改。
        @SuppressWarnings(“deprecation”)表示:
                 如果使用了使用@Deprecated注释的方法,编译器将出现警告信息。
                 使用这个注释将警告信息去掉。

8.将下列(A、B、C、D)哪个代码替换下列程序中的【代码】不会导致编译错误?

interface Com{
int M=200;
int f();
}
class ImpCom implements Com{
【代码】
}

正确答案: A   你的答案: B (错误)

public int f(){return 100+M;}
int f(){return 100;}
public double f(){return 2.6;}
public abstract int f();
解析:
        1、实现类可以获取接口中的属性。  
        2、实现需要是public方法
        补充 :
                (1)、必须实现接口中所有的方法。
                        在实现类中实现接口时,方法的名字、返回值类型、参数的个数及类型必须与接口中的完全一致,并且必须实现接口中的所有方法。
                (2)、接口实现类相当于子类,子类的访问权限是不能比父类小的。
                        接口中所有方法默认都是public,至于为什么要是public,原因在于如果不是public,那么只能在同个包下被实现,可访问权限就降低很多了,那么在实现类中,实现的类相当于子类,子类的访问权限是不能比父类小的,而
                在java中一个类如果没有权限的修饰符,默认是friendly(同一个包内的其它类才可访问),所以在实现类中一定要写public

9.面向对象方法的多态性是指()

正确答案: C   你的答案: C (正确)

一个类可以派生出多个特殊类
一个对象在不同的运行环境中可以有不同的变体
针对一消息,不同的对象可以以适合自身的方式加以响应
一个对象可以是由多个其他对象组合而成的
解析:
         相同类型的变量、调用同一个方法时呈现出多种不同的行为特征,这就是多态。