【第一题】
选择【B】,在Java中只有值传递,main-str和change-str指向的不是一个地址,change方法新建立了一个引用str
【第二题】
选择【D】,
- 重载用于同一个类中,方法名相同,参数列表里的参数类型、个数、顺序不同;并且与返回值无关,即返回值可以相同也可以不同
- 覆盖(重写)用于继承当中,子类重写父类的方法,方法名相同,参数列表相同,连返回值类型都相同
【第三题】
选择【A】,数组是对象,所有的对象类都是在堆内存中,基本数据类型在栈内存中
【第四题】
选择【A】,Java会把通过对象调用静态方法转化成类名称调用静态方法,(TestClass)null等价于TestClass类的一个对象,反编译之后:
【第五题】
选择【D】
【第六题】
选择【C】,System.arraycopy > clone > Arrays.copyOf > for
Arrays.copyOf()方法本质是调用System.arraycopy()方法
【第七题】
选择【B】,
1、基本型封装型将会自动拆箱变为基本型后再进行比较,基本类型没有equals方法,一般使用“==”,比较的是值
2、两个Integer类型进行“==”比较,如果其值在-128至127,那么返回true,否则返回false, 这跟Integer.valueOf()的缓冲对象有关
3、两个基本型的封装型进行equals()比较,首先equals()会比较类型,如果类型相同,则继续比较值,如果值也相同,返回true
4、基本型封装类型调用equals(),但是参数是基本类型,这时候,先会进行自动装箱,基本型转换为其封装类型,再进行比较
【第八题】
选择【D】, 子类的构造方法总是先调用父类的构造方法,如果子类的构造方法没有明显地指明使用父类的哪个构造方法,子类就调用父类不带参数的构造方法,父类没有无参的构造函数,所以子类需要在自己的构造函数中显式调用父类的构造函数,使用super关键字
【第九题】
选择【A】,x.toUpperCase();该方法是将小写字母转换为大写,但是并没有改变x,在堆中new一个"FMN"对象,但无任何引用指向它
String y=x.replace(‘f’,‘F’); 在堆中 new一个"Fmn"对象,y指向这个新对象
y=y+“wxy”; 在堆中重新new一个"Fmnwxy"对象, y指向这个新对象
【第十题】
选择【B】,接口中所有的方法必须都是抽象的,接口中也可以定义数据成员,但必须是常量