码迷,mamicode.com
首页 > 编程语言 > 详细

Java相近知识点

时间:2020-02-05 10:20:41      阅读:68      评论:0      收藏:0      [点我收藏+]

标签:执行   需要   ring   strong   shc   不可变   基本数据类型   als   不可   

1.==和equals()的区别

== :比较的是值是否相等

如果作用于基本数据类型的变量,则直接比较其存储的 “值”是否相等;
如果作用于引用类型的变量,则比较的是所指向的对象的地址

equals:(注意:equals方法不能作用于基本数据类型的变量,equals继承Object类,比较的是是否是同一个对象)

如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址;
诸如String、Date等类对equals方法进行了重写的话,比较的是所指向的对象的内容。

重写equals方法一定重写hashcode

1.使用hashcode方法提前校验,可以避免每一次比对都调用equals方法,提高效率
2.保证是同一个对象,如果重写了equals方法,而没有重写hashcode方法,会出现equals相等的对象,hashcode不相等的情况,重写hashcode方法就是为了避免这种情况的出现。

2.值传递和引用传递

值传递:

是基本类型的传递,会把要传递的值复制一份传递给要赋值的变量,如果数据多,会占用大量内存

引用传递

是将对象的地址值传递过去,在方法的执行过程中,两个对象的内容相同,指向同一块内存地址,也就是说操作的其实都是源数据,所以方法的执行将会影响到实际对象。

3.int和Integer

1、Integer是int的包装类,int则是java的一种基本数据类型
2、Integer变量必须实例化后才能使用,而int变量不需要
3、Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象;而int则是直接存储数据值
4、Integer的默认值是null,int的默认值是0

4.String和StringBuffer和StringBuilder

String

是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,这样不仅效率低下,而且大量浪费有限的内存空间,所以经常改变内容的字符串最好不要用 String

StringBuffer

字符串缓冲区,是线程安全的

StringBuilder

也是字符串缓冲区,线程不安全,但是效率高
对字符串进行修改的时候,特别是字符串对象经常改变的情况下,需要使用 StringBuffer 和 StringBuilder 类。效率比较StringBuilder > StringBuffer > String

Java相近知识点

标签:执行   需要   ring   strong   shc   不可变   基本数据类型   als   不可   

原文地址:https://www.cnblogs.com/programmerzx/p/12262289.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!