Java interview questions(No1)

1、什么是构造和析构方法?功能是?

答:

构造方法:
每个类至少有一个构造方法,类初始化时调用的方法

1.方法名和类名相同

2.无返回值类型

格式:访问权限 类名(参数列表) {};

1.自己定义构造后,就没有默认的构造方法

2.无构造方法时,默认为空参的构造方法(无参数,方法体为空)

析构方法:finalize 类销毁时,自动调用方法

当对象在内存中被删除时,自动调用该方法

在此方法中可以写回收对象内部的动态空间的代码

2、分别说明:在类上、在属性上、在方法上能使用哪些访问修饰符?

答:

在类上:public、default、final

在方法上: 访问权限:public、protected、private、default

方法修饰符:static、final

返回类型:void

在属性上:public、protected、private、default、static、final

3、请写出5个以上的JDK中的包,以及他们的基本功能

答:

java.awt:包含构成抽象窗口工具集的多个类,用来构建和管理应用程序的图形用户界面。

java.lang:提供java编成语言的程序设计的基础类。

java.io:包含提供多种输出输入功能的类。

java.net:包含执行与网络有关的类,如URL,SCOKET,SEVERSOCKET。

java.applet:包含java小应用程序的类。

java.util:包含一些实用性的类。

4、什么是包装类?Java中都有哪些包装类?

答:

在JDK中针对各种基本类型分别定义相应的引用类型称为封装类。

Boolean、Byte、Short、Integer、Long、Float、Double、Character。

5、OOP(面向对象)语言的三大特征是什么?
答:

封装性,继承性,多态性

6、分别表述类的三大特性及其他们的功能

答:

封装:隐藏类的实现细节、迫使用户去使用一个接口去访问数据、使代码更好维护。

继承:子类可以直接继承使用父类的方法,程序员只需要做的是定义额外特征或规定将适用的变化。

多态性:同一个行为具有多个不同表现形式或形态的能力。(父类型的变量可以引用子类型的对象)

7、如何实现继承?继承的规则?

答:

    public class A extends B{
    }

(1) 单继承性

(2) 构造方法不能继承

(3) super引用父类,调用父类的属性,方法

(4) 当子类中出现与父类的方法名,返回类型,参数列表相同的方法时要覆盖此方法

8、简述this和super的功能和用法

答:

this :

(1) 能访问除构造方法以外所有的属性、方法,通过this.来调用方法和属性
(2) 不可以在静态方法中使用
(3) 在调用其它构造方法时,必须放在该构造方法的第一行
(4) 在构造方法中使用this(参数列表),相当于调用本类的其它构造方法,它必须作为构造方法的第一句。

super :
访问父类

(1) super.点取父类中被子类隐藏的方法和属性
(2) 通过 super(参数列表) 来调用父类的属性和方法,在调用父类的构造方法时必须放在子类构造方法里的第一行。

9、如何确定在多态的调用中,究竟是调用的那个方法?

答:

new的是哪一个类就是调用的哪个类的方法。(一个方法可能沿着继承链的多个类中实现,Java虚拟机在运行时动态绑定方法的实现,这时由变量的实际类型决定的。)

10、什么是重载?简述重载的规则

答:

定义:

在一个类中出现方法名相同,但参数列表不同时,这种情况就是重载。

规则:

(1) 方法名称必须相同;
(2) 参数列表必须不同(个数不同,或类型不同,或参数排列顺序不同);
(3) 与返回类型无关。

11、什么是方法的覆盖?什么情况下出现?

答:

方法覆盖:

子类可以修改从父类继承过来的行为,也就是说子类可以创建一个与父类方法有不同功能的方法,但具有相同的:名称、返回类型名和参数列表。
在父子类的情况下出现时。

12、方法覆盖的规则?

答:

(1) 方法名要和父类中被覆盖的方法名相同,返回类型相同,参数列表相同。

(2) 访问权限要大于等于被覆盖方法的权限。

(3) 例外列表要小于等于被覆盖方法的例外列表。

13、static修饰符的功能是?可以用在什么地方?怎么访问?

答:

static 修饰符功能:

