摘要: 为什么会哈希冲突 我们知道,在使用Map,Set这些集合时,都会重写hashcode方法,但Java中的hashCode方法会将对象映射到一个32位的整数范围(即从-2^31 到 2^31-1)。无论输入数据多么庞大,哈希函数生成的哈希值总是落在这个有限范围内。因此是会存在hash冲突的。 无论哈希 阅读全文
posted @ 2024-08-22 20:51 seven97_top 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 这是一个经典的问题,我们先从==开始看起 == "==" 是运算符 如果比较的对象是基本数据类型,则比较的是其存储的值是否相等; 如果比较的是引用数据类型,则比较的是所指向对象的地址值是否相等(是否是同一个对象)。 Person p1 = new Person("123"); Person p2 = 阅读全文
posted @ 2024-08-22 20:42 seven97_top 阅读(112) 评论(0) 推荐(0) 编辑
摘要: 先说结论,是对象!可以继续往下看 数组是不是对象 什么是对象?对象是类的一个实例,有状态和行为 Java对象: 软件的对象也有行为和状态 软件对象的状态称之为属性 方法操作对象内部状态的改变,对象的相互调用也是通过方法来完成 而java中的数组具有java中其他对象的一些基本特点。比如封装了一些数据 阅读全文
posted @ 2024-08-21 21:35 seven97_top 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 先说下结论,可以自定义包名不为java.lang的String类,区别包名是可以正常使用的。 包名不为java.lang package com.seven.jvm; public final class String { /** The value is used for character st 阅读全文
posted @ 2024-08-21 21:27 seven97_top 阅读(2) 评论(0) 推荐(0) 编辑
摘要: String, StringBuffer 和 StringBuilder 可变性 String不可变 StringBuffer 和 StringBuilder 可变 线程安全 String 不可变,因此是线程安全的 StringBuilder不是线程安全的 StringBuffer 是线程安全的,内 阅读全文
posted @ 2024-08-20 21:43 seven97_top 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 能存储多少字符,通过以下步骤来看 首先String的length方法返回是int。所以理论上长度一定不会超过int的最大值。 编译器对字符串字面量长度的限制源自Java编译器(如javac)在处理常量池时的实现。编译器源码如下,限制了字符串长度大于等于65535就会编译不通过:// src/jdk. 阅读全文
posted @ 2024-08-20 21:29 seven97_top 阅读(1) 评论(0) 推荐(0) 编辑
摘要: Java中的String是不可变对象 在面向对象及函数编程语言中,不可变对象(英语:Immutable object)是一种对象,在被创造之后,它的状态就不可以被改变。至于状态可以被改变的对象,则被称为可变对象(英语:mutable object)。-- 来自百度百科 Java8 String源码 阅读全文
posted @ 2024-08-20 20:52 seven97_top 阅读(0) 评论(0) 推荐(0) 编辑
摘要: 为什么浮点数 float 或 double 运算的时候会有精度丢失的风险呢? 《阿里巴巴 Java 开发手册》中提到:“浮点数之间的等值判断,基本数据类型不能用 == 来比较,包装数据类型不能用 equals 来判断”。“为了避免精度丢失,可以使用 BigDecimal 来进行浮点数的运算”。 浮点 阅读全文
posted @ 2024-08-20 20:39 seven97_top 阅读(0) 评论(0) 推荐(0) 编辑
摘要: 面试题引入 这里引申出一个经典问题,看下面代码 Integer a = 100; Integer b = 100; System.out.println(a == b);//true Integer c = 200; Integer d = 200; System.out.println(c == 阅读全文
posted @ 2024-08-18 23:54 seven97_top 阅读(0) 评论(0) 推荐(0) 编辑