笔试题 Java 易错题精选

1、写出下列程序的运行结果( )String 不变性Java 值传递

public class Test {
public static void main(String[] args) {
String a = "hello";
change(a);
System.out.println(a);
} public static void change(String name) {
name = "world";
}
}

运行结果

```
hello
```

2、写出下列程序的运行结果( )String 不变性Java 值传递

public class Test {
public void change(String str, char ch[]) {
str = "test ok";
ch[0] = 'g';
} public static void main(String args[]) {
String str = new String("good");
char[] ch = {'a', 'b', 'c'};
Test ex = new Test();
ex.change(str, ch);
System.out.print(str + " and ");
System.out.print(ch);
}
}

运行结果

```
good and gbc
```

3、写出下列程序的运行结果( )Integer 类缓存== 和 equals

public class Test {
public static void main(String[] args) {
Integer a = 1;
Integer b = 2;
Integer c = 3;
Integer d = 3;
Integer e = 321;
Integer f = 321;
Long g = 3L;
Long h = 2L;
System.out.println(c == d);
System.out.println(e == f);
System.out.println(c == (a + b));
System.out.println(c.equals(a + b));
System.out.println(g == (a + b));
System.out.println(g.equals(a + b));
System.out.println(g.equals(a + h));
}
}

运行结果

```
true
false
true
true
true
false
true
```

4、写出下列程序的运行结果( )String 不变性Java 值传递

public class Test {
public static void main(String[] args) {
Test test = new Test();
int a = 1;
test.addInt(a);
System.out.println(a);
String str = "hello";
test.addString(str);
System.out.println(str);
StringBuilder sb = new StringBuilder("hello");
test.addBuilder(sb);
System.out.println(sb.toString());
Long m = 1L;
Long n = 1L;
System.out.println(m == n);
m = 200L;
n = 200L;
System.out.println(m == n);
String x = new String("hello");
String y = "hello";
System.out.println(x.equals(y));
System.out.println(x == y);
} public void addInt(int a) {
a = a + 1;
} public void addString(String str) {
str = str + "world";
} public void addBuilder(StringBuilder sb) {
sb.append("world");
}
}

运行结果

```
1
hello
helloworld
true
false
true
false
```

5、写出下列程序的运行结果( )intern() 方法== 和 equals

public class Test {
public static void main(String[] args) {
String s1 = "Monday";
String s2 = new String("Monday");
s2 = s2.intern();
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");
}
}
}

运行结果

```
s1 == s2
s1 equals s2
```

解析

讲解:java.lang.String 的 intern() 方法"abc".intern() 方法的返回值还是字符串"abc",表面上看起来好像这个方法没什么用处。但实际上,它做了个小动作:检查字符串池里是否存在"abc"这么一个字符串,如果存在,就返回池里的字符串;如果不存在,该方法会把"abc"添加到字符串池中,然后再返回它的引用。

6、写出下列程序的运行结果( )多线程 run() 和 start() 方法

public class Test {
public static void main(String[] args) {
Thread t = new Thread() {
public void run() {
pong();
}
};
t.run();
System.out.print("ping");
} private static void pong() {
System.out.print("pong");
}
}

运行结果

```
pongping
```

7、写出下列程序的运行结果( )switch

public class Test {
public static void main(String[] args) {
System.out.println(getValue(2));
} public static int getValue(int i) {
int Test = 0;
switch (i) {
default:
System.out.println("default");
case 1:
Test = Test + i;
case 2:
Test = Test + i * 2;
case 3:
Test = Test + i * 3;
}
return Test;
}
}

运行结果

```
10
```

8、写出下列程序的运行结果( )变量作用域

public class MeaningOfThis {
public final int value = 4; public void doIt() {
int value = 6;
Runnable r = new Runnable() {
public final int value = 5; public void run() {
int value = 10;
System.out.println(this.value);
}
};
r.run();
} public static void main(String... args) {
MeaningOfThis m = new MeaningOfThis();
m.doIt();
}
}

运行结果

```
5
```

解析

