根据提供的文档内容,我们可以归纳总结出以下几个重要的Java知识点:
### 1. 控制结构与变量作用域
**题目描述:**
```java
public static void main(String args[]){
int a = 10;
int b, c;
if (a > 50) {
b = 9;
}
c = b + a;
System.out.println(c);
}
```
**选项解析:**
- **A. 10**: 不正确。因为如果程序能够运行到`c = b + a;`这一行,那么`b`必须已经被赋值。
- **B. 19**: 不正确。同样的原因,`b`没有被赋值,所以不能直接进行加法运算。
- **C. 9**: 不正确。`b`的值取决于条件判断是否成立,而这里条件不成立,因此`b`未被初始化。
- **D. 编译错误**: 正确。在if语句外部访问`b`会引发编译错误,因为`b`仅在if语句内部被声明和初始化。
### 2. 字符与整数之间的转换
**题目描述:**
```java
int three = 3;
char one = '1';
char four = (char)(three + one);
```
**选项解析:**
- **A. 3**: 不正确。这里涉及字符和整数的运算。
- **B. 1**: 不正确。同上。
- **C. 31**: 不正确。这里的操作实际上是将字符'1'的ASCII码值加上3,然后转回字符。
- **D. 4**: 正确。`'1'`的ASCII值是49,加上3等于52,对应的字符是'4'。
### 3. 模运算
**题目描述:**
```java
public static void main(String[] args){
int a = 7;
System.out.println(a % 3);
}
```
**选项解析:**
- **A. 2.0**: 不正确。模运算的结果类型与操作数相同,都是整型。
- **B. 2**: 正确。7除以3的余数是1。
- **C. 1.0**: 不正确。同A。
- **D. 1**: 不正确。7除以3的余数确实是1,但选项描述不准确。
### 4. 条件表达式与逻辑运算符
**题目描述:**
```java
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**: 不正确。x和y都会被减1。
- **B. x=0,y=2,z=2**: 不正确。z也会被减1。
- **C. x=0,y=2,z=1**: 不正确。y会被减1。
- **D. x=0,y=0,z=1**: 正确。x和y会被减1,而z只会在`||`的右边条件成立时才会被减1。
### 5. 字符串对象的比较
**题目描述:**
```java
public static void main(String args[]){
String str = "null";
if (str == null) {
System.out.println("null");
} else if (str.length() == 0) {
System.out.println("zero");
} else {
System.out.println("some");
}
}
```
**选项解析:**
- **A. null**: 不正确。`str`不为空。
- **B. zero**: 不正确。`str`的长度不为0。
- **C. some**: 正确。`str`不为空且长度不为0。
- **D. 编译错误**: 不正确。该代码可以正常编译。
### 6. 多态性与类型转换
**题目描述:**
```java
public class Animal{
public String noise(){
return "peep";
}
public static void main(String[] args){
Animal animal = new Dog();
Cat cat = (Cat)animal;
System.out.println(cat.noise());
}
}
class Dog extends Animal{
public String noise(){
return "bark";
}
}
class Cat extends Animal{
public String noise(){
return "meow";
}
}
```
**选项解析:**
- **A. peep**: 不正确。尽管`animal`是`Dog`类型的实例,但在强制转换后,它被视为`Cat`类型的实例。
- **B. bark**: 不正确。强制转换后,`cat`被视为`Cat`类型的实例。
- **C. meow**: 正确。`cat`调用的是`Cat`类中的`noise()`方法。
- **D. 编译错误**: 不正确。这段代码可以编译成功。
- **E. 抛出运行时异常**: 不正确。由于`Dog`是`Animal`的子类,而`Cat`也是`Animal`的子类,所以这段代码不会抛出`ClassCastException`。
### 7. 对象引用与方法调用
**题目描述:**
```java
public class Foo{
public int add(int a, int b){
return a + b;
}
public static void main(String[] args){
Foo foo = null;
System.out.println(foo.add(10, 20));
}
}
```
**选项解析:**
- **A. 编译错误**: 不正确。这段代码可以编译成功。
- **B. 正常运行,但无结果输出**: 不正确。`foo`为`null`,调用`add`方法会导致运行时异常。
- **C. 30**: 不正确。调用`add`方法时`foo`为`null`。
- **D. 运行时抛出NullPointerException**: 正确。尝试对`null`引用调用方法会抛出`NullPointerException`。
### 8. 类成员变量与方法
**题目描述:**
```java
public class Test{
int x;
public static void main(String[] args){
Test t = new Test();
t.x = 5;
change(t);
System.out.println(t.x);
}
public static void change(Test t){
t.x = 3;
}
}
```
**选项解析:**
- **A. 5**: 不正确。`change`方法修改了`t.x`的值。
- **B. 3**: 正确。`change`方法将`t.x`的值修改为3。
- **C. 0**: 不正确。`Test`构造函数默认初始化`x`为0,但在`main`方法中已经显式设置了5。
- **D. 4**: 不正确。`x`的值被修改为3。
### 9. 方法重载
**题目描述:**
```java
public class A{
public void doit(){}
public String doit(){
return "a";
}
public double doit(int x){
return 1.0;
}
}
```
**选项解析:**
- **A. 无编译错误**: 不正确。存在方法签名冲突。
- **B. 代码public String doit(){行,出现编译错误**: 正确。两个`doit()`方法具有相同的签名,违反了方法重载规则。
- **C. 代码public double doit(int x){行,出现编译错误**: 不正确。该方法与其它方法签名不同。
- **D. 代码return "a";行处出现编译错误**: 不正确。该行本身没有问题。
### 10. 字符串分割
**题目描述:**
```java
String test = "This is a test";
String[] tokens = test.split("\\s");
System.out.println(tokens.length);
```
**选项解析:**
- **预期输出**: `4`。`"This is a test"`通过空格分割后会产生4个字符串。
这些题目涵盖了Java的基础控制结构、数据类型转换、运算符、字符串操作、多态性、对象引用、方法调用、类成员变量以及方法重载等核心概念。通过解答这些问题,可以帮助初学者更好地理解Java语言的基本原理,并为后续深入学习打下坚实的基础。