练习题

1、static修饰执行顺序

父类静态代码块–>子类静态代码块–>父类普通代码块–>父类构造方法–>子类代码块–>子类构造方法;

2、try…catch…finally

根据官方的JVM规范:
  如果try语句里有return,返回的是try语句块中变量值。
详细执行过程如下:
  1、如果有返回值,就把返回值保存到局部变量中;
  2、执行jsr指令跳到finally语句里执行;
  3、执行完finally语句后,返回之前保存在局部变量表里的值;
如果try,finally语句里均有return,忽略try的return,而使用finally的return.

3、HashMap和HashTable区别

区别HashMapHashTable
简介HashMap是非线程安全的,只是用于单线程环境下,多线程环境下可以采用concurrent并发包下的concurrentHashMapHashtable是线程安全的,能用于多线程环境中
是否允许null值Hashmap是允许key和value为null值的HashTable键值对都不能为空,否则包空指针异常
4、构造方法

1:构造方法可以被重载,一个构造方法可以通过this关键字调用另一个构造方法,this语句必须位于构造方法的第一行;
2: 重载:方法的重载(overload):重载构成的条件:方法的名称相同,但参数类型或参数个数不同,才能构成方法的重载。
3:当一个类中没有定义任何构造方法,Java将自动提供一个缺省构造方法;
4:子类通过super关键字调用父类的一个构造方法;
5: 当子类的某个构造方法没有通过super关键字调用父类的构造方法,通过这个构造方法创建子类对象时,会自动先调用父类的缺省构造方法;
6:构造方法不是类的成员方法;
7:构造方法不能被继承。

5、有关final

1、final关键字可以用于成员变量、本地变量、方法以及类。
2、 final成员变量必须在声明的时候初始化或者在构造器中初始化,否则就会报编译错误。
3、你不能够对final变量再次赋值。
4、本地变量必须在声明时赋值。
5、在匿名类中所有变量都必须是final变量。
6、final方法不能被重写。
7、final类不能被继承。
8、没有在声明时初始化final变量的称为空白final变量(blank final variable),它们必须在构造器中初始化,或者调用this()初始化。不这么做的话,编译器会报错“final变量(变量名)需要进行初始化”。

6、面向对象的五大基本原则

1、单一职责原则(SRP)
   一个类,最好只做一件事,只有一个引起它的变化。单一职责原则可以看做是低耦合、高内聚在面向对象原则上的引申,将职责定义为引起变化的原因,以提高内聚性来减少引起变化的原因。
2、开放封闭原则(OCP)
  软件实体应该是可扩展的,而不可修改的。也就是,对扩展开放,对修改封闭的。
3、里氏替换原则(LSP)
  子类必须能够替换其基类。这一思想体现为对继承机制的约束规范,只有子类能够替换基类时,才能保证系统在运行期内识别子类,这是保证继承复用的基础。
4、依赖倒置原则(DIP)
  依赖于抽象。具体而言就是高层模块不依赖于底层模块,二者都同依赖于抽象;抽象不依赖于具体,具体依赖于抽象。
5、接口隔离原则(ISP)
  使用多个小的专门的接口,而不要使用一个大的总接口

7、四大修饰符
权限类内同包不同包子类不同包非子类
private×××
default××
protected×
public
8、switch(expr1)

switch支持byte、short、char、int、String(jdk1.7)、Enum

9、重写和重载

1、重写(两同两小一大原则)
   方法名相同,参数类型相同,子类返回类型小于等于父类方法返回类型, 子类抛出异常小于等于父类方法抛出异常, 子类访问权限大于等于父类方法访问权限。[注意:这里的返回类型必须要在有继承关系的前提下比较]
2、重载
  方法名必须相同,参数类型必须不同,包括但不限于一项,参数数目,参数类型,参数顺序

10、abstract,interface区别

1、abstract
  含有abstract修饰符的class即为抽象类,abstract类不能创建的实例对象。含有abstract方法的类必须定义为abstract class,abstract class类中的方法不必是抽象的。abstract class类中定义抽象方法必须在具体(Concrete)子类中实现,所以,不能有抽象构造方法或抽象静态方法。如果的子类没有实现抽象父类中的所有抽象方法,那么子类也必须定义为abstract类型。
2、interface
  接口(interface)可以说成是抽象类的一种特例,接口中的所有方法都必须是抽象的(1.8有所改变)。接口中的方法定义默认为public abstract类型,接口中的成员变量类型默认为public static final。

区别

1.抽象类可以有构造方法,接口中不能有构造方法。
2.抽象类中可以有普通成员变量,接口中没有普通成员变量
3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。
4.抽象类中的抽象方法的访问类型可以是public,protected和(默认类型,虽然
eclipse下不报错,但应该也不行),但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。
5.抽象类中可以包含静态方法,接口中不能包含静态方法
6.抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型。
7. 一个类可以实现多个接口,但只能继承一个抽象类。

interface在java8中作的改变

1.增加了default方法和static方法,这两种方法完全可以有方法体
2.default方法属于实例,static方法属于类(接口)
3.接口中的静态方法不会被继承,接口中的静态变量会被继承

11、x%y,正负取值问题

取余取头,取模取尾

12、形参,实参
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值