结果为 5,因为 this 指的是包含它的 Runnable,而不是外面的类 MeaningOfThis。

9、对文件名为 Test.java 的 Java 代码描述正确的是( )String 不变性Java 值传递构造方法

class Person {
String name = "No name"; public Person(String nm) {
name = nm;
}
} class Employee extends Person {
String empID = "0000"; public Employee(String id) {
empID = id;
}
} public class Test {
public static void main(String args[]) {
Employee e = new Employee("123");
System.out.println(e.empID);
}
}

A. 输出: 0000

B. 输出: 123

C. 编译报错

D. 输出: No name

答案

```
C
```

解析

方案一
```java
class Person {
String name = "No name";

public Person(String nm) {
name = nm;
}

}

class Employee extends Person {

String empID = "0000";

public Employee(String id) {
super("Railway Employee");
empID = id;
}

}

public class Test {

public static void main(String[] args) {

Employee employee = new Employee("123");

System.out.println(employee.empID);

System.out.println(employee.name);

}

}

**运行结果**
```java
123
Railway Employee

方案二

class Person {
String name = "No name"; public Person(String nm) {
name = nm;
} public Person() {
}
} class Employee extends Person {
String empID = "0000"; public Employee(String id) {
empID = id;
}
} public class Test {
public static void main(String args[]) {
Employee e = new Employee("123");
System.out.println(e.empID);
}
}

运行结果

123

10、写出下列程序的运行结果( )空指针异常

public class NULL {
private static void hahn() {
System.out.println("hahn");
} public static void main(String[] args) {
NULL.hahn();
}
}

运行结果

```
hahn
```

11、写出下列程序的运行结果( )溢出Java 类型转换

public class Test {
public static void main(String[] args) {
int a = Integer.MAX_VALUE;
long b = a + 1;
System.out.println(a);
System.out.println(b);
}
}

运行结果

```
2147483647
-2147483648
```

解决方案

修改代码
```
public class Test {
public static void main(String[] args) {
int a = Integer.MAX_VALUE;
long b = (long) a + 1;
System.out.println(a);
System.out.println(b);
}
}
```
运行结果
```
2147483647
2147483648
```

12、写出下列程序的运行结果( )super 关键字final 关键字

import java.util.Date;

public class Test extends Date {
public static void main(String[] args) {
new Test().test();
} private void test() {
System.out.println(super.getClass().getName());
System.out.println(getClass().getName());
System.out.println(this.getClass().getName()); System.out.println(super.getClass().getSuperclass().getName());
System.out.println(getClass().getSuperclass().getName());
System.out.println(this.getClass().getSuperclass().getName());
}
}

运行结果

```
Test
Test
Test
java.util.Date
java.util.Date
java.util.Date
```

解析

为什么 super 没有起作用呢?简单来说,super 并不能代表一个超类的引用。
因为 super 并没有代表超类的一个引用的能力,只是代表调用父类的方法而已。所以,在子类的方法中,不能这样用 System.out.println(super);也不能使用 super.super.mathod();

参考资料

