Java基础知识之面试题篇(更新中)。

1、可见性分为几种?
答:四种,分别是private、default、protected、public。
private:Java语言中对访问权限限制的最窄的修饰符,一般称之为“私有的”。被其修饰的变量或者方法只能被该类自身的对象访问。其子类不能访问,更不允许跨包访问。
default:即不加任何访问权限修饰符,通常称为“默认访问权限”或者“包访问权限”。该模式下,只允许在同一个包中访问。(友好变量、方法。)
protected: 介于public和private之间的一种访问修饰符,一般称之为“受保护访问权限”。被其修饰的变量以及方法只允许被类本身及其子类访问,即使子类在不同的包中也可以访问。
public:Java语言中访问权限最广的修饰符,一般称之为“公共的,公有的”。被其修饰的类、变量以及方法不仅可以跨类访问,而且允许跨包访问。
2、可见性能修饰什么?
答:类、变量、方法。
3、ctrl+T能查看什么?
答:接口的实现类或者方法。
4、可见性是不能降低的。尤其在重写接口的方法时,因为其中的方法的访问权限都是public的,重写时不可省略public。
5、构造方法也是可以重载的。
6、this代表:本类。super代表:父类。
this.调用:本类的属性或者方法。super.调用:父类的属性或者方法。
this():调用本类的无参构造方法。super():调用父类的无参构造方法。

7、final关键字可以修饰类、变量和方法。
final修饰的类无子类,final修饰的方法不能覆盖,final修饰的属性不能更改。

8、列举几个Java的final类?
答:Integer,Long,Short,Float,Double,Byte,Void,String,Class,Array。
9、abstract是?它能够修饰什么?
答:抽象。类,方法。
10、当子类没有实现抽象父类的功能,那么子类将变成:抽象类。
11、抽象类中可以有abstract方法,也可以有非abstract方法。但其不允许有方法的实现。即无方法体。
12、抽象类不可以直接使用new运算符创建对象。但他的非abstract子类必须重写他的所有abstract方法。这样的话,就可以让抽象类声明的对象成为其子类的上转型对象,并调用子类重写的方法。
13、Java的3个特性:
答:继承,封装,多态。
14、构造方法与普通方法的区别?
答:方法名与类名一致。无返回类型。即无return。
15、缺省构造的特点?
答:无参数。Java每个类至少定义一个构造方法。当一个类没有显示定义构造方法,编译程序系统会自动提供一个默认的构造方法。
16、通用构造块与普通构造方法的区别?
答:通用构造块:写在类内部,每次调用构造方法的时候都会默认执行构造块。一般构造块中装的是构造多个对象时通用的属性,参数。每次执行都会调用一次。最先执行。
普通构造方法:在创建对象(new 运算符)之后自动调用。并为这个对象的属性进行赋值。一个对象调用一次。
17、使用set,get方法的好处?
答:(1)灵活性。比如我们有一个Person类,我们给它设置一个属性name。但是我们希望在取名字的时候,不是只显示名字,而是把名字按我们的要求输出,比如”我的名字叫XX”。我们只要定义一个person对象,并给他setName(XX),在getName的时候,就会显示我的名字叫XX。
(2)安全性。比如我们的操作系统在新建用户或在共享文件的时候,经常会提示对针对某个用户的权限是什么。是只读、只写还是可读写,这里的读写就好比get/set。对于类来说,如果直接用public定义某个属性,那么这个属性是可读可写的。如果你希望一个类的某个属性是只能读取,不能写入的时候,上面用public定义某个属性就不能满足了。我们可以使用private定义属性,再定义一个get方法,但是不定义set方法来实现。反之,只定义set,不定义get则表示该属性是只写不能读的。即:使用成员变量,若定义为private,则不可读,且不可写。该成员只能同过构造函数传值,其他情况无法使用。
相当于加了一层封装。
18、System.gc()的作用?
答:垃圾回收。告诉垃圾收集器打算进行垃圾收集,而垃圾收集器进不进行收集是不确定的 。
19、列举Java中对象什么时候变成垃圾?
答:(1)指向别的对象了。(2)直接设定为null。(3)引用的方法内局部变量失效了。
⭐20、static修饰属性变量,对象会如何?
答:由类创建的所有的对象,都共用这一属性。类变量存放在静态域中。
21、通用构造块与static的通用构造块的区别?
答:通用构造块:每次调用构造方法的时候都会默认执行构造块。
static的通用代码块:随着类的加载,只加载一次。作用是初始化类。
22、异常处理中try,catch,finally的作用?
答:try(捕获异常。即存放可能出现的异常操作),catch(处理异常),finally(退出。异常处理结束)。有一点需要注意的是,无论try部分是否发生异常,finall部分都会执行。
23、多态性包括override覆盖和overload重载,请说明他们的区别。
答:重写(Override):也称覆盖。它是父类与子类之间多态性的一种表现。override从字面就可以知道,它是覆盖了一个方法并且对其重写,以求达到不同的作用。特点有:
(1)方法名、参数、返回值与父类的方法完全相同。
(2)子类方法不能缩小父类方法的访问权限。
(3)子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常)。
(4)存在于父类和子类之间。
(5)方法被定义为final不能被重写。
(6)被覆盖的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行覆盖。
重载(Overload):是一个类中多态性的一种表现。overload它是指我们可以定义一些名称相同的方法,通过定义不同的输入参数来区分这些方法。然后再调用时,虚拟机就会根据不同的参数样式,来选择合适的方法执行。特点有:
(1)参数类型、个数、顺序至少有一个不相同。
(2)不能重载只有返回值不同的方法名。
(3)针对于一个类而言。
(4)不能通过访问权限、返回类型、抛出的异常进行重载;
(5)方法的异常类型和数目不会对重载造成影响。
24、final,finally与finalize的区别?
答:final:在Java中,final可以用来修饰类,方法和变量(成员变量或局部变量)。final成员变量表示常量,只能被赋值一次,赋值后其值不再改变。类似于C++中的const。final修饰一个成员变量(属性),必须要显示初始化。
finally:finally作为异常处理的一部分,它只能用在try/catch语句中,并且附带一个语句块,经常被用在需要释放资源的情况下。
finalize:finalize()是在java.lang.Object里定义的,也就是说每一个对象都有这么个方法。这个方法在gc启动,该对象被回收的时候被调用。使用finalize还需要注意一个事,调用super.finalize();。一个对象的finalize()方法只会被调用一次,而且finalize()被调用不意味着gc会立即回收该对象,它跟析构函数不一样。
25、如下代码有错吗?
public class Test(int day, boolean ok, String str) {
this.str = str;
super(day, ok);
}

答:有的。Constructor call must be the first statement in a constructor… 调用构造器应该是第一条语句。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值