栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JAVA-String类

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JAVA-String类

>String类的理解和创建对象

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

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

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

4)String类较常用构造方法:

5)String类实现了接口Serializable 【String可以串行化:可以在网络传播】

6)String类实现了接口Comparable 【String对象可以比较大小】

7)String是final类,不能被其他的类继承

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

9)一定要注意:value是一个final类型,不可以修改。即value不能指向新的地址,但是单个字符内容可以变化

        String name = "jack";
        name = "tom";
        final char[] value = {'a','b','c'};
        char[] v2 = {'t','o','m'};
        value[0] = 'H';
        //value = v2; 不可以修改value地址
>两种创建String对象的区别

方式一:直接赋值 String s ="hsp":
先从常量池查看是否有"hsp"数据空间,如果有,直接指向;如果没有则重新创建,然后指向。s最终指向的是常量池的空间地址

方式二:调用构造器 String s2 = new String("hsp");
先在堆中创建空间,里面维护了value属性,指向常量池的hsp空间。如果常量池没有"hsp”,重新创建,如果有,直接通过value指向。最终指向的是堆中的空间地址。

String a="hsp";//a 指向 常量池的“hsp”
String b =new String("hsp");//b 指向堆中对象
System.out.println(a.equals(b));//T
System.out.println(a==b); //F
//b.intern()方法最终返回的是常量池的地址(对象)
System.out.println(a==b.intern()); //T intern方法自己先查看API
System.out.println(b==b.intern()); //F
知识点:
当调用 intern 方法时,如果池已经包含一个等于此 String 对象的字符串(用 equals(Object)方法确定),则返回池中的字符串。否则,将此 String 对象添加到池中,并返回此 String 对象的引用
>字符串的特性

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

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

Q:String a = "hello"+"abc"; 创建了几个对象?

A:1.编译器不傻,做一个优化,判断创建的常量池对象,是否有引用指向

      2.String a = "hello”+“abc”; ==>优化等价 String a = "helloabc" ;  所以只创建了一个对象

String b = "abc";  //创建b对象
String c = a+b;    
Q:创建了几个对象?

A:1.先创建一个StringBuilder sb = StringBuilder()
      2.执行 sb.append("hello")
      3.执行 sb.append("abc")
      4.String c = sb.toString()
      5.最后其实是c指向堆中的对象(String) value[ ] -> 池中“hellloabc”创建三个对象
      6.若加上:String d = "helloabc";
                       System.out.println(c==d);  //F

重要规则:String c1 ="ab"+"cd";常量相加,看的是池。
                String c1 = a+b; 变量相加,是在堆中。

>String类的常用方法

public class StringMethod01 {
    public static void main(String[] args){
        //1.equals 区分大小写,判断内容是否相等
        String str1 = "hello";
        String str2 = "Hello";
        System.out.println(str1.equals(str2)); //F
        //2.equalsIgnoreCase 忽略大小写的判断内容是否相等
        String username = "john";
        if("john".equalsIgnoreCase(username)){
            System.out.println("Success!");
        }
        else {
            System.out.println("Failure!");
        }
        //3. length 获取字符的个数,字符串的长度
        System.out.println("仪宝".length());
        //4.indexOf 获取字符在字符串中第1次出现的索引,索引从0开始,如果找不到,返回-1
        String s1 = "yibaoa";
        int index = s1.indexOf('i');
        System.out.println(index);
        //5.lastIndexOf 获取字符在字符串中最后1次出现的索引索引从0开始.如找不到.返回-1
        String s2 = "yibaoa";
        int index2 = s1.lastIndexOf('a');
        System.out.println(index2);
        //6.substring 截取指定范围的子串
        String name = "hello,张三";
        //从索引6开始截取后面所有的内容
        System.out.println(name.substring(6));
        //从索引0开始截取,截取到5-1=4位置 (前者为开始,包括;后者为结束,不包括)
        System.out.println(name.substring(0,5));
        //7.toUpperCase转换成大写
        String s = "heLLo";
        System.out.println(s.toUpperCase()); //HELLO
        //8.toLowerCase
        System.out.println(s.toLowerCase()); //hello
        //9.concat拼接字符串
        String s3 = "你";
        s3 = s3.concat("我").concat("他").concat("together");
        System.out.println(s3); //你我他together
        //10.replace 替换字符串中的字符
        //在s3中,将所有 你 替换成 我
        //s3.replace() 方法执行后,返回的结果才是替换后的
        //注意 对 s3 没有任何影响
        s3 =s3.replace("你","我");
        System.out.println(s3);
        //11.split 分割字符串 对于某些分割字符,我们需要转义 比如 | \等
        String poem = "锄禾日当午,汗滴禾下土。谁知盘中餐,粒粒皆辛苦。";
        //以,为标准,对poem进行分割,返回一个数组
        String[] split = poem.split(",");
        poem = "E:\aaa\bbb";
        //在对字符串进行分割时,如有特殊字符,需要加入转义符 
        split = poem.split("\\");
        //12.toCharArray 转换成字符数组
        String s4 = "happy";
        char[] chs = s4.toCharArray();
        for(int i =0;i 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/424221.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号