(1) 共用一块内存区域,也就是用static修饰的变量或成员方法对所有类的实例都是相同的。

(2) 静态成员方法和静态变量的优点在于他们能在没有创建类的任何一个实例的情况下被引用。

(3) 可以用在方法或属性上。

访问方式:

(1) 直接使用类名调用

(2) new 一个实例,用实例调用

14、static的基本规则

答:

(1) 类中的静态方法只可以调用静态的属性和方法,不允许调用非静态的属性和方法。

(2) 静态变量为类变量,可以用类名直接调用静态的属性和方法。

(3) 静态方法中不允许出现this和super

(4) 构造方法不允许声明static

(5) 非静态变量为实例变量,通过实例调用

(6) 静态方法不能被非静态方法覆盖

15、final修饰符的功能是?可以用在什么地方?

答:

功能:final标记所有通用的功能,不能随意更改;可以用在类、属性和方法上。

16、final的基本规则

答:

(1) final修饰的类不能被继承

(2) final修饰的成员变量只允
许赋值一次,且只能通过构造方法里赋值。

(3) final修饰的局部变量即为常量,只能赋值一次。

(4) final修饰的方法不允许被子类覆盖。

17、什么是抽象方法,什么是抽象类

答:

用abstract修饰的方法,只有方法的声明,而没有方法的实现,就叫抽象方法。
用abstract修饰的类,就叫抽象类。

18、抽象类的规则

答:

(1) 抽象类内部可以没有抽象方法

(2) 必须用abstract修饰

(3) 不能够直接使用抽象类,必须通过子类继承并且实现

(4) 抽象方法不允许被private修饰

19、什么情况下使用抽象类

答:

(1) 当一个类的一个或多个方法是抽象方法时;

(2) 当类是一个抽象类的子类,并且不能为任何抽象方法提供任何实现细节或方法体时;

(3) 当一个类实现一个接口,并且不能为任何抽象方法提供实现细节或方法体时。

20、equals方法和“= =”的功能和区别

答:

功能:判断对象是否相等

区别:equals方法比较的是对象的值

= =:比较的是对象值的内存地址,对基本数据类型来说 = = 比较的是数值

21、toString方法的功能和基本写法

答:

返回一个String类型

public String toString(){
    return " ";
}

22、String的方法的功能和基本使用方法,请描述5个以上

答:

(1)substring(参数1,参数2); 功能:取字符串中参数1到参数2的的所有字符; "String".subString(0,1);

(2)replace(参数1,参数2); 功能:用参数2中的值替换字符串中所有参数1的值; "String".replace(ing,tt);

(3)equals( ); 功能:判断两个字符串是否相等 "String".equals("tt");

(4)trim( ); 功能:去掉字符串两边的空格 "String".trim();

(5)indexof( ); 功能:查找字符串中参数所在位置,并返回字符串第一个出该参数的下标 "String".indexOf("ing");

(6)split( ); 功能:根据参数分割该字符串 "String".split("-");

23、为什么使用StringBuffer类?有什么功能和优点?

答:

(1)只创建一个对象

(2)StringBuffer 对象的内容是可以被修改的

(3)除了字符的长度之外,还有容量的概念

(4)通过动态改变容量的大小,加速字符管理

24、如何使用Java读写系统属性?

答:

Properties props = System.getProperties();
Enumeration prop_names = props.propertyNames();

while (prop_names.hasMoreElements()) {
    String prop_name = (String) prop_names.nextElement();
    String property = props.getProperty(prop_name);
    System.out.println("Property '" + prop_name + "' is '"+ property + "'");
}

写:

System.setProperties(props);

25、简述properties文件的结构和基本用法

答:

结构:扩展名为properties的文件,内容为key、value的映射,例如“a=2”

用法:

public class Test {
    public static void main(String args[]) {
    try {
    String name = "test.properties";
    InputStream in = new BufferedInputStream(new FileInputStream(name));
    Properties p = new Properties();
p.load(in);
        System.out.println("a的值==" + p.getProperty("a"));
     } catch (Exception err) {
         err.printStackTrace();
            }
    }
}
posted @ 2018-03-14 18:47  微微_echo  阅读(205)  评论(0编辑  收藏  举报