文章目录
- 1. String str = "love"; 和 String str = new String("love);一样吗?
- 2. 如何将字符串反转
- 3. String类的常用方法有哪些?
- 4. new String("sn") + new String("ow")会创建几个对象?
1. String str = “love”; 和 String str = new String("love);一样吗?
这两种方式都可以用来创建一个 String 类型的对象,但是有所不同。
-
第一种方式:String str = “love”; 是直接赋值的方式来创建 String 对象。在编译代码时,Java 编译器会为你自动创建一个 String 对象,并将 “love” 这个字符串赋值给它,这种方式也称为字符串字面量(String Literal)。此外,Java 在编译过程中还对相同的字符串进行了常量池优化,使得字符串字面量的复用更加高效。
-
第二种方式:String str = new String(“love”);则是通过调用 String 类的构造函数来创建一个新的 String 对象,使用这种方式创建的字符串对象总是是一个新的对象,即使其内容与已有的字符串对象相同。
需要注意的是,虽然这两种方式最终都可以创建一个 String 对象,但是它们之间的差异和影响是非常大的。通常情况下,在实际开发中,我们建议尽可能地使用第一种方式,因为它更简单、更有效率、更可读性强,并且字符串字面量被广泛使用,因此将能提高代码的可维护性,并降低出错概率。
这两种方式都可以用来创建字符串对象,但是它们之间存在差异和影响,在实际使用时需要根据具体情况选择最适合的方法。
2. 如何将字符串反转
可以通过 Java 中的字符串转换类 StringBuilder 或 StringBuffer 来将字符串反转。
以下是示例代码:
String str = "Hello World!";
StringBuilder sb = new StringBuilder(str);
StringBuilder reversedStr = sb.reverse();
System.out.println(reversedStr.toString());
或者使用 char 数组来反转字符串,示例代码如下:
String str = "Hello World!";
char[] c = str.toCharArray();
int left = 0;
int right = c.length - 1;
while (left < right) {
char temp = c[left];
c[left] = c[right];
c[right] = temp;
left++;
right--;
}
String reversedStr = new String(c);
System.out.println(reversedStr);
3. String类的常用方法有哪些?
Java中String类 是一个常用的类,它提供了一系列字符串相关的函数和方法。以下是String类的一些常用方法列表:
char charAt(int index)
:返回指定索引处的字符。
int length()
:返回此字符串的长度。
String concat(String str)
:将指定字符串连接到该字符串的末尾。
boolean equals(Object anObject)
:将此字符串与指定对象进行比较。
boolean isEmpty()
:当且仅当 length() 为 0 时返回 true。
String substring(int beginIndex, int endIndex)
:返回一个新字符串,它是此字符串的一个子字符串。
String replace(char oldChar, char newChar)
: 返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。
String[] split(String regex)
: 根据给定正则表达式的匹配拆分此字符串。
boolean startsWith(String prefix)
: 测试此字符串是否以指定的前缀开头。
boolean endsWith(String suffix)
: 测试此字符串是否以指定的后缀结尾。
int compareTo(String anotherString)
: 按字典顺序比较两个字符串。
boolean contains(CharSequence s)
: 如果此字符串包含指定的 char 值序列,则返回 true。
String toUpperCase()
: 将此字符串转换为大写。
String toLowerCase()
: 将此字符串转换为小写。
String trim()
: 返回字符串的副本,忽略前导空白和尾部空白。
这些方法并不是全部,但它们是在开发中最常用和最基本的String类方法。熟练掌握这些方法将会极大地提高Java编程效率。
4. new String(“sn”) + new String(“ow”)会创建几个对象?
在这个表达式中,将会创建3个对象。
首先,new String(“sn”)将会创建一个新的String对象"sn"。
然后,new String(“ow”)同样会创建一个新的String对象"ow"。
最后,对这两个String对象使用"+“连接符号,得到一个新的字符串"snow”,也就是第三个String对象。
需要注意的是,当使用字符串连接操作符 “+” 连接字符串字面值或字符串对象时,Java编译器会在编译时将其优化为使用StringBuilder 或 StringBuffer 类来实现,以提高效率和避免频繁创建临时的字符串对象。
但是,这种优化只适用于字面值和字符串对象之间的连接,对于其他类型的数据则不起作用。
因此,在上述代码中,仍会创建3个对象。