目录
- 1.局部变量必须先初始化才能使用
- [2. this的两种用法](#2. this的两种用法)
- [3. import语句不能导入一个指定的包](#3. import语句不能导入一个指定的包)
- 4.代码块的执行顺序
- 5.静态变量的调用
- [6 . 现有一个Data类,内部定义了属性x和y,在main方法中实例化了Data类,并计算了data对象中x和y的和。](#6 . 现有一个Data类,内部定义了属性x和y,在main方法中实例化了Data类,并计算了data对象中x和y的和。)
1.局部变量必须先初始化才能使用
下面代码运行结果是
java
public static void main(String[] args){
String s;
System.out.println("s="+s);
}
A.代码编程成功,并输出"s="
B.代码编译成功,并输出"s=null"
C.由于String s没有初始化,代码不能编译通过。
D.代码编译成功,但捕获到NullPointException异常
答案:c 解析:因为在Java当中局部变量必须先初始化,后使用。所以此处编译不能通过!
2. this的两种用法
在JAVA中,假设A有构造方法A(int a),则在类A的其他构造方法中调用该构造方法和语句格式应该为()
A.this.A(x)
B.this(x)
C.super(x)
D. A(x)
this共有2种使用方式:
- this.data 访问当前对象的实例成员变量
- this.func() 访问当前对象的实例成员方法
- this(参数列表) 访问当前对象的构造方法
答案 b,解析:此处在当前类当中,调用构造方法A(int a),使用this(x);的方式。A,不能通过点号访问构造方法;C,super(x),是初始化父类继承过来的那部分成员;D:缺少this
3. import语句不能导入一个指定的包
错误的是:
A.包是一组类的集合
B.包能防止类的名字冲突
C.import 语句能够导入一个指定的包
D.import static 能够导入一些静态方法
答案:C,解析:import 语句不能够导入一个指定的包,不加类会报错,能导入包下所有的类,用到这个包底下哪个类就回调用哪个。
4.代码块的执行顺序
1.静态代码块
2.实例代码块
3.调用的对应的构造方法
另外当存在相同类型的代码块和成员变量的时候,需要看定义顺序执行。
5.静态变量的调用
java
public class HasStatic {// 1
private static int x = 100;// 2
public static void main(String args[]) {// 3
HasStatic hsl = new HasStatic();// 4
hsl.x++;// 5
HasStatic hs2 = new HasStatic();// 6
hs2.x++;// 7
hsl = new HasStatic();// 8
hsl.x++;// 9
HasStatic.x--;// 10
System.out.println(" x=" + x);// 11
}
}
A.程序通过编译,输出结果为:x=102
B.程序通过编译,输出结果为:x=103
C.10行不能通过编译.因为x星私有静态变量
D.5行不能通过编译.因为引用了私有静态变量
答案:A,解析:
- 本题中的静态成员变量x,属于类变量,只有一份。所有对x的操作针对的都是同一份。
- 静态成员变量的访问需要通过类名访问,这是正确的访问方式。本题中虽然使用了对象引用访问,但是不会报错,我们不建议这样访问,但不是错误,所以,不会编译报错。
6 . 现有一个Data类,内部定义了属性x和y,在main方法中实例化了Data类,并计算了data对象中x和y的和。
java
import java.util.Scanner;
class Data {
private int x;
private int y;
/*private Data(int x, int y) {
Data.x = x;
Data.y = y;
}*/
public Data(int x, int y) {
this.x = x;
this.y = y;
}
public int getX() {
return x;
}
public int getY() {
return y;
}
}
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNextInt()) {
int x = scanner.nextInt();
int y = scanner.nextInt();
Data data = new Data(x,y);
System.out.println(data.getX() + data.getY());
}
}
}