判断题:
Java中,protected修饰的成员变量和成员方法可以被本类、子类、同一个包的访问,但不能被不同包的其他类访问。 对
含有抽象方法的类是否一定是抽象类。 对
抽象类可以具备构造函数,所以抽象类可以直接实例化。 错
抽象类可以包含非抽象方法。 对
抽象类中的抽象方法必须在子类中重写。对
抽象方法可以没有方法体,也可以有方法体。 错
以下是 30 道 Java 基础编程选择题:
选择题:
1. 以下哪个是 Java 中的基本数据类型?( C )
A. String B. ArrayList C. int D. HashMap
2. 定义一个整型变量并赋值为 10,以下正确的是( A )
A. int num = 10;
B. Integer num = 10; C. int num = “10”; D. float num = 10;
3. 以下哪种循环结构至少会执行一次循环体?( C )
A. for 循环 B. while 循环 C. do-while 循环 D. 以上都不是
4. 在 Java 中,方法重载是指( A )
A. 多个方法名字相同,但参数类型或个数不同 B. 多个方法名字不同,但返回值类型相同
C. 多个方法名字相同,参数类型和个数也相同,但返回值类型不同 D. 以上都不是
5. 以下关于 Java 类的说法正确的是( C )
A. 一个 Java 源文件只能有一个类 B. 类中的成员变量必须是私有(private)的
C. 类可以包含属性和方法 D. 类名必须与文件名相同
6. 若有数组定义 int[] arr = {1, 2, 3, 4, 5};
那么 arr.length 的值是( B )
A. 4 B. 5 C. 6 D. 不确定
7. 在 Java 中,以下哪种数据类型的默认值是 0?( C )
A. boolean B. char C. int D. double
8. 以下关于 if-else 语句的描述错误的是( D )
A. if 后面的条件表达式必须用括号括起来 B. else 子句不能单独使用,必须和 if 语句配合
C. 可以有多个 else if 分支 D. 条件表达式只能是关系表达式
9. 以下哪个关键字用于在子类中调用父类的构造方法?( B )
A. this B. super C. extends D. implements
10. Java 中,字符串连接可以使用( A )
A. + 运算符 B. - 运算符 C. * 运算符 D. / 运算符
11. 以下关于数组的初始化,错误的是( D )
A. int[] a = new int[3]; a[0] = 1; a[1] = 2; a[2] = 3;
B. int[] a = {1, 2, 3};
C. int[] a = new int[] {1, 2, 3};
D. int a[] = new int[3] {1, 2, 3};
12. 以下哪个集合类是有序且可重复的?( C )
A. HashSet B. TreeSet C. ArrayList D. LinkedList
13. 在 Java 中,异常处理的关键字不包括( D )
A. try B. catch C. finally D. throwable
14. 以下关于方法参数传递的说法正确的是( C )
A. 基本数据类型是引用传递 B. 引用数据类型是值传递
C. 基本数据类型是值传递 D. 无论是基本数据类型还是引用数据类型都是引用传递
15. 若要在 Java 中定义一个常量,应该使用( A )关键字。
A. final B. static C. const D. private
16. 以下关于 Java 接口的描述错误的是( B )
A. 接口中的方法默认是 public 和 abstract 的 B. 接口可以包含属性
C. 一个类可以实现多个接口 D. 接口不能被实例化
17. 以下代码的输出结果是:(C)
int x = 5;
System.out.println(++x \* 2);
A. 10 B. 11 C. 12 D. 13
18. 以下哪个不是 Java 中的访问修饰符?( D )
A. public B. protected C. default D. friend
19. 在 Java 中,以下哪种数据类型用于表示单个字符?( A )
A. char B. String C. Character D. byte
20. 以下关于 for-each 循环的说法正确的是( A )
A. 可以用于遍历数组和集合 B. 可以修改遍历元素的值
C. 只能用于遍历数组 D. 效率比普通 for 循环低
21. 若有类 A 和类 B,B 继承自 A,以下说法正确的是( D )
A. B 可以访问 A 的私有成员 B. B 必须重写 A 的所有方法
C. A 可以访问 B 的特有成员 D. B 可以继承 A 的非私有成员
22. 以下关于 Java 中包(package)的描述错误的是( D )
A. 包可以用于组织类 B. 不同包中的类名可以相同
C. 包名通常是小写字母 D. 导入包使用 import 关键字,且必须放在类定义的开头
23. 以下代码的输出结果是:( B )
String str = "Hello";
System.out.println(str.substring(1, 3));
A. He B. el C. lo D. llo
24. 以下关于 Java 中构造方法的描述错误的是( C )
A. 构造方法名与类名相同 B. 构造方法可以有参数
C. 构造方法可以有返回值 D. 如果没有定义构造方法,编译器会自动生成一个默认构造方法
25. 以下哪个集合类是无序且不允许重复的?( B )
A. ArrayList B. HashSet C. LinkedList D. TreeSet
26. 在 Java 中,以下代码的输出结果是:( B )
int a = 3;
int b = 4;
System.out.println(a > b? a : b);
A. 3 B. 4 C. 7 D. 以上都不是
27. 以下关于 Java 中 static 关键字的说法错误的是( B )
A. 被 static 修饰的成员属于类,不属于对象 B. 静态方法可以直接访问非静态成员
C. 可以用 static 修饰变量、方法和代码块 D. 静态代码块在类加载时执行一次
28. 若有方法 public void print(int num) {},以下调用正确的是( C )
A. print(“5”); B. print(5.0); C. print(5); D. print(true);
29. 以下关于 Java 多态性的描述错误的是( C )
A. 多态性通过方法重写和方法重载实现 B. 父类引用可以指向子类对象
C. 子类对象可以直接赋值给父类引用,不需要强制类型转换 D. 多态可以提高代码的扩展性和维护性
30. 以下代码的输出结果是:( B )
int[] arr = {1, 2, 3, 4, 5};
for (int i : arr) {
if (i 3) {
continue;
}
System.out.print(i + " ");
}
A. 1 2 3 4 5 B. 1 2 4 5 C. 1 2 3 D. 3 4 5
31. 不允许作为类及类成员的访问控制符的是( C )
A.public
B.private
C.static
D.protected
32. Person类的一个无形式参数无返回值的方法,可使用类名Person作为前缀就可以调用它,该方法的形式为( )。
A.static void method( )
B.public void method( )
C.final void method( )
D.abstract void method( )
33.java 代码如下,编译运行后,输出结果是( C )。
public class Demo {
static int i;
public int run(){
i++;
return i;
}
public static void main (String args[]) {
Demo test=new Demo() ;
test.run() ;
System.out.println (test.run());
}
}
A.0 B.3 C.2 D.1
34.如下哪个是合法的Java中的标识符( A )
A.propertyName
= B.super
C.3number
D.#number
35.java程序中,main方法的格式正确的是( D )
A.static void main(String[] args)
B.public void main(String[] args)
C.public static void main(String[]s)
D.public static void main(String[] args)
36.给定java代码,如下:
public byte count(byte b1,byte b2){
return _______;
}
37.要使用这段代码能够编译成功,横线处可以填入( A ) 。
A.(byte) (b1-b2)
B.(byte) b1-b2
C.b1-b2
D.(byte) b1/b2
38.以下Java语句中,String str = “123456789”;str =str.subString(1,3);
执行后str中的值为。( A )
A.23 B.123 C.12 D.234
39.给定Java代码,如下:
abstract class Shape{
abstract void draw() ;
}
40.要创建Shape类的子类Circle,以下代码正确的是( B )
A.class Circle extends Shape{int draw() {}}
B.abstract class Circle extends Shape{}
C.class Circle extends Shape{void draw() ;}
D.以上均不对
41.给定如下java代码,编译运行时,结果是( A )。
public class Test{
public static void main (String args[]) {
for (int i=0;i<3; i++) {
System.out.print(i) ;
}
System.out.print(i) ;
}
}
【A】编译时报错
【B】正确运行,输出012
【C】正确运行,输出123
【D】正确运行,输出0123
简答题
封装一个生成0-255的随机数函数
创建学生类,学生类中包含学生的学号、姓名、年龄、年级、可以跑步、考试
【单选题】在 Java 中,以下关于类的成员变量和局部变量的说法正确的是?( D )
【A】成员变量在类的所有方法中都可见,局部变量只在定义它的方法内可见
【B】成员变量和局部变量都可以在声明时初始化
【C】成员变量有默认值,局部变量没有默认值
【D】以上都是
【单选题】在 Java 中,若要在子类中调用父类的构造方法,应使用哪个关键字?( A )
【A】super
【B】this
【C】parent
【D】base
【单选题】Java 中,以下哪种集合类是线程安全的?( C )
【A】ArrayList
【B】LinkedList
【C】Vector
【D】HashSet
【单选题】在 Java 中,以下关于异常的分类正确的是?( D )
【A】检查异常(Checked Exception)和非检查异常(Unchecked Exception)
【B】运行时异常(Runtime Exception)和编译时异常(Compile-time Exception)
【C】系统异常(System Exception)和用户自定义异常(User-defined Exception)
【D】A 和 B
【单选题】在 Java 中,以下哪个方法用于获取当前线程对象?( A )
【A】Thread.currentThread()
【B】this.thread()
【C】getCurrentThread()
【D】currentThread()
【单选题】在 Java 中,以下关于接口和抽象类的区别描述错误的是?( A )
【A】接口只能有抽象方法,抽象类可以有具体方法
【B】一个类可以实现多个接口,但只能继承一个抽象类
【C】接口中的成员变量默认是 public static final 的,抽象类中的成员变量没有此限制
【D】接口和抽象类都不能被实例化
【单选题】在 Java 中,以下哪种数据结构适合用于实现先进先出(FIFO)的队列操作?( D )
【A】Stack
【B】Queue
【C】LinkedList
【D】B 和 C
【单选题】在 Java 中,以下关于泛型的说法正确的是?( D )
【A】泛型可以提高代码的安全性和可重用性
【B】泛型只在编译时有效,运行时会被擦除
【C】可以定义泛型类、泛型方法和泛型接口
【D】以上都是
【单选题】在 Java 中,以下哪个关键字用于禁止子类重写父类的方法?( A )
【A】final
【B】static
【C】private
【D】protected
【单选题】在 Java 中,以下关于内部类的说法错误的是?( D )
【A】内部类可以访问外部类的所有成员,包括私有成员
【B】静态内部类不能访问外部类的非静态成员
【C】内部类可以是匿名的
【D】内部类不能有自己的构造方法
【单选题】在 Java 中,以下关于文件操作的类,哪个是用于读取字符文件的?( C )
【A】FileInputStream
【B】FileOutputStream
【C】FileReader
【D】BufferedReader
【单选题】在 Java 中,以下关于多态的体现形式错误的是?( D )
【A】方法重载(Overload)
【B】方法重写(Override)
【C】对象的向上转型(Upcasting)
【D】对象的向下转型(Downcasting)不是多态的体现
【单选题】在 Java 中,以下哪个类用于创建线程池?( D )
【A】ThreadPoolExecutor
【B】ExecutorService
【C】ScheduledExecutorService
【D】以上都是
【单选题】在 Java 中,以下关于垃圾回收(GC)的说法正确的是?( D )
【A】程序员可以手动启动垃圾回收机制,但不能确定回收时间
【B】垃圾回收器会自动回收不再使用的对象内存
【C】对象在没有引用指向它时,就可能被垃圾回收
【D】以上都是
【单选题】在 Java 中,以下关于数组排序的方法,哪个是 Arrays 类提供的?( A )
【A】sort()
【B】quickSort()
【C】mergeSort()
【D】bubbleSort()
【单选题】在 Java 中,以下关于包装类的说法错误的是?( C )
【A】包装类可以将基本数据类型转换为对象类型
【B】包装类都有对应的 valueOf() 方法用于创建对象
【C】自动装箱(Autoboxing)和自动拆箱(Unboxing)会带来性能损耗
【D】包装类的对象是不可变的
【单选题】在 Java 中,以下关于反射机制的说法正确的是?( D )
【A】反射可以在运行时获取类的信息,如成员变量、方法等
【B】可以通过反射创建对象、调用方法
【C】反射机制会影响程序的性能和安全性
【D】以上都是
【单选题】在 Java 中,以下关于枚举类型(enum)的说法错误的是?( C )
【A】枚举类型是一种特殊的类
【B】枚举类型的实例是有限且固定的
【C】枚举类型不能有方法和属性
【D】可以在 switch 语句中使用枚举类型
【单选题】在 Java 中,以下关于注解(Annotation)的说法正确的是?( D )
【A】注解可以用于标记代码,提供元数据信息
【B】自定义注解需要使用 @interface 关键字
【C】注解可以在编译时、运行时被处理
【D】以上都是
【单选题】在 Java 中,以下关于 lambda 表达式的说法错误的是?( C )
【A】lambda 表达式可以简化匿名内部类的编写
【B】lambda 表达式只能用于函数式接口
【C】lambda 表达式可以访问外部的非 final 变量
【D】lambda 表达式的语法格式为 (参数列表) -> {表达式或语句块}
【单选题】在 Java 中,以下关于模块化(Module)的说法正确的是?( D )
【A】模块化有助于管理大型项目的代码结构
【B】模块可以定义自己的依赖关系
【C】可以控制模块内的访问权限,哪些类对外可见
【D】以上都是
【单选题】在 Java 中,以下关于 JDBC(Java Database Connectivity)的说法错误的是?( C )
【A】JDBC 是用于连接数据库的 API
【B】通过 JDBC 可以执行 SQL 语句,如查询、插入、更新等
【C】JDBC 只能连接关系型数据库
【D】使用 JDBC 需要加载数据库驱动
【单选题】在 Java 中,以下关于 Swing 和 AWT 的说法正确的是?( D )
【A】AWT 是 Java 早期的图形界面库,存在一些局限性
【B】Swing 是在 AWT 基础上构建的,提供了更丰富的组件和更好的外观
【C】Swing 是轻量级的,AWT 是重量级的
【D】以上都是
【单选题】在 Java 中,以下关于国际化(i18n)和本地化(l10n)的说法错误的是?( D )
【A】国际化是使程序能够适应不同语言和地区的需求
【B】本地化是针对特定语言和地区对程序进行定制
【C】通过 ResourceBundle 类可以实现国际化资源的加载
【D】国际化和本地化只涉及文本内容的翻译
【考点】请简述下重载和重写的区别?
1 .重载的方法名相同,但参数列表和返回值类型不同,而重写的方法名和参数列表和返回值类型都必须相同。
2 ,重载发生在同一个类中,重写发生在父子类之间。
3 .重载的方法可以有不同的访问修饰符,而重写的方法必须与父类中的方法有相同的访问修饰符或更高的修饰符。
4 .重载是静态绑定,在编译时就已经确定了调用哪个方法,而重写是动态绑定,在运行时才确定调用哪个方法。
【考点】创建学生类,学生类中包含学生的学号、姓名、年龄、年级、可以跑步、考试
public class Student {
private String studentId;
private String name;
private int age;
private String grade;
public void run() {
System.out.println(name + " 正在跑步!");
}
public void takeExam() {
System.out.println(name + " 正在参加考试!");
}
public Student() {}
public Student(String studentId, String name, int age, String grade) {
this.studentId = studentId;
this.name = name;
this.age = age;
this.grade = grade;
}
public String getStudentId() {
return studentId;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public String getGrade() {
return grade;
}
public void setStudentId(String studentId) {
this.studentId = studentId;
}
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
public void setGrade(String grade) {
this.grade = grade;
}
}
【考点】编写一个函数,通过这个函数获取指定范围内,7的倍数及包含7的数字。
import java.util.ArrayList;
import java.util.List;
public class FindSevens {
public static List<Integer> findSevensInRange(int start, int end) {
List<Integer> result = new ArrayList<>();
for (int i = start; i <= end; i++) {
if (i % 7 0 || String.valueOf(i).contains("7")) {
result.add(i);
}
}
return result;
}
public static void main(String[] args) {
int start = 1;
int end = 100;
List<Integer> sevens = findSevensInRange(start, end);
System.out.println("范围 " + start + " 到 " + end + " 内的 7 的倍数和包含 7 的数字:");
System.out.println(sevens);
}
}
【考点】(for循环)计算0+5+10+15+…+100的和。
public class SumCalculator {
public static void main(String[] args) {
int sum = 0;
for (int i = 0; i <= 100; i += 5) {
sum += i;
}
System.out.println("0 + 5 + 10 + ... + 100 的和是: " + sum);
}
}
【考点】封装一个生成0-255的随机数的函数
import java.util.Random;
public class RandomNumberGenerator {
public static int generateRandomNumber() {
Random random = new Random();
return random.nextInt(256);
}
public static void main(String[] args) {
System.out.println("生成的随机数: " + generateRandomNumber());
}
}
【考点】封装函数,获取数组的平均值
public class ArrayAverage {
public static double getAverage(int[] array) {
if (array null || array.length 0) {
throw new IllegalArgumentException("数组不能为空!");
}
int sum = 0;
for (int num : array) {
sum += num;
}
return (double) sum / array.length;
}
public static void main(String[] args) {
int[] numbers = {10, 20, 30, 40, 50};
double average = getAverage(numbers);
System.out.println("数组的平均值是: " + average);
}
}