Java(易错题集)

基础语法

1、D(编译无错,只是没有正确定义main方法)

public class Hello {
   
    // String指的是返回值的类型 s指的是变量名字
    //(String[] s)
    public static void main(String s){
   
        System.out.println("Hello");
    }
}

A. 编译错误
B. 运行输出 “Hello”
C. 编译无错,但运行时指示没有定义构造方法
D. 编译无错,但运行时指示没有正确定义main方法

2、D(num是局部变量,在main方法中已经定义过了,不能在重新定义)(编译会报错)

public static void main(String[] args){
   
    int num = 100;
    for(int i = 0; i <= 100 ; i++) {
   
        int num = 10;
    }
    System.out.println(num);
}

A. 输出:10
B. 输出:100
C. 输出:201
D. 编译出错

3、A( / 前后都是int类型,所以除后也是int类型)(Java整型默认的是int类型)

public static void main(String[] args){
   
    System.out.println(37 / 10); // 3
}

在Java中语句:37/10 的运算结果为:
A. 3
B. 3.70
C. 3.7
D. 3.0

4、C(x-- 先使用再减 — ++x先加再使用 )(&& 和 | | 有“短路”)

public static void main(String[] args){
   
    int x = 1,y = 1,z = 1;
    if (x-- == 1 && y++ == 1 || z++ == 1)
        System.out.println("x=" + x + ",y=" + y + ",z=" + z);
}

A. x=0,y=1,z=1
B. x=0,y=2,z=2
C. x=0,y=2,z=1
D. x=1,y=2,z=1

5、D(% 前后都是int类型,所以取余后也是int类型)

public static void main(String[] args){
   
    int a = 7;
    System.out.println(a % 3); // 1
}

A. 2.0
B. 2
C. 1.0
D. 1

6、C(不能用一个变量直接作为判断条件)(编译会报错)

public static void main(String[] args){
   
    int value = 0;
    boolean setting = true;
    String title = "Hello";
    // vaule错误
    if (value || (setting && title == "Hello")) {
   
        System.out.println("one");
    }
    if (value == 1 || title.equals("Hello")) {
   
        System.out.println("two");
    }
}

A. 2
B. 1
C. 编译错误
D. 可以运行,但无输出

7、B(方法调用)(return - 返回,方法运行完毕)

public void testIfA() {
   
    if (testIfB(1)) {
   
        System.out.println("true");
    } else {
   
        System.out.println("Not true");
    }
}
public boolean testIfB(int type) {
   
    if (type == 1) {
   
        return true;
    }
    return false;
}

调用testIfA方法,程序的结果是:
A. 输出Not true
B. 输出True
C. 代码 if (testIfB(1)) { 行,编译错误
D. 代码 return Boolean.valueOf(str); 行,编译错误

8、B(条件是true,所以循环一直进行)

for(int i = 0; true; i++) {
   
    System.out.println(i);
}

A. 执行3 次
B. 无限次
C. 执行1 次
D. 一次也不执行

9、B

public static void main(String[] args){
   
    int i = 0;
    for(; i <= 10; i++) {
   
        // 当 i=7 时退出循环
        if (i > 6)
            break;
    }
    System.out.println(i); // 7
}

A. 输出6
B. 输出7
C. 输出10
D. 编译错误

10、B(数组复制下标越界)(可以编译)

public static void main(String[] args){
   
    String[] names = {
   "Oscar","Edgar","Frank","Laurent","Hugo","Jacob","Aaron","Gino","Angus","Ken"};
    String[] names1 = new String[5];
    // names1从下标1开始,复制5个元素,下标越界了
    System.arraycopy(names,3,names1,1,5);
    System.out.println(Arrays.toString(names1));
}

A. 编译错误
B. 抛出运行时异常
C. 输出:[Laurent, Hugo, Jacob, Aaron, Gino]
D. 输出:[Frank, Laurent, Hugo, Jacob, Aaron]

11、递归(50个台阶问题)

public static int t(int n) {
   
    if (n < 1) {
   
        return -1;
    } else if (n == 1)
        return 1;
    else if (n == 2)
        return 2;
    else
        // 50个台阶总共 = 49个台阶总共 + 48个台阶总共
        return t(n-1) + t(n-2);
}

面向对象

1、B(画内存图)


public class Example {
   
    String str = new String("Bonnie");
    char[] ch = {
   'a','b','c'};
    public static void main(String args[]) {
   
        Example ex = new Example();
        ex.change(ex.str,ex.ch);
        System.out.print(ex.str + " and ");
        System.out.println(ex
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值