java 基础知识巩固(一)

1. &与&&区别?

    &和&&都是逻辑运算符,都是判断两边同时真则为真,否则为假;但是&&当第一个条件不成立之后,后面的条件都不执行了,而&则还是继续执行,直到整个条件语句执行完为止。

2. 使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?

    使用final关键字修饰一个变量时,是指引用变量不能变,引用变量所指向的对象中的内容还是可以改变的。

3. 静态变量和实例变量的区别?

    (1)在语法定义上的区别:静态变量前要加static关键字,而实例变量前则不加。

    (2)在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配到空间,才能使用这个实例变量。  静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了。

     总之,实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。静态变量使用时,通过类名.名称,实例变量必须要初始化后才能使用。实例变量是实例化后才会分配空间,而静态变量当类加载时会分配空间。

4. 是否可以从一个static方法内部发出对非static方法的调用?

     不可以。因为非static方法是要与对象关联在一起的,必须创建一个对象后,才可以在该对象上进行方法调用,而static方法调用时不需要创建对象,可以直接调用。也就是说,当一个static方法被调用时,可能还没有创建任何实例对象,如果从一个static方法中发出对非static方法的调用,那个非static方法是关联到哪个对象上的呢?这个逻辑无法成绩,所以,一个static方法内部不能发出对非static方法的调用。

     非static方法可以访问static方法, static方法不能访问非static方法。

5. "=="和equals方法究竟有什么区别?

     ==如果判断值类型的话,判断内容是否相同。如果判断引用类型则是判断内存地址是否相同。

     equals是非常重要的一个方法。一般equals和==是不一样的,但是在Object中两者是一样的。子类一般都要重写这个方法。

6. Integer与int的区别

    Integer是引用类型,默认值是null。而int是值类型,默认值是0

7. 作用域public,private,protected以及不写时的区别

    这四个作用域的可见范围如下所示:

    说明:如果在修饰的元素上面没有写任何访问修饰符,则表示friendly

    作用域              当前类            同一包(package)          子孙类             其他包(package)

    public                 可见                      可见                        可见                       可见

    protected           可见                       可见                        可见                     不可见

    friendly               可见                      可见                       不可见                   不可见

    private                可见                    不可见                     不可见                   不可见

8. 重载与重写区别?

    重载是同一个类中,方法名称相同,但是参数或个数不同,与返回值没有关系。

    重写是在多个类中,产生继承关系。父类与子类的方法必须相同。

9. 接口与抽象类的区别?

    区别:(1)定义接口的关键字是:interface,而定义抽象类的关键字是:abstract ;

               (2)接口中成员不能有私有,抽象类可以;

               (3)接口中定义的成员,是final public static类型,抽象类没有;

               (4)接口中不能有普通方法,抽象类可以。

   相同:两个都不new。 但是接口与抽象类是面向对象必备知识,设计模式、重构代码有必然作用

10. final,finally,finalize的区别

      final用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。内部类要访问局部变量,局部变量必须定义成final类型。

      finally是异常处理语句结构的一部分,表示总是执行。

      finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。JVM不保证此方法总被调用。

11. String、StringBuffer与StringBuilder的区别

      String 字符串常量;StringBuffer字符串变量(线程安全);StringBuilder字符串变量(非线程安全)

12. 所有的类都继承于Object类,你用过的Object类的直接子类有哪些?Object类常用的方法有哪些?

      (1) clone()方法

      保护方法,实现对象的浅复制,只有实现了Cloneable接口才可以调用该方法,否则抛出CloneNotSupportException异常。

      (2) getClass()方法

       final方法,获得运行时的类

      (3) toString()方法

      该方法用的比较多,一般子类都有覆盖

      (4) finalize()方法

      该方法用于释放资源。因为无法确定该方法什么时候被调用,很少使用。

13. 数组有没有length()方法? String有没有length()这个方法?

      数组没有length()这个方法,有length属性。String有length()这个方法。

14. hashCode方法

      该方法用于哈希查找,重写了equals方法一般都要重写hashCode方法。这个方法在一些具有哈希功能的Collection中用到。一般用于满足obj1.equals(obj2)==true。可以推出obj1.hashCode()==obj2.hashCode(),但是hashCode相等不一定就满足equals。不过为了提高效率,应该尽量使上面两个条件接近等价。

15. wait方法

      wait方法就是使当前线程等待该对象的锁,当前线程必须是该对象的拥有者,也就是具有该对象的锁。wait()方法一直等待,直到获得锁或者被中断。wait(long time)设定一个超时间隔,如果在规定时间内没有获得锁就返回。调用该方法后当前线程进入睡眠状态,直到以下事件发生:

     (1)其他线程调用了该对象的notify方法

     (2)其他线程调用了该对象的notifyAll方法

     (3)其他线程调用了interrupt中断该线程

     (4)时间间隔到了

     此时该线程就可以被调度了,如果是被中断的话就抛出一个InterruptedException异常。

16. notify方法

      该方法唤醒在该对象上等待的某个线程

17. notifyAll方法

      该方法唤醒在该对象上等待的所有线程

18. 反射的优缺点?

      反射:就是正在运行动态读取这个类的完整信息。

      优点:(1)能够运行时获取类的实例,大大提高系统的灵活性和扩展性

                 (2)与Java动态编译相结合,可以实现无比强大的功能

      缺点:(1)使用反射的性能较低

                 (2)使用反射相对来说不安全

                 (3)破坏了类的封装性,可以通过反射获取这个类的私有方法和属性

      由于字段和方法接入时要远慢于直接代码,因此反射机制主要应用在对灵活性和扩展性要求很高的系统框架上,普通程序不建议使用。

19. 运行时异常与一般异常有何异同?

      异常表示程序 运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错去。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出去未被捕获的运行时异常。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值