1.D



Java一些基本题库 java常见题目_Java一些基本题库


2.A


private是私有变量,只能用于当前类中,题目中的main方法也位于当前类,所以可以正确输出




3.ACD


Java标识符由数字,字母和下划线(_),美元符号($)组成。在Java中是区分大小写的,而且还要求首位不能是数字。


最重要的是,Java关键字 不能当作Java标识符。




4.C


效率:StringString(大姐,出生于JDK1.0时代) 不可变字符序列     <StringBuffer(二姐,出生于JDK1.0时代)  线程安全的可变字符序列    <StringBuilder(小妹,出生于JDK1.5时代) 非线程安全的可变字符序列   。Java中的String是一个类,而并非基本数据类型。string是值传入,不是引用传入。 StringBuffer和StringBuilder可以算是双胞胎了,这两者的方法没有很大区别。但在线程安全性方面,StringBuffer允许多线程进行字符操作。 这是因为在源代码中StringBuffer的很多方法都被关键字 synchronized  修饰了,而StringBuilder没有。 StringBuilder的效率比StringBuffer稍高,如果不考虑线程安全,StringBuilder应该是首选。另外,JVM运行程序主要的时间耗费是在创建对象和回收对象上。




5.AD


内部类其实和类的属性没什么区别,只是在声明的时候必须是Outer.Inner a,


就像int a 一样,至于静态内部类和非静态内部类new的时候有点区别,


Outer.Inner a=new Outer().new Inner()(非静态,先有Outer对象才能有属性)


 Outer.Inner a=new Outer.Inner()要把Outer.Inner看成一部分,就像类变量一样




6.A


第一次String a="1234"时,会在常量池中创建一个常量1234,String b=1234时,常量池中已经有了该常量,


所以直接取,a和b的地址一样,所以地址值相等;String c = newString("1234")重新new了对象,


在堆内存中开辟了新的空间,所以地址值不想等,而equals方法比较的是值是否相等




7.A


join()的作用是:“等待该线程终止”,这里需要理解的就是该线程是指的主线程等待子线程的终止。


也就是在子线程调用了join()方法后面的代码,只有等到子线程结束了才能执行。




8.B


复制的效率System.arraycopy>clone>Arrays.copyOf>for循环,这个有兴趣自己测试一下就知道了。这里面在System类源码中给出了arraycopy的方法,是native方法,也就是本地方法,肯定是最快的。而Arrays.copyOf(注意是Arrays类,不是Array)的实现,在源码中是调用System.copyOf的,多了一个步骤,肯定就不是最快的。




9.B


类的加载包括:加载,验证,准备,解析,初始化。


选项A:生成java.lang.Class对象是在加载时进行的。生成Class对象作为方法区这个类的各种数据的访问入口。


选项B:既然是对象成员,那么肯定在实例化对象后才有。在类加载的时候会赋予初值的是类变量,而非对象成员。


选项C:这个会调用。可以用反射试验。


选项D:类方法解析发生在解析过程。


10.C


A 省略构造函数,编译器会自动生成。


D 构造函数可以重载


B 方法是可以和类名同名的,和构造方法唯一的区别就是,构造方法没有返回值。