Java面经总结(1)

Java面经总结(1)

此面经总结采用分点式,模块记录,便于总结整理与记忆

JavaSE总结

基本概念
1. 8种基本类型

byte类型 char 类型 int类型 short类型 long类型 double类型 float类型 boolean类型
八大类型在Java内存中的排序是每8个字节排在一起,所以会有一个内存问题是:
8个字节按照byte, char/short, int, long/double, 进行内存摆放会有几种情况。

2. String

String 统一使用static final类型进行修饰,一旦声明就不能被修改。
所以要想修改String内容可以使用StringBuffer和StringBuilder.
StringBuffer 具有线程安全,支持多并发的特性,而StringBuilder本质上是通过链表结构进行存储,它不支持多并发和线程安全。

3.“==”与equals()区别

“==”只用在基本数据类型进行数值比较,和对象引用的比较,
而equals()是通过在继承的Object中重写equals()方法来进行实例对象的值比较。
典型的如String中因为是static final类型,重写了equals()方法,所以是值比较。

为什么要重写equals()和hashcode()

在HashMap中,有key和value两值,重写hashcode()用于保证两个对象key值相同情况下可以得到相同的hashcode值,在hashcode值相同的基础上(即确定了两个对象的key值相等)再通过重写equals方法来判定两个对象的value值是否相等。(不重写的equals()比较的是对象的引用地址)

保证了我们能够真正获得这个key所对应的value

4.数组Array和列表ArrayList的区别

Array 可以包含基本数据类型和对象类型, ArrayList只能包含对象类型
Array大小固定,ArrayList的大小是动态变化的。
ArrayList中有很多方法特性如add(),remove(),iterator()等
集合都可以进行自动装箱和自动拆箱操作

5.关键字

final关键字

用final修饰的一个类,不能被继承
1.用final修饰类的好处是将方法锁定,防止任何继承类修改它
2.final修饰的方法是内嵌调用,可以提高方法调用的性能

用final修饰的一个变量,
如果是就基本数据类型的变量 则经过final初始化后就不能被修改
如果是引用类型的变量,则经过final初始化后便不能在指向另一个对象
(本质都是一样的,即不能被修改)

static关键字

1.static方法

static方法即静态方法,可以不依赖于任何对象就进行访问,因此static方法是没有this对象的。
static方法不能调用类中的非static成员变量,但类中的非static方法可以调用static成员变量
为什么main()方法是static方法呢,因为main()方法的执行没有依赖任何对象。

2.static变量
static变量也称作静态变量,静态变量和非静态变量的区别是:静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。

3.static代码块
static块可以置于类中的任何地方,类中可以有多个static块。在类初次被加载的时候,会按照static块的顺序来执行每个static块,并且只会执行一次。

static{
 	内为逻辑代码
}

4.静态内部类与非静态内部类

(1)非静态内部类实例化必须有关联的外部类实例化对象,静态内部类不需要。
(2)非静态内部类有外部类对象的引用,可以访问外部类的所有成员(方法和字段),而静态内部类只能访问静态成员
(3)非静态内部类中不能有静态成员,静态内部类中可以有
静态类的优点:1.不需要依赖实例对象,2.生命周期属于类级别,从JVM加载到JVM结束 , 3.全局唯一且只加载一次,优先于非静态

6.接口与抽象类

1.接口允许子类多重实现,而抽象类只允许子类进行继承
2.接口中只有抽象的方法,没有方法的具体实现,而抽象类中可以有某些具体的方法实现
3。接口中无构造方法,抽象类中有构造方法

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值