栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JAVA基础复习(三)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JAVA基础复习(三)

1.三大特性

封装:提供一些方法供外部访问对象内部信息

继承:

1.子类继承父类的所有变量和方法,但是不能访问父类的私有变量和方法。

2. 子类可以增加自己独有的变量和方法

3. 子类可以重写父类的方法

多态:

父类的引用指向子类,只能调用父子类都有的方法,如果子类重写了方法,则调用的实际是子类的方法。

2.接口和抽象类

共同之处:1.都不能实例化 2.都可以有默认实现(接口可以使用default,java8)3.都可以包含抽象方法

区别:1.可以实现多个接口,只能继承一个类 2.接口的成员变量只能是public static final,类的成员变量默认是default,在子类可以重定义。

3.深拷贝、浅拷贝、引用拷贝

引用拷贝两个引用指向堆中同一个对象。

浅拷贝新创建一个对象,对象中的基本类型会复制一份,与原数值互相独立,但是对象中有内部对象,则直接复制引用地址,拷贝对象和原对象中的内部对象会同步改动。

深拷贝就是不同的对象,在堆中新建。

4.==和equals

基本数据类型 == 比较值,引用数据类型 ==比较对象内存地址

equals用来判断对象是否相等,不能用来判断基本数据类型变量是否相等。String是特例,equals重写过直接比值

5.hashcode

重写equal却不重写hashcode,在插入map时候因为是先计算hashcode,可能导致两个equal为true的类因为hashcode不同 被重复插入。

6.String不可变,StringBuilder和StringBuffer继承自AbstractStringBuilder,使用字符数组保存字符串。

Sring和Stringbuffer线程安全。

String不可变是因为String内部的字符串数组是私有的并且不提供修改字符串的方法,同时作为final类,String不能被继承,子类无法破坏不可变性。

字符串相加实际是使用Stringbuilder append。循环相加,会创建过多StringBuilder。

字符串常量池,通过初始化创建的字符串都会放入,且可重复使用

String str = new String("str");会创建1-2个字符串对象

如果之前常量池中有,只会在堆中创建一个对象。如果没有,会在堆中创建1个对象,在字符串常量池中创建一个。

String str = "str"

如果之前常量池中有,只会返回对象引用。如果没有,会在字符串常量池中创建1个对象,返回对象引用。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/837824.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号