基础面试题(二)

封装类型

基础类型和封装类型有哪些

基础数据类型有8种,对应8种封装类型

为什么有基础数据类型,还要有包装类型

所有的包装类型都是final修饰的,所以不能创建子类,包装类都是不可变对象
包装类提供了许多操作方法,这样更容易处理基础数据类型
除去int–>Integer char–>Character 其他的包装类型都是首字母大写

什么是自动装箱,自动拆箱

基础数据类型和包装类之间可以相互转换
自动装箱就是将基础数据类型转换为包装类
自动拆箱就是将包装类型转换成基础类型
比如int类型通过valueOf方法实现自动装箱

public static Integer valueOf(int i) {
        if (i >= IntegerCache.low && i <= IntegerCache.high)
            return IntegerCache.cache[i + (-IntegerCache.low)];
        return new Integer(i);
    }

使用intValue() 实现自动拆箱

/**
  *Returns the value of this Integer as an int. 
  *翻译成中文的意思是返回当前值得int类型
*/
public int intValue() {
        return value;
    }

构造方法有哪些规定

  1. 名称必须和类名相同
  2. 没有返回值也不能用void修饰
  3. 任何类都有构造方法,如果没有显式定义会有一个默认的无参构造方法
  4. 如果显式定义构造方法,就会覆盖默认的无参构造方法,如果需要无参构造方法需要显式定义
  5. 一个类可以有多个构造方法,他们是重载关系

重载和重写的区别

重写:
发生在统一个类中,方法名称相同,方法参数不同(参数类型,参数名称,参数位置),与返回值无关,可以是不同的修饰符
重载:
重载发生在继承关系中,方法名称相同,方法参数相同,返回值小于等于父类,权限修饰符大于等于父类,声明的异常小于等于父类

this 和super的区别

this表示当前类的引用,super表示父类的引用
this用于区分同名的变量名或方法名称
this引用的是当前对象的实例,也可以表示当前类的构造方法
this调用本类中的构造方法需要放在方法中的第一行

super用于子类访问父类的变量和方法,也包含构造方法
super用于区分同名的方法和变量
super调用构造方法时休要放在方法中的第一行
不能同时调用子类构造方法和父类构造方法
this和super都不能再static 环境中使用

“==”和equals的区别

“==”对于基础数据类型比较的是值,对于引用数据类型比较的是地址
equals比较的是两个对象是否相等 没用重写equals方法比较的是地址
重写后会根据逻辑进行比较

接口和抽象类的区别

接口是行为的抽象,他是抽象方法的集合
接口不能被实例化,所有的成员变量默认是public static final的
接口中的所有方法要么是抽象方法,要么是静态方法

抽象类不能被实例化
抽象类中可以有抽象方法,也可以没有抽象方法
抽象类是一个共有方法实现,或共有成员变量抽取,主要通过继承实现代码的重用

jdk1.8 接口可以有默认的方法实现,也可以有静态方法体

static在什么情况下使用

static 可以修饰方法,变量,也可以修饰类,还可以静态导包

static代码的执行顺序

  1. 父类的静态内容(包含静态代码块,静态内部类)
  2. 执行子类的静态内容
  3. 父类的非静态代码
  4. 父类的构造方法
  5. 子类的非静态方法
  6. 子类的构造方法
    同一个类中的静态内容是从上向下的
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值