Java基础
未读
生成包含 N 个重复字符的 Java 字符串
1、概述 在本教程中,我们将熟悉**生成N 个重复字符的*字符串***的不同选项。当我们需要添加填充空白、生成 ASCII 艺术等时,这会派上用场。 这个问题在 JDK11 中很容易解决,但是如果我们使用的是早期版本,那么还有很多其他的解决方案可用。我们将从最常见的方法开始,并从一些库中添加其他方法
Java基础
未读
深拷贝、浅拷贝和引用拷贝的区别
浅拷贝 仅拷贝被拷贝对象的成员变量的值,也就是基本数据类型变量的值和引用数据类型变量的地址值,而对于==引用类型变量指向的堆中的对象不会拷贝==。 浅拷贝时如果对象的属性是基本类型,会复制吗? 会直接复制变量的值 浅拷贝会创建新的对象吗? 会创建一个新的对象。 新对象和旧对象中的所有引用类型的属性地
Java基础
未读
字符串拼接的几种方式和区别
字符串拼接 字符串拼接是我们在Java代码中比较经常要做的事情,就是把多个字符串拼接到一起。 我们都知道,String是Java中一个不可变的类,所以他一旦被实例化就无法被修改。 不可变类的实例一旦创建,其成员变量的值就不能被修改。这样设计有很多好处,比如可以缓存hashcode、使用更加便利以及更
Java基础
未读
为什么建议使用迭代器遍历
java 推荐使用集合提供的迭代器,而不是集合本身来遍历其中的对象。因为迭代器遍历集合的方法在找到集合中的一个对象的同时,也得到带遍历的后继对象的引用,因此迭代器可以快速地遍历集合。 例如set集合是无序的,使用for遍历不了;再比如链表结构如果不使用迭代器的话,每次调用get方法都会从头开始遍历到
Java基础
未读
String对“+”的重载
String s = “a” + “b”,编译器会进行常量折叠(因为两个都是编译期常量,编译期可知),即变成 String s = “ab”; 对于能够进行优化的(String s = “a” + 变量 等)用 StringBuilder 的 append() 方法替代,最后调用 toString(
Java基础
未读
StringBuilder和StringBuffer的区别
StringBuilder 可变字符串序列 线程不安全 执行速度快 StringBuffer 可变字符串序列 线程安全 执行速度慢
Java基础
未读
Stream API
1、概述 Stream 是 Java8 中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。使用Stream API 对集合数据进行操作,就类似于使用 SQL 执行的数据库查询。也可以使用 Stream API 来并行执行操作。简而言之,Stre
Java基础
未读
Set如何判断一个对象是否存在
底层实现HashMap,数据保存在HashMap的key中,value中存储一个常量对象(在同一个线程中所有的Set的value中都是这常量对象)。 先计算Hash值判断对应的位置是否有元素,有元素的话在使用equals进行比较,所以使用HahSet必须实现hashCode方法和equals方法。
Java基础
未读
Serializable接口为什么需要定义serialVersionUID常量
【得分点】 兼容性、自定义 【参考答案】 标准回答 serialVersionUID是序列化版本,为一个类定义序列化版本,是出于兼容性的考虑。如果某个类随着项目进行了升级,那么对于升级之前序列化的数据,在升级之后反序列化时就很可能出现不兼容的情况。如果事先定义了序列化的版本,则在反序列化的时候,只要