String 有两种赋值方式:①直接赋值:String  s1 = "abc";

②用new开辟空间:String str1 = new String(“abc”) ;

区别:①先看下面这个程序,看结果是否相等

public static void main(String args[]) {
//都是采用直接赋值的方式
String str1 = "abc";
//String能否采用new的方式赋值呢?
String str2 = new String("abc");
String str3 = str2;
System.out.println(str1);
System.out.println(str2);
//String该如何比较是否相等呢
System.out.println(str1==str2);
System.out.println(str2==str3);
}

运行结果:abc

abc
false
true

出现上述运行结果的原因: “==”如果直接应用在字符串上进行比较,则表示比较的是内存地址的值。在

String str1="abc";证明栈内存中有个str1,在堆内存中的内容就是abc,只会产生一个对象;而在String str1 = new String(“abc”) ;代码中我们知道“abc”是匿名对象,那么在堆内存中就会有块空间是“abc”,紧接着new String("abc") 使用new在堆内存中又开辟了一个空间“abc”,最后String str1 = new String("abc") ;代码将最后生成的“abc”内存地址指向str1,最早的一个“abc”就没使用上。 即使用new 关键字开辟,则会产生两个对象 。

②直接赋值法,在堆内存中只会产生一个对象,而用new开辟空间法,最后在堆内存中是产生了两个对象。

String str1="abc";

java string 多个变量赋值 java string类型的赋值_bc

 

String str1 = new String("abc") ;

java string 多个变量赋值 java string类型的赋值_字符串_02

String 类提供的成员执行以下操作有:比较 String 对象;返回 String 对象内字符或字符串的索引;复制 String 对象的值;分隔字符串或组合字符串;修改字符串的值;将数字、日期和时间或枚举值的格式设置为字符串;对字符串进行规范化。             使用 Compare、CompareOrdinal、CompareTo、Equals、EndsWith 和 StartsWith 方法进行比较。

使用  IndexOf、IndexOfAny、LastIndexOf 和 LastIndexOfAny 方法可获取字符串中子字符串或 Unicode 字符的索引。

使用 Copy 和 CopyTo 可将字符串或子字符串复制到另一个字符串或 Char 类型的数组。

使用 Substring 和 Split 方法可通过原始字符串的组成部分创建一个或多个新字符串;

使用 Concat 和 Join 方法可通过一个或多个子字符串创建新字符串。

使用 Insert、Replace、Remove、PadLeft、PadRight、Trim、TrimEnd 和 TrimStart 可修改字符串的全部或部分。

使用 ToLower、ToLowerInvariant、ToUpper 和 ToUpperInvariant 方法可更改字符串中 Unicode 字符的大小写。

使用 Format, 可将字符串中的一个或多个格式项占位符替换为一个或多个数字、日期和时间或枚举值的文本表示形式。

使用 Length 属性可获取字符串中 Char 对象的数量;使用 Chars 属性可访问字符串中实际的 Char 对象。

使用 IsNormalized 方法可测试某个字符串是否已规范化为特定的范式。使用 Normalize 方法可创建规范化为特定范式的字符串。

"=="与equals的区别:“==”表示比较的是内存地址的值

equals表示比较两个字符串的内容是否相等

若把上面的程序改为如下程序,再看运行结果是什么:

public static void main(String args[]) {
//都是采用直接赋值的方式
String str1 = "abc";
//String能否采用new的方式赋值呢?
String str2 = new String("abc");
String str3 = str2;
System.out.println(str1);
System.out.println(str2);
//String该如何比较是否相等呢
System.out.println(str1.equals(str2);
System.out.println(str2.equals(str3);
}

运行结果:

abc
abc
true
true

总结:这些就是我对java中String类的初步认识,希望能给大家带来一定的帮助,若有什么不对的,也希望大家给与提出建议,我也从中学习、体会,谢谢!