Java知识习题汇总【类与对象篇】

目录

知识汇总【对象】

知识汇总【继承和多态】

知识汇总【抽象类与接口】

判断题 

选择题

挑错题

阅读程序题


知识汇总【对象】

1. 类是对象的模板。它定义对象的属性,并提供用于创建对象的构造函数和用于操作对象的方法。类也是数据类型。使用类来声明对象引用变量。

2. 对象是类的实例。使用new运算符创建对象,使用(.)运算符通过对象的引用变量访问该对象的成员。

3. 实例变量或方法属于类的实例。它的使用与单个实例关联。静态变量是同一类的所有实例共享的变量。静态方法是一种不用实例就可以调用的方法。

4. 类的每个实例都可以访问类的静态变量和方法。最好使用类名调用静态变量和方法。例如:ClassName.method。

5.可见性修饰符指定如何访问类、方法和数据。所有客户端都可以访问公共类、方法或数据。私有方法或数据只能在类内访问。

6. 类提供getter(accessor)方法或setter(mutator)方法,使客户机能够查看或修改数据。getter方法具有签名public returnType getPropertyName()。setter方法具有签名public void setPropertyName(数据类型propertyValue)。

7. 所有参数都使用传值传递给方法。对于基元类型的参数,传递实际值;对于引用类型的参数,传递对象的引用。

8. Java数组是一个可以包含原始类型值或对象类型值的对象。当创建一个对象数组时,它的元素被指定为默认值null

9. 一旦创建,就不能修改不可变对象。为了防止用户修改对象,可以定义不可变类。

10. 实例和静态变量的作用域是整个类,而不管变量在哪里声明。实例和静态变量可以在类中的任何位置声明。

11. 关键字this可用于引用调用对象。它也可以在一个构造函数中用来调用同一类的另一个构造函数。

12. Java提供了一种将基本数据类型包装到对象中的方便方法(例如,将int包装到Integer类中),Java可以在上下文中将基本数据类型值自动转换为其相应的包装类对象,反之亦然。

13. BigInteger类对于计算和处理任何大小的整数都很有用。BigDecimal类可用于计算和处理任意精度的浮点数。

14. 字符串对象是不可变的,其内容不能更改。为了提高效率和节省内存,JVM将具有相同字符序列的两个文本字符串存储在一个唯一的对象中。这个唯一的对象称为interned string对象。

15. StringBuilder和StringBuffer类可用于替换String类。String对象是不可变的,但是可以向StringBuilder和StringBuffer对象添加、插入或附加新内容。如果字符串内容不需要任何更改,使用String;如果可能更改,使用StringBuilder或StringBuffer。

知识汇总【继承和多态】

1. 可以从现有类定义新类。这就是所谓的类继承。新类称为子类、子类或扩展类。现有类称为超类、父类或基类。

2. 构造函数用于构造类的实例。与属性和方法不同,超类的构造函数不在子类中继承。只能使用关键字super从子类的构造函数调用它们

3. 构造函数可以调用重载构造函数或其超类的构造函数。调用必须是构造函数中的第一个语句。如果没有显式调用它们,编译器会将super()作为构造函数中的第一个语句,从而调用超类的无参数构造函数。

4. 若要重写方法,必须在子类中使用与其父类中相同的签名和相同或兼容的返回类型定义该方法。

5. 实例方法只有在可访问时才能被重写。因此,私有方法不能被重写,因为它在自己的类之外是不可访问的。如果子类中定义的方法在其超类中是私有的,则这两个方法完全不相关。

6. 与实例方法一样,静态方法也可以继承。但是,不能重写静态方法。如果在超类中定义的静态方法在子类中重新定义,则隐藏在超类中定义的方法。

7. Java中的每个类都是java.lang.Object对象上课。如果在定义类时未指定超类,则其超类为Object。

8. 如果一个方法的参数类型是一个超类(例如,Object),则可以将一个对象传递给该方法的任何参数子类(例如,Circle或String)。这就是所谓的多态性。

9. 始终可以将子类的实例强制转换为超类的变量,因为子类的实例始终是其超类的实例。当将超类的实例强制转换为其子类的变量时,必须使用显式强制转换来使用( SubclassName )强制转换符号确认您对编译器的意图。

10. 类定义类型。由子类定义的类型称为子类型,由其超类定义的类型称为超类型。

11. 从引用变量调用实例方法时,变量的实际类型决定了在运行时使用该方法的哪个实现。这就是所谓的动态绑定。

12. 可以使用obj instanceof Aclass来测试对象是否是类的实例。

13. 可以使用ArrayList类创建一个对象来存储对象列表。

14. 可以使用protected修饰符来防止来自不同包的非子类访问数据和方法。

15. 使用final修饰符来指示类是final的,不能扩展,并且指示方法是final的,不能重写

 16. 抽象类跟普通类一样拥有数据域和方法,但却不能使用new操作符来实例化抽象类

