Java复习题
1 请问程序片段输出的结果是()
A、编译失败
2 关于合集框架的描述哪个是不正确的?()
D、Map和Collection有共同
3 以下()是Java中关于接口实现的关键字。
D、implements
4 下列能表示数组s元素的个数是()
B、s.length
5 面向对象的三大特征:封装、继承、多态
6 下列关于创建A类的对象a的语句中正确的是()
B、A
7 StringBuffer类字符串对象的长度是()
C、可变
8 欲构造ArrayList类的一个实例,此类实现了List接口,下列()语句是正确的
B、List myList = new ArrayList();
9 Collection接口、List接口、ArrayList它们之间的关系是()
D、Collection接口是List接口的父接口,ArrayList实现了List
10 Java中所有的类都是通过直接或间接继承()类得到的
A、java.lang.Object
11 关于以下代码,this.color输出的结果正确的是()
public class Fruit{
public String color = "绿色";
//定义收获方法
public void harvest(){
String color = "红色";
System.out.println("水果原来是:"+this.color+"的!");
}
}
C、绿色
12 关于访问控制符private修饰的成员变量,以下说法正确的是()
C、只能被该类自身所访问和修改
13 下列关于异常的描述正确的是()
C、Exception是所有异常类的父类
14 关于抽象类的说法下面正确的是()
B、抽象类不能实例化对象
15 如果想在子类Bird中使用父类的带参数的构造方法,则需要在子类中通过代码调用,正确的是()
A、public Bird(){super(“羽毛”);}
public static void main(String[] args){
int a;
String b;
final char c;
System.out.println(a+","+b+","+c);
}
D、编译失败
16 方法中印用与局部变量重名的成员变量需要用到的关键字是(this);子类构造方法中调用父类的构造方法,应该放在子类构造方法的(super)。
17 如果子类中的某个方法的声明部分与它的父类中的某个方法完全一样,则称子类中的这个方法(覆盖)了父类的同名方法。
1 Java中类成员的限定有以下几种:public、protected、default、private,其中 private的作用限制最大
2 Java集合框架体系中哪类集合中的元素不能重复(set)
3 一个类实现一个接口,使用哪个关键字(implements),定义抽象类需要使用哪个关键字(abstract)。
4 如果一个属性不属于任何一个对象,而是属于类本身,要用(static)修饰。
5 Java语言中,(extends)的继承只支持单继承,(interface)的继承可以多继承。
6 Java中类成员的访问控制符有以下几种:private,public,(protected),(default),其中(public)的限定的范围最大。
7 被关键字()修饰的方法是不能被当前类的子类重写。
8 Java语言中,多态在类内部表现为方法的(重载),多态在类之间表现为方法的(重写)。
9 Java虚拟机在类加载,会一次性执行关键字(static)修饰的代码块。
10 JDK5.0之前,为了实现参数类型任意化,都是通过Object类型来处理的,JDK5.0开始,Java引入了参数化类型的概念,这种参数化类型称为 泛型。
1 简述String、StringBuffer以及StringBuilder的区别
答:String是不可变的字符串类,每次对String进行操作时都会创建一个新的String对象,适用于不需要修改字符串的场景。
StringBuffer和StringBuilder是可变的字符串类,可以进行字符串的修改操作。StringBuffer是线程安全的,适用于多线程环境下的字符串操作;StringBuilder则是非线程安全的,适用于单线程环境下的字符串操作。StringBuilder的性能通常比StringBuffer略好,但在多线程环境下应使用StringBuffer来保证线程安全性。
简单来说,如果字符串需要频繁修改且在多线程环境下操作,使用StringBuffer;如果在单线程环境下频繁修改字符串,使用StringBuilder;如果字符串不需要修改,使用String即可。
2 简述Java参数传递机制
答:在Java中,参数传递的机制可以简单概括为"值传递"。当我们将一个参数传递给一个方法时,实际上是将参数的值复制一份给方法内部使用。
如果参数是基本数据类型(如int、float等),那么方法内对参数的修改不会影响到原始变量的值。因为方法内部操作的是参数值的副本。
如果参数是对象类型(如String、数组、自定义类等),那么方法内对参数的修改可能会影响到原始对象。但需要注意,方法内部对参数的修改只是修改了副本中保存的对象引用或对象的属性值,不会改变原始对象的引用。
简而言之,参数传递的机制是将值的副本传递给方法,在方法内部对参数的修改可能会影响到原始对象,但不会改变原始变量的引用。
代码题
1定义一个三角形类Triangle,包含x,y,Z三条边,定义判断三角形是否为等边三角形的方法boolean isEquilateral(), 定义计算三角形周长的方法,double permeter();在测试类的main方法中,为三角形设置三条边的值,判断给定的三条边的值组成的是否是等边三角形,并计算打印出它的周长
public class Triangle {
private double sideX;
private double sideY;
private double sideZ;
public Triangle(double x, double y, double z) {
sideX = x;
sideY = y;
sideZ = z;
}
public boolean isEquilateral() {
return sideX == sideY && sideY == sideZ;
}
public double perimeter() {
return sideX + sideY + sideZ;
}
}
public class Main {
public static void main(String[] args) {
// 创建三角形对象并设置边长
Triangle triangle = new Triangle(3, 3, 3);
// 判断是否为等边三角形
boolean isEquilateral = triangle.isEquilateral();
System.out.println("是否为等边三角形: " + isEquilateral);
// 计算并打印周长
double perimeter = triangle.perimeter();
System.out.println("三角形的周长: " + perimeter);
}
}
2 定义一个动物类Animal,有动物类型属性type和动物发声的方法sound();于动物类的狗类Dog和猫类Cat, 这两个类都要求覆盖父类的发声方法;定义AnimalDemo类,声明一个Animal对象,分别创建-一个Dog、Cat 类的对象,然后通过Animal对象来访问Dog、Cat类对象的soundO方法。
class Animal {
protected String type;
public Animal(String type) {
this.type = type;
}
public void sound() {
System.out.println("The " + type + " makes a sound.");
}
}
class Dog extends Animal {
public Dog() {
super("Dog");
}
@Override
public void sound() {
System.out.println("The Dog barks.");
}
}
class Cat extends Animal {
public Cat() {
super("Cat");
}
@Override
public void sound() {
System.out.println("The Cat meows.");
}
}
启动类
public class AnimalMain {
public static void main(String[] args) {
Animal animal = new Animal("Animal");
Dog dog = new Dog();
Cat cat = new Cat();
animal.sound();
dog.sound();
cat.sound();
}
}

浙公网安备 33010602011771号