标签 Java编程 下的文章

intern 方法有什么作用?JDK 源码里已经对这个方法进行了说明: * <p> * When the intern method is invoked, if the pool already contains a * string equal to this {@code String} object as determined by * the {@link #equals(Object)} method, then the string from the pool is * returned. Otherwise, this {@code String} object is added to the * pool and a reference to this {@code String} object is returned. * <p>如果当前字符串的内容已存在于字符串常量池(即通过 equals() 方法比较返回 true,表示内容相同),则直接返回字符串常量池中的字符串引用。

- 阅读剩余部分 -

String 不是不可变类吗?字符串拼接是如何实现的?String 的确是不可变的,“+”的拼接操作,其实是会生成新的对象。例如:String a = "hello "; String b = "world!"; String ab = a + b;在jdk1.8 之前,a 和 b 初始化时位于字符串常量池,ab 拼接后的对象位于堆中。经过拼接新生成了 String 对象。如果拼接多次,那么会生成多个中间对象。

- 阅读剩余部分 -

String str1 = new String("abc")和 String str2 = "abc" 和 区别?两个语句都会去字符串常量池中检查是否已经存在 “abc”,如果有则直接使用,如果没有则会在常量池中创建 “abc” 对象。String s = new String("abc")创建了几个对象?很明显,它创建了一个或两个对象。如果字符串常量池中已经存在 "abc",则只创建一个对象;否则,创建两个对象。

- 阅读剩余部分 -

String 和 StringBuilder、StringBuffer 的区别?String: String 类型的值一旦创建就不能被修改,任何对 String 的修改都会生成一个新的 String 对象。StringBuffer: StringBuffer 类似于 String,但是它的值可以被修改。StringBuffer 使用 synchronized 来保证线程安全,在多线程环境下使用较为安全。

- 阅读剩余部分 -

Java 创建对象有哪几种方式?Java 中有以下四种创建对象的方式:使用 new 关键字创建新对象:通过调用类的构造方法,使用 new 关键字创建一个新的对象实例。使用反射机制创建对象:通过 Class 类的 newInstance() 方法或者 Constructor 类的 newInstance() 方法,可以在运行时动态地创建对象。

- 阅读剩余部分 -

深拷贝和浅拷贝?浅拷贝:浅拷贝仅复制被拷贝对象的成员变量值,包括基本数据类型的值和引用数据类型变量的地址值。对于引用类型变量指向的堆中的对象,浅拷贝只复制其地址,因此被拷贝对象和拷贝后的对象会共享同一个对象实例。

- 阅读剩余部分 -