【Java初阶习题】 -- 类和对象

目录

  • 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,解析:

  1. 本题中的静态成员变量x,属于类变量,只有一份。所有对x的操作针对的都是同一份。
  2. 静态成员变量的访问需要通过类名访问,这是正确的访问方式。本题中虽然使用了对象引用访问,但是不会报错,我们不建议这样访问,但不是错误,所以,不会编译报错。

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());
        }
    }
}
相关推荐
T_Wizard3 分钟前
后端转 AI 应用开发,我先把这 12 个名词理清了:一张图看懂架构、RAG、Tool Calling 与 MCP
java·ai编程
杨航 AI17 分钟前
JEV的用法
java·前端·数据库
灿飞30 分钟前
Kotlin与Java虚拟机七:空安全:把十亿美元的错误消灭在类型系统里
java·kotlin
知识搬运临时工40 分钟前
JVM 删掉偏向锁之后,一次无竞争锁从 0.3 纳秒变成 5.4 纳秒
java
IT枫斗者枫哥44 分钟前
用了BigDecimal还差一分?用四组Java代码查清原因
java·后端
一条泥憨鱼1 小时前
【消息队列】ACK确认了什么:消息队列可靠投递的完整链路
java·后端·kafka·消息队列·rabbitmq
yangmu32031 小时前
编程语言发展简史:从机器指令到智能协作
开发语言
从琳开始9892 小时前
网络原理入门(二)------OSI七层模型?TCP/IP五层(四层)模型原来是这样的
java·网络·tcp/ip·java-ee·php
文丑颜不良啊2 小时前
LeetCode1861~1880题目解析
java·leetcode
Flynn Liang2 小时前
AgentScope Java 深度解析:ReActAgent、HarnessAgent 与多智能体编排——JVM 上的自治 Agent 底座
java·大模型·架构设计·ai agent·spring ai·langchain4j·agentscope