【笔试题】Java 易错题精选
笔试题 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 易错题精选的更多相关文章
- Java面试中笔试题——Java代码真题,这些题会做,笔试完全可拿下!
大家好,我是上海尚学堂Java培训老师,以下这些Java笔试真题是上海尚学堂Java学员在找工作中笔试遇到的真题.现在分享出来,也写了参考答案,供大家学习借鉴.想要更多学习资料和视频请留言联系或者上海 ...
- java易错题----静态方法的调用
class A{ public static String s="A.s"; } class B extends A{ public static String s="B ...
- Java易错题(1)
检查程序,是否存在问题,如果存在指出问题所在,如果不存在,说明输出结果. public class HelloB extends HelloA { public HelloB() { } { Syst ...
- java易错题
(选择二项) 8 A: B: C: D: (选择一项) 9 A: B: C: D: 正确答案是 A 您回答的是 B 回答错误 正确答案是 B,D 您回答的是 A,C 回答错误 (选择一项) 18 A: ...
- SQLServer 常见SQL笔试题之语句操作题详解
SqlServer 常见SQL笔试题之语句操作题详解 by:授客 QQ:1033553122 测试数据库 CREATE DATABASE handWriting ON PRIMARY ( name = ...
- C++笔试题2(基础题)
温馨提醒:此文续<C++笔试题(基础题)> (112)请写出下列程序的输出内容 代码如下: #include <iostream> using namespace std; c ...
- Java五道输出易错题解析(避免小错误)
收集了几个易错的或好玩的Java输出题,分享给大家,以后在编程学习中稍微注意下就OK了. 1. 看不见的空格? 下面的输出会正常吗? package basic; public class Integ ...
- Java五道输出易错题解析(进来挑战下)
转自:http://blog.csdn.net/lanxuezaipiao/article/details/41985243 收集了几个易错的或好玩的Java输出题,分享给大家,以后在编程学习中稍微注 ...
- js作用域之常见笔试题,运行结果题
笔试题中经常有运行结果题,而大多体型都是围绕作用域展开,下面总结了几种相关的题: 外层的变量函数内部可以找到,函数内部的变量(局部变量)外层找不到. function aaa() { var a = ...
随机推荐
- Leetcode 138. 复制带随机指针的链表
1.题目要求 给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点. 要求返回这个链表的深度拷贝. 2.解题思路 (1)笔试思路(求速度,拿分数):使用哈希表 /* ...
- Java设计模式の观察者模式(推拉模型)
目录: 一.观察者定义 二.观察者模式的结构(推模式实现) 三.推模型和拉模型(拉模式实现) 四.JAVA提供的对观察者模式的支持 五.使用JAVA对观察者模式的支持(自带推模式实现实例) 一.观察者 ...
- java 反射和new的区别
关于java 反射和new的区别,在这里我不做多讲,因为网上有大把资料,描述得很详细. 今天我只讲一点,为什么要用反射?直接用new不行么?干嘛弄得那么麻烦! 1.基本上效果差不多,但是new对象,无 ...
- 【设计模式】 模式PK:策略模式VS状态模式
1.概述 行为类设计模式中,状态模式和策略模式是亲兄弟,两者非常相似,我们先看看两者的通用类图,把两者放在一起比较一下. 策略模式(左)和状态模式(右)的通用类图. 两个类图非常相似,都是通过Cont ...
- jsp04状态管理
1.http 协议的无状态性 无状态是指,当浏览器发送请求给服务器的时候,服务器会响应.但当同一个浏览器再次发送请求时,服务器不会知道是刚才那个浏览器. 简单说,服务器[不会保存用户状态],不会记得客 ...
- mysql 数据库备份与还原,用户的创建与删除,用户的密码修改
1.备份数据库 要退出mysql rimideiMac-23:~ rimi$ mysqldump -u root -p pro >pro.sql ls 查看路径 2.恢复数据库 2.1直接 ...
- Eclipse中 将java Gradle项目转换为web项目
1.找到项目工作空间目录,打开.project文件,并修改文件, 修改如下: 找到:<natures> </natures>代码段,在代码段中加入如下内容并保存: ...
- 用一个时钟在FPGA中计算直方图
直方图对数字数据的分析通常是一种有用的工具.不过,要从一个直方图获得可靠的结果,必须获得大量数据,通常是要10万到100万个点.如果需要分析一个ADC的数字输出,可以采用一片FPGA(图1). 图中显 ...
- Unity下的ECS框架 Entitas简介
最近随着守望先锋制作组在gdc上发布的一个关于ecs的talk,ecs这个架构算是得到了一定的曝光度. 在这之前,github上就一直有一个C#的ecs框架名为Entitas,截止现在已经有1300+ ...
- max_element和min_element的用法
首先,max_element和min_elemetn看字面意思是求最大值和最小值,这个确实是这个意思.不过,需要注意的是,他返回的是最大值(最小值)的地址,而非最大值(最小值).对于一般数组的用法则是 ...