美文网首页
Java刷题总结(2)

Java刷题总结(2)

作者: 今天也要努力呀y | 来源:发表于2020-02-24 18:06 被阅读0次

    执行下列程序的输出结果为( )

    public class Test {
     public static void main(String[] args) {
     String s1 = "HelloWorld";
     String s2 = new String("HelloWorld");
     if (s1 == s2) {
     System.out.println("s1 == s2");
     } else {
     System.out.println("s1 != s2");
     }
     if (s1.equals(s2)) {
     System.out.println("s1 equals s2");
     } else {
     System.out.println("s1 not equals s2");
     }
     }
     }
    

    正确答案: D 你的答案: D (正确)
    s1 == s2
    s1 not equals s2
    s1 == s2
    s1 equals s2
    s1 != s2
    s1 not equals s2
    s1 != s2
    s1 equals s2

    解析:==比较的是地址,equals比较的是内容

    2.枚举(enum)属于原始数据类型(primitive type)。
    正确答案: B 你的答案: A (错误)
    正确
    错误

    原始数据类型:char,boolean,int,double,float,long,short,byte,枚举是一种特殊对的类

    3.对于以下代码段,4个输出语句中输出true的个数是( )。

    class A{}
    
    class B extends A{}
    
    class C extends A{}
    
    class D extends B{}
    
    A obj = new D();
    
    System.out.println(obj instanceof B);
    
    System.out.println(obj instanceof C);
    
    System.out.println(obj instanceof D);
    
    System.out.println(obj instanceof A);
    

    正确答案: C 你的答案: C (正确)
    1
    2
    3
    4
    解析:
    A
    | |
    B C
    |
    D
    D属于B,D不属于C,D属于D,D属于A
    所以选C

    4.下面有关maven和ant的描述,描述错误的是?
    正确答案: C 你的答案: A (错误)
    Ant 没有正式的约定如一个一般项目的目录结构,你必须明确的告诉 Ant 哪里去找源代码
    Maven 拥有约定,因为你遵循了约定,它已经知道你的源代码在哪里
    maven和ant都有“生命周期”的概念,当你输入一个命令后,maven或者ant会执行一系列的有序的步骤,直到到达你指定的生命周期
    Ant构建文件默认命名为build.xml,Maven默认构建文件为pom.xml

    解析:Ant没有生命周期

    5.下面有关Java的说法正确的是( )
    正确答案: A C D F 你的答案: A B C D (错误)
    一个类可以实现多个接口
    抽象类必须有抽象方法
    protected成员在子类可见性可以修改
    通过super可以调用父类构造函数
    final的成员方法实现中只能读取类的成员变量
    String是不可修改的,且java运行环境中对string对象有一个对象池保存

    解析:用abstract修饰的就是抽象类,有没有抽象方法没干系
    F对

    6.byte b1=1,b2=2,b3,b6,b8;
    final byte b4=4,b5=6,b7;
    b3=(b1+b2); /语句1/
    b6=b4+b5; /语句2/
    b8=(b1+b4); /语句3/
    b7=(b2+b5); /语句4/
    System.out.println(b3+b6);
    下列代码片段中,存在编译错误的语句是()
    正确答案: B C D 你的答案: C D (错误)
    语句2
    语句1
    语句3
    语句4

    byte会被提升为int类型,而final修饰的不会变,所以语句一中应该为b3=(byte)(b1+b2),
    同理,c和d也要强转

    7.java8中,下面哪个类用到了解决哈希冲突的开放定址法
    正确答案: C 你的答案: B (错误)
    LinkedHashSet
    HashMap
    ThreadLocal
    TreeMap

    解析:HashMap是链地址法解决

    8.jdk1.8中,下面有关java 抽象类和接口的区别,说法错误的是?
    正确答案: B D 你的答案: A D (错误)
    抽象类可以有构造方法,接口中不能有构造方法
    抽象类中可以包含非抽象的普通方法,接口中的方法必须是抽象的,不能有非抽象的普通方法
    一个类可以实现多个接口,但只能继承一个抽象类
    接口中可以有普通成员变量,抽象类中没有普通成员变量

    解析:
    抽象类可以有构造方法,普通方法,静态方法,属性
    有抽象方法的类一定是抽象类,抽象了不一定有抽象方法
    抽象类中的抽象方法子类必须实现,不实现子类也必须定义为抽象方法
    抽象类无法实例化
    接口: 接口中不能有构造函数
    接口只能方法的声明,没有方法体
    接口中的常量默认都加public static final,所以没有变量,方法默认都加public
    接口中 的方法必须都被子类实现,否则子类定义为抽象类

    public class NameList
    {
        private List names = new ArrayList();
        public synchronized void add(String name)
        {
            names.add(name);
        }
        public synchronized void printAll()     {
            for (int i = 0; i < names.size(); i++)
            {
                System.out.print(names.get(i) + ””);
            }
        }
     
        public static void main(String[]args)
        {
            final NameList sl = new NameList();
            for (int i = 0; i < 2; i++)
            {
                new Thread()
                {
                    public void run()
                    {
                        sl.add(“A”);
                        sl.add(“B”);
                        sl.add(“C”);
                        sl.printAll();
                    }
                } .start();
            }
        }
    }
    

    Which two statements are true if this class is compiled and run?

    正确答案: E G 你的答案: D (错误)
    An exception may be thrown at runtime.
    The code may run with no output, without exiting.
    The code may run with no output, exiting normally(正常地).
    The code may rum with output “A B A B C C “, then exit.
    The code may rum with output “A B C A B C A B C “, then exit.
    The code may ruin with output “A A A B C A B C C “, then exit.
    The code may ruin with output “A B C A A B C A B C “, then exit.

    线程之间是交叉进行的,E选项是第一个线程先顺序执行ABC,然后第二个线程再顺序执行输出ABCABC
    G选项是在第一个线程输出之前有了ABC,第二个线程进来加了一个A,然后输出A,然后第二个线程再顺序加入BC,输出ABCABC

    相关文章

      网友评论

          本文标题:Java刷题总结(2)

          本文链接:https://www.haomeiwen.com/subject/zbtvqhtx.html