前段时间,一位在面试过后同学问我,以下代码输出是什么?被他这样一问,我逆向思维告诉我答案是"Hello"。
public class A{
public static void add(String str,String str1){
str+=str1;
}
public static void main(String args[]){
String str="Hello";
String str1="World";
add(str,str1);
System.out.println(str)
}
}
实际运行答案的确如此,带着好奇心究其因。才发现这道题考我对String,直接使用"+",会新建新的String对象,这段代码add里str实际会引用新的对象,改变另一引用空间值,而对于main里str引用空间值并为改变。如果采用StringBuffer,则不然。
public class A {
public static void add(StringBuffer str, StringBuffer str1) {
str.append(str1);
}
public static void main(String args[]) {
StringBuffer str = new StringBuffer("Hello");
StringBuffer str1 = new StringBuffer("World");
add(str, str1);
System.out.println(str);
}
}
欢迎多多交流 46773217(群)
分享到:
相关推荐
在Java编程语言中,String、StringBuffer和StringBuilder都是用来处理字符串的重要类,它们各自有特定的使用场景和特性。理解这三个类的区别对于任何Java开发者,无论是初学者还是经验丰富的程序员,都是非常重要的...
BATJ面试题讲解-String、StringBuffer、StringBuilder的区别
Java面试题-每日一题:String、StringBuffer、StringBuilder的区别
在Java编程语言中,StringBuffer和StringBuilder类是处理可变字符串序列的重要工具。它们提供了丰富的功能,如添加、插入、删除、替换字符,以及反转字符串序列等。由于这两个类的特性,它们在处理大量字符串操作时...
在Java中,我们有三种主要的字符串类:String、StringBuffer和StringBuilder,它们各自具有不同的特性和适用场景。 首先,`String`类是Java中的一个基础且不可变的类,被声明为`final`,其内部属性也是`final`的。...
在Java编程语言中,`String`与`StringBuffer`是两个重要的字符串处理类,它们各自具有独特的特性和用途,尤其在面试或笔试中常被提及作为考察应聘者对Java基础知识掌握程度的重要知识点。 ### `String`类:不可变性...
JAVA面试题,从源码角度分析StringBuffer和StringBuilder的区别 在本文中,我们将从源码角度分析StringBuffer和StringBuilder的区别,这两个类都是Java中常用的字符串操作类,但是它们之间有什么区别呢?下面我们来...
Java中的String、StringBuffer和StringBuilder类都是用于处理字符串的,但它们之间存在显著的区别,主要体现在字符串的可变性、线程安全性和性能优化上。 首先,关于**可变性**,String类是不可变的。这意味着一旦...
熟练运用`String`、`StringBuffer`进行字符串操作,理解数组和集合容器的数据结构及其应用场景,以及如何在多线程环境中正确处理数据库`Connection`,都将有助于你在面试中脱颖而出。通过深入学习和实践,你可以...
Java中的字符串处理是编程中常见的任务,涉及到三个主要的类:String、StringBuffer和StringBuilder。它们之间的主要区别在于线程安全、性能和可变性。 首先,`String`类是不可变的,这意味着一旦创建了一个`String...
String和StringBuilder、...StringBuilder是Java 5中引入的,它和StringBuffer的方法完全相同,区别在于它是在单线程环境下使用的,因为它的所有方面都没有被synchronized修饰,因此它的效率也比StringBuffer要高。
答案:String、StringBuffer、StringBuilder 最大的不同是 String 不可变,后者可变。StringBuffer 是线程安全的,StringBuilder 线程不安全但是速度较快。StringBuffer 和 StringBuilder 都是可变的,但是 ...
2. StringBuffer与StringBuilder,他们是字符串变量,是可改变的对象,每当我们用它们对字符串做操作时,实际上是在一个对象上操作的,不像String一样创建一些对象进行操作,所以速度就快了。 3. StringBuilder :...
本文涵盖了 Java 基础知识面试题中的 String、StringBuffer、StringBuilder 的区别、==和 equals 的区别、String 常量池等知识点。这些建议对于 Java 开发者来说非常重要,可以帮助他们更好地理解 Java 的基础知识和...
在Java编程语言中,String类是开发者经常打交道的一个核心类,尤其在面试中,String对象的特性和操作经常成为考察的重点。以下就是10个关于Java String的面试问题,这些问题涵盖了String的基础、性能优化以及一些...
String 和 StringBuffer、StringBuilder 的区别在于 String 声明的是不可变的对象,每次操作都会生成新的 String 对象,然后将指针指向新的 String 对象,而 StringBuffer、StringBuilder 可以在原有对象的基础上...
6. **String、StringBuffer和StringBuilder的区别**:String是不可变的,而StringBuffer和StringBuilder是可变的。在多线程环境中,StringBuffer是线程安全的,适合多个线程同时访问;StringBuilder则没有线程安全...
本资源摘要信息涵盖Java基础知识点,主要涉及Java中的数据类型、equals和hashCode方法、基本数据类型和引用类型的区别、多态的理解、String、StringBuffer和StringBuilder的区别等。 1. Java中==和equals和hashCode...
88. String和StringBuffer、StringBuilder的区别是什么?String为什么是不可 变的 可变性 String类中使用字符数组保存字符串,private final char value[],所以string对象是不可变 的。StringBuilder与...