JavaGuide八股文自用总结 Day2

本文介绍了Java编程中的面向对象概念,包括通过实例化对象解决问题,以及构造方法、继承、抽象类和接口的使用。强调了super和this关键字在继承中的作用,以及浅拷贝和深拷贝的区别。还讨论了hashCode()在哈希表中的作用,以及String类的不可变性和使用final修饰String的影响。
摘要由CSDN通过智能技术生成

1.面向对象:通过实例化对象,使用对象调用方法解决问题;面向过程:将问题解决拆分成一系列方法解决。

2.构造方法无法继承重写,可以方法重载,不用写上void否则成为普通方法。

3.关于继承:子类拥有父类的所有属性和方法其中包括私有类型,只是私有方法和属性无法访问。

4.抽象类和接口:抽象类是对事物的抽象,接口是对行为的抽象。例如飞机和鸟都可以飞,但是飞机有直升机和战斗机类的不同并且鸟也有种类不同,可以使用继承抽象类解决。飞的行为可以用接口实现。

5.关于继承中super,this:super()表示通过子类去调用父类的构造方法。this()表示调用类中的其他构造方法。如果类中都没有会默认调用super()。使用super()可以初始化父类封装好的属性。super只是代表父类的特征,没有保存地址。

6.浅拷贝中拷贝对象和原对象共用同一个内部对象。深拷贝会完全复制整个对象,包括这个对象所包含的内部对象。

 

7.hashCode() 数据结构散列表内容。由于加入Hash容器的规则是元素经过hashCode()散列函数处理后比对hashCode值,如果hashCode值所对的索引有其他元素存在,则继续判断元素值是否相等使用equals(),不相等通过散列算法分配其他位置,相等则不加入。如果hashCode值所对的索引没有其他元素存在,则直接加入Hash容器。

8.字符串使用“+”内部调用StringBuilder的append方法拼接字符串。String类对象在循环中使用“+”会创建多个StringBuilder对象,但是直接创建StringBuilder使用append()方法只会创建一个对象。

9.String类型的不可变性。只有通过反射才能改变当前创建的String类对象的值。通过对引用变量的赋值修改,实际只是创建了一个新的对象。

10.

 使用final修饰String,在程序编译阶段当常量访问,相当于访问同一个字符串常量池中的字符串。

 

没有final的修饰使用str1+str2则相当于创建一个新的对象,比较得到false。str3创建的对象在编译阶段放入常量池中,str5得到str3指向的字符串的地址。str3和str5指向字符串常量池中字符串的同一个地址。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值