错题归纳
1.阅读如下代码。 请问,对语句行 test.hello(). 描述正确的有()
package NowCoder;
class Test {
public static void hello() {
System.out.println("hello");
}
}
public class MyApplication {
public static void main(String[] args) {
// TODO Auto-generated method stub
Test test=null;
test.hello();
}
}
A.能编译通过,并正确运行
B.因为使用了未初始化的变量,所以不能编译通过
C.以错误的方式访问了静态方法
D.能编译通过,但因变量为null,不能正常运行
正确答案:A
解析:因为hello方法是静态的,没有this隐藏的参数,所以即使test指向空也没有问题,因为不需要传递这个参数。
如果hello是普通成员方法的话就应该选择D
2.以下关于 Java 字符串的说法, 错误的是
A.字符串是不可变对象, 不能修改字符串的内容
B.使用 == 比较字符串是比较对象的身份, 而不是字符串的内容
C.使用 contains 方法可以判定字符串中是否包含某个子字符串
D.使用 subString 方法可以截取字符串子串, 传入的参数通过前闭后闭区间的形式表示子串的范围
正确答案:D
解析:subString是左闭右开的表示子串的范围。
subString()方法介绍
语法格式:
public String subString(int beginIndex,int endIndex)
- beginIndex------起始索引(包括),索引从0开始。
- endIndex-------结束索引(不包括)。
代码示例:
public static void main(String args[]) {
String Str = new String("This is text");
System.out.print("返回值 :" );
System.out.println(Str.substring(4) );
System.out.print("返回值 :" );
System.out.println(Str.substring(4, 10) );
}
\\运行结果
返回值 : is text
返回值 : is te
3.A 派生出子类 B , B 派生出子类 C ,并且在 java 源代码有如下声明:
- A a0=new A();
- A a1=new B();
- A a2=new C();
问以下哪个说法是正确的?()
A.只有第一行能通过编译
B.第1、2行能通过编译,但第3行编译出错
C.第1、2、3行能通过编译,但第2、3行运行时出错
D.第1行,第2行和第3行的声明都是正确的
正确答案:D
解析:基类的引用不仅可以指向自己的对象也可以指向其任意子类后代的对象。
4.关于包的说法, 下列错误的是:( )
A.包是一组类的集合
B.包能防止类的名字冲突
C.import 语句能够导入一个指定的包
D.import static 能够导入一些静态方法
正确答案:C
解析:import是用来导入包中具体类的,或者采用import static 可以导入类中静态的成员即import static 类名.成员名。类中的静态成员就可以直接在另一个类中使用。