String 不可变字符串(字符串常量)

来源:互联网 发布:尼泊尔弯刀数据图纸 编辑:程序博客网 时间:2024/06/06 05:03

作者:叁念


String 不可变字符串(字符串常量)


1.使用String

String s1 = "hello";//直接赋值String s2 = new String("hello");//使用new关键字

(1)显式的String常量
String s1 = “hello”; // 在常量池中创建一个”hello”的String实例
String s2 = “hello”; // 由于常量池中已经存在了一个”hello”,所以就不创建新的了
* 字符串的引用在栈中

(2)使用new关键字
String a = new String(“hello”);
String b = new String(“hello”);
// 代码被加载时,在常量池中创建一个”hello”实例
// 1 执行时,堆中创建了一个hello的String 实例
// 2 执行时,堆中又创建了一个hello的String实例


2.拼接

java中使用 + 进行字符串拼接

        String str1 = "a";        String str2  = "b";        String str;        str = str1 + str2;

3.子串

        String str = "yesGo!";        System.out.println(str.substring(1,2));//输出:e        System.out.println(str);//输出:yesGo!

4.字符串的比较

  • 使用equals来检测两个字符串内容是否相等
    “a”.equals(s)

  • 不区分大小写,比较字符串内容相等
    “ABC”.equalsIgnoreCase(s)

  • 一定不能使用 == 来比较两个字符串内容是否相等!

public class Test {    public static void main(String[] args) {        String str1 = "a";        String str2 = "b";        String str3 = "b";        System.out.println(str1.equals(str2));//false        System.out.println(str2.equals(str3));//true        System.out.println("A".equals(str1));//fasle        System.out.println("A".equalsIgnoreCase(str1));//true   不区分大小写    }}

5.String实例是不可变的!

每一个看起来会修改String值得方法,其实是创建了一个新的String实例,
用来包含修改之后的内容,而最初的String实例没有改变


6.空串和null串

    //空串:"",长度为0的字符串,可以用以下方式判断是否是空串    if("".equals(str))    //或者    if(str.length() == 0)
  • 空串也是一个String实例,它有自己的长度(0)和内容(“”)
  • null: 表示没有任何实例和这个引用关联,判断是否为null
if(str == null)
  • 检查字符串既不是空串,也不是null(重点)
if(str != null && str.length() > 0)

7. 字符串的输入

    sc.next();  接收下一个词语(到空格为止)