![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java面试题
余生羁绊
梦想还是要有的,万一实现了呢。
展开
-
为什么重写equals方法必须重写hashcode方法
Java中的hashCode()方法用于返回对象的哈希码,而equals()方法用于比较两个对象是否相等。如果两个对象在equals()方法中被认为相等,那么它们的hashCode()方法应该返回相同的值。在Java中,重写equals()方法的同时也应该重写hashCode()方法,这是因为这两个方法在 Java 中是有关联的,而且它们一起影响着集合类的行为。当你只重写了equals()方法而没有重写hashCode()方法时,可能导致相等的对象拥有不同的哈希码,这会违反哈希表的基本性质。原创 2023-11-14 18:53:48 · 240 阅读 · 0 评论 -
java中对象的引用是什么?
s这个变量是Student类型,又叫做引用,= 的意思指的s这个引用 代表 右侧创建的对象 “代表” ,在面向对象里,又叫做“指向”。代表创建了一个Student对象,但是也仅仅是创建了一个对象,没有办法访问它。所以,java里对象的引用就是一个类 类型的变量 指向创建出来的对象。来代表这个对象 Student s= new Student();为了访问这个对象,会使用。原创 2023-11-08 23:08:25 · 345 阅读 · 0 评论 -
Java中常量池在堆中?
对于字符串:其对象的引用都是存储在栈中的,如果是编译期已经创建好(直接用双引号定义的)的就存储在常量池中,如果是运行期(new出来的)才能确定的就存储在堆中。对于equals相等的字符串,在常量池中永远只有一份,在堆中有多份。1. 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象存放在常量池中。java常量池不在堆中也不在栈中,是独立的内存空间管理。2. 堆:存放所有new出来的对象。原创 2023-11-08 22:57:39 · 450 阅读 · 0 评论 -
String 、Stringbuffer、StringBuilder区别
我们可以清楚的看到String的字符串的连接效率是最低的,这一点对于大量字符串的拼接可以很明显的表示出来,所以说大量字符串的拼接最好不要选择String。[StringBuffer]和StringBuilder对于字符串的拼接效率是大致相同的。3.StringBuffer和StringBuilder的默认初始容量是16,可以提前预估好字符串的长度,进一步减少扩容带来的额外开销。为啥StringBUilder效率高?2.stringBuffer是线程安全的,StringBuilder是非线程安全的;原创 2023-10-06 21:45:45 · 79 阅读 · 0 评论