知识汇总【抽象类与接口】

1. 抽象方法不能存在于非抽象类中。抽象类的子类如果不能实现父类所有的抽象方法,则子类也必须定义成抽象类。

2. 一个类如果包含有抽象方法则它必须是抽象类,但也可以定义抽象类,不包含任何抽象方法。

3. 父类是非抽象的类,子类也可以定义成抽象类。

4. 接口和类很相似,仅仅包括常量和抽象方法。在很多情况下,接口与抽象类相似,但抽象类可以包括非抽象的数据和方法。

5. 接口被当做特殊的类对待,每一个接口都会被编译成一个单独的字节码文件,这点和普通类一样。

6. Java.lang.Comparable接口定义了compareTo方法,Java类库中的很多类都实现了Comparable接口。

7. Java.lang.Cloneable接口是一个标记接口,实现这个接口就可以使用clone方法进行克隆。

8. 类只能单继承,接口可以多重继承,接口可以扩展一个或多个接口

9. 接口的接口体中只可以有常量和abstract方法

10. 在Java8之后,接口中可以定义private方法。

判断题 

1. 构造方法没有类型。(√)

2.类中的实例变量在用该类创建对象的时候才会被分配内存空间。(√)

3. 类中的实例方法可以用类名直接调用。(×)

4.局部变量没有默认值。(√)

5.方法中声明的局部变量不可以用访问修饰符(public、protected、private)修饰。(√)

6.成员变量的名字不可以和局部变量的相同。(x)

7.this可以出现在实例方法和构造方法中。(√)

8. static方法不可以重载。(x)          注:static能重载,不能被重写

9.子类继承父类的构造方法。(x)

10.可以用final修饰构造方法。(x)

11. 可以用final和abstract修饰同一个方法。(x)

12. 子类继承的方法所操作的成员变量一定是被子类继承或隐藏的成员变量。(√)

13. 在abstract类中只可以有abstract方法。(x)

14. 子类可以有多个父类。(x)

15. 接口中也能声明变量。(×)

16. 可以在接口中只声明变量,不定义任何方法。(√)

17. 接口中的常量可以不指定初值。(×)

18. Java8之后,接口中也能定义非抽象的不加default修饰的方法。(×)

选择题

1.下列正确的是() D

A.成员变量的名字不可以和局部变量的名字相同
B.方法的参数的名字可以和方法中声明的局部变量的名字相同
C.成员变量没有默认值
D.局部变量没有默认值

2. 下列叙述正确的是()。 B
A. Java应用程序由若干个类所构成,这些类必须在一个源文件中
B. Java应用程序由若干个类所构成,这些类可以在一个源文件中,也可以分布在若干
个源文件中,其中必须有一个源文件含有主类
C. Java源文件必须含有主类
D. Java源文件如果含有主类,主类必须是 public类

2. 下列叙述正确的是()D

A. final类可以有子类
B. abstract类中只可以有abstract方法
C. abstract类中可以有非abstract方法,但该方法不可以用final修饰
D. 不可以同时用final和abstract修饰同一个方法
E. 允许使用static修饰abstract方法

3. 假设C是B的子类,B是A的子类,cat是C类的一个对象,bird是B类的一个对象,下列叙述错误的是()D

A. cat instanceof B的值是 true     B. bird instanceof A的值是 true
C. cat instanceof A的值是true      D.bird instanceof C的值是true

挑错题

1.错误:B;

class  A{
    int n,m=10;//A
    n=200;//B
    void  f(){
        if(m == n)
            n = + m;//C
        else 
            n = n - m;//D
    }
}

原因:类只有成员变量和方法,不能有语句。

2.错误:D

 public interface Com{
    abstract void cry();//A
    public  int x = 0;//B
    static int y = 0;//C
}
abstract  class Cat implements Com{
    abstract void cry();//D
}

原因:Cat 中的cry方法与所继承的接口Com中的cry方法冲突;

3.错误:D

interface Com{
    int MAX=100;//A
    void f();
}
abstract class Animals implements Com{
    int MIN;//B
}
class Dog extends Animals{
    public void f(){
        MIN=10;//C
        MAX=200;//D
    }
}

原因:interface接口中的常量都是public,final,static修饰,且修饰符允许省略。MAX是常量,不可改变。 

阅读程序题

class B{
    double f(double x,double y){
        return x+y;
    }
    static int g(int n){
        return n*n;
    }
}
class C extends B{
    double f(double x, double y) {
        double m =super.f(x, y);
        return m+x*y;
    }
    static int g(int n){
        int m=B.g(n);
        return m+n;
    }
}
public class A{
    public static void main(String[] args) {
        B b=new C();
        System.out.println(b.f(10.0,8.0));//代码A
        System.out.println(b.g(3));//代码B
        
    }
}

代码A:98.0
代码B:9

你可能感兴趣的:(java,java,开发语言)