1.Java支持的数据类型有哪些?什么是自动拆装箱?
答:
Java支持的数据类型有:byte(字节),short(短整型),int(整型),long(长整型),float(浮点型),double(双精度),char(字符型),boolean(布尔型)
自动拆装箱:
基本数据类型的自动装箱、拆箱目的是将原始类型值自动的装换成对应的对象。自动装箱与拆箱的机制可以让我们在Java的变量赋值或是方法调用等情况下使用原始类型或者对象类型更加简单直接。
自动装箱就是Java自动将原始类型值转换成对应的对象,比如将int的变量转换成Integer对象,这个过程叫做装箱,反之将Integer对象转换成int类型值,这个过程叫做拆箱。
因为这里的装箱和拆箱是自动进行的非人为转换,所以就称作为自动装箱和拆箱。原始类型byte,short,char,int,long,float,double和boolean对应的封装类为Byte,Short,Character,Integer,Long,Float,Double,Boolean。
2.接口和抽象类的区别是什么?
答:
抽象类里面可以有非抽象方法,但是接口里只能有抽象方法。
抽象类用于要创建一个体现某些基本行为的类,并为该类声明方法但不能在该类中实现该类的情况。
接口中所有方法都是抽象的,多继承性可以通过这样的接口而获得。
接口只可以定义static final成员变量。
抽象类成员可以具有访问级别而接口的成员全部public级别。
抽象类可以继承接口而接口不能继承抽象类。
3.接口是否可继承接口?接口类是否实现接口?接口类是否可继承实体
答:
接口可以继承接口。
接口类可以实现接口。
接口类可继承有构造函数的实体。
面试常考题
1、Java抽象类可以有构造函数吗?
答: 可以有。
2、Java抽象类可以实现接口吗?它们需要实现所有的方法吗?
答:可以实现,可以不实现接口所有方法,由抽象类的子类来实现。
3、Java抽象类可以是final的吗?
答:Java抽象类不可以被 final修饰,抽象类需要被继承才能使用,而被final修饰的类无法被继承。
4、Java抽象类可以有static方法吗?
答:Java抽象类中不能有静态的抽象方法。抽象类是不能实例化的,即不能被分配内存;而static修饰的方法在类实例化之前就已经别分配了内存,这样一来矛盾就出现了:抽象类不能被分配内存,而static方法必须被分配内存。定义抽象方法的目的是重写此方法,但如果定义成静态方法就不能被重写。
5、可以创建抽象类的实例吗?
答:抽象类不可以直接实例化,只可以用来继承。
6、抽象类必须有抽象方法吗?
答:抽象类可以没有抽象方法。
7、Java抽象类和接口有何不同?
8、何时选用抽象类而不是接口?
答:
接口和抽象类都能描述一般性的公有特征。一般来说,强是关系(strong is-a relationship)清晰地描述了父子关系,应该用类模拟,比如苹果是一种水果;而弱是关系(weak is-a relationship)是指对象具有某种属性,适合用接口模拟,比如苹果是可以吃的。
接口不变性是指不改变接口的使用方法,但是可以改变接口的具体实现方法,而接口的实现对用户是透明的,用户不需要关心接口的实现,只要知道如何使用接口就行了,所以接口不变性为用户提供了便利。
程序题
写一个形状接口Shape 有两个方法一个求周长,一个求面积
写一个长方形类Rect继承于形状类 增加属性长和宽 分别去覆盖求周长和求面积的方法
写一个圆形类Circle 增加属性半径 分别去覆盖求周长和求面积的方法 写一个测试类,在测试类中分别创建不同的对象放入进一个Shape 数组中进行,循环数组中的元素求周长和面积
答:略