0
点赞
收藏
分享

微信扫一扫

String类

向上的萝卜白菜 2022-04-02 阅读 37
java

String类

String类的理解和创建对象

  • String对象用于保存字符串,也就是一组字符序列

  • 字符串常量对象是用双引号括起来的字符序列。例如:"你好"、"12.66"、"boy"等

  • 字符串的字符使用Unicode字符编码,一个字符(不区分字母还是数字)占两个字节

  • String类常用的构造器(其它看手册):

    • String s1 = new String();

    • String s2 = new String(String original);

    • String s3 = new String(char[] a);

    • String s4 = new String(char[],int startIndex,int count)

  • String类实现了Serializable接口,所以String可以串行化(可以在网络上传输)

  • String类实现了Comparable接口,所以String对象可以比较大小

  • String类是final类,不能被其它的类继承

  • String有属性 private final char value[]; 用于存放字符串内容

    • 注意:final修饰的是value这个引用变量,所以value引用变量存放的地址不可以修改

String对象的两种创建方式

  1. 方式1:直接赋值 String s = "word";

    • 先从常量池查看是否有"word"数据空间,如果有,则直接指向;如果没有则重新创建,然后指向。s最终指向的是常量池的空间地址。

  2. 方式2:调用构造器 String s = new String("word");

    • 先在堆中创建空间,里面维护了value属性,指向常量池的"word"空间。如果常量池没有"word",则重新创建,如果有,则直接通过value指向。s最终指向的是堆中的空间地址。

String对象的特性

  • String是一个final类,代表不可变的字符序列

  • 字符串是不可变的。一个字符串对象一旦被分配,其内容是不可变的

1.以下语句创建了几个对象?

String s1 = "hello";
s1 = "abc";

2.以下语句创建了几个对象?

String a = "hello"+"abc";

3.以下语句创建了几个对象?

String a = "hello";
String b = "abc";
String c = a+b;

4.以下代码输出什么?

String s1 = "abc";
String s2 = "java";
String s3 = "abcjava";
String s4 = (s1+s2).intern();
System.out.println(s3 = s4);
System.out.println(s3.eaquals(s4));

重要规则

  • String h = "ab"+"cd"; 字符串常量相加,指向常量池

  • String h= a+b; 变量相加,指向堆中

String类的常用方法

String类的常用方法1

  • equals:区分大小写,判断内容是否相等

  • equalsIgnoreCase:忽略大小写,判断内容是否相等

  • length:获取字符的个数,字符串的长度

  • indexOf:获取字符在字符串中第一次出现的索引,索引从0开始,如果找不到,返回 -1

  • lastIndexOf:获取字符在字符串中最后一次出现的索引,索引从0开始,如果找不到,返回 -1

  • subString:截取指定范围的子串

  • trim:去前后空格

  • charAt:获取某索引处的字符,注意不能使用Str[index] 这种方式

String str = "hello";
//str[0] 不对,str不是数组
//str.charAt(0) -> h,正确

String类的常用方法2

  • toUpperCase:字符串全部转换成大写

  • toLowerCase:字符串全部转换成小写

  • concat:拼接字符串

  • replace:替换字符串中的字符

public final class Demo07 {
    public static void main(String[] args) {
        String s1 = "宝玉 and 林黛玉";
        //"宝玉 and 林黛玉"常量对象并没有被改变,只是s1的指向改变了
        s1 = s1.replace("宝玉","jack");
        System.out.println(s1);

        System.out.println(s1.replace("jack","宝玉"));
        System.out.println(s1);
    }
}

 

 

举报

相关推荐

String 类

string类

Object 类,String类

Java: String 类

JAVA String类

Java String类

JAVA String 类

0 条评论