【笔试题】Java 易错题精选的更多相关文章

  1. Java面试中笔试题——Java代码真题,这些题会做,笔试完全可拿下!

    大家好,我是上海尚学堂Java培训老师,以下这些Java笔试真题是上海尚学堂Java学员在找工作中笔试遇到的真题.现在分享出来,也写了参考答案,供大家学习借鉴.想要更多学习资料和视频请留言联系或者上海 ...

  2. java易错题----静态方法的调用

    class A{ public static String s="A.s"; } class B extends A{ public static String s="B ...

  3. Java易错题(1)

    检查程序,是否存在问题,如果存在指出问题所在,如果不存在,说明输出结果. public class HelloB extends HelloA { public HelloB() { } { Syst ...

  4. java易错题

    (选择二项) 8 A: B: C: D: (选择一项) 9 A: B: C: D: 正确答案是 A 您回答的是 B 回答错误 正确答案是 B,D 您回答的是 A,C 回答错误 (选择一项) 18 A: ...

  5. SQLServer 常见SQL笔试题之语句操作题详解

    SqlServer 常见SQL笔试题之语句操作题详解 by:授客 QQ:1033553122 测试数据库 CREATE DATABASE handWriting ON PRIMARY ( name = ...

  6. C++笔试题2(基础题)

    温馨提醒:此文续<C++笔试题(基础题)> (112)请写出下列程序的输出内容 代码如下: #include <iostream> using namespace std; c ...

  7. Java五道输出易错题解析(避免小错误)

    收集了几个易错的或好玩的Java输出题,分享给大家,以后在编程学习中稍微注意下就OK了. 1. 看不见的空格? 下面的输出会正常吗? package basic; public class Integ ...

  8. Java五道输出易错题解析(进来挑战下)

    转自:http://blog.csdn.net/lanxuezaipiao/article/details/41985243 收集了几个易错的或好玩的Java输出题,分享给大家,以后在编程学习中稍微注 ...

  9. js作用域之常见笔试题,运行结果题

    笔试题中经常有运行结果题,而大多体型都是围绕作用域展开,下面总结了几种相关的题: 外层的变量函数内部可以找到,函数内部的变量(局部变量)外层找不到. function aaa() { var a = ...

随机推荐

  1. mybatis中association和collection的column传入多个参数值

    在使用 association和collection 进行关联查询的时候 column 参数可能会有多个,如下: 注意: parameterType 一定要是 java.util.Map

  2. Spring 学习笔记 整合 Struts2

           Struts2与Spring整合后,可以使用Spring的配置文件applicationContext.xml来描述依赖关系,在Struts2的配置文件struts.xml来使用Spri ...

  3. linux下安装tomcat8

    1.自己电脑下载好jdk的linux版本传到linux上或者直接用wget命令下载 安装文件放上去,用ls命令查看下载后的文件,看到apache-tomcat-8.0.28.tar.gz就是我们下载来 ...

  4. PHP系统编程--01.多进程与多线程

    PHP中提供了一个扩展pcntl,可以利用操作系统的fork调用来实现多进程.fork调用后执行的代码将是并行的. PHP官方没有提供多线程的扩展,pecl中有一个pthreads扩展提供了多线程的特 ...

  5. android程序员成长路径的思考

    我之前就想过要写这个话题,不过之前没有什么认识,我只是在阅读别人的见解,看法.昨天晚上,我阅读了这篇文章<产品经理罗永浩:用户体验探索,没有尽头>,这篇文章描述了罗永浩对锤子手机设计细节的 ...

  6. 【bzoj1593-预定旅馆】线段树维护连续区间

    题解: 这题非常经典啊似乎..经典模型要记住啊.. 对于每个节点维护该区间里的最大的连续区间,然后我们就可以logn递归找最前面的一段. 那就维护mx(无限制),lmx(必须从左边开始),rmx(必须 ...

  7. bzoj 1731: [Usaco2005 dec]Layout 排队布局 ——差分约束

    Description 当排队等候喂食时,奶牛喜欢和它们的朋友站得靠近些.FJ有N(2<=N<=1000)头奶牛,编号从1到N,沿一条直线站着等候喂食.奶牛排在队伍中的顺序和它们的编号是相 ...

  8. 小程序_RSA加密功能

    这是开发的第三个小程序,基于一个物流系统,简化功能开发下单流程.登录的时候,系统是使用RSA进行加解密的. 流程:第一个接口获取到后端传过来的密匙共钥(publicKey),通过公钥使用RSA加密密码 ...

  9. Java——关于static关键字的那些事总结

    前言: 先说说今天为啥要谈这个东西,虽然学Java已经有两年了,但是今天,本着温故而知新的态度,仔细的第三次翻看了<Head Firt Java>这本书,虽然这本书介绍的很多东西都特别基础 ...

  10. AGC025简要题解

    AGC025简要题解 B RGB Coloring 一道简单题,枚举即可. C Interval Game 考虑可以进行的操作只有两种,即左拉和右拉,连续进行两次相同的操作是没有用的. 左拉时肯定会选 ...