java中String类详解(java.lang.String)

介绍:

1、String是finall类,不可以被继承,不可以被改变的字符串。

小提示:不可变的字符串对象,尽量少使用+=操作 ⭐ 

2、String表示字符串类型,属于 引用数据类型,不属于基本数据类型。

3、在java中随便使用 双引号括起来 的都是String对象。

      例如:“abc”,“你好”,“hello world!”,这是3个String对象。

4、在JDK当中双引号括起来的字符串,例如:“abc” "def"都是直接存储在“方法区”的“字符串常量池”当中的。

为什么SUN公司把字符串存储在一个“字符串常量池”当中呢?

因为字符串在实际的开发中使用太频繁。为了执行效率,所以把字符串放到了方法区的字符串常量池当中。

例1:

 public static void main(String[] args) {
        String s1="hello";
        s1+="world";
        String s2=new String();
    }

上图中,String s1+=之前指向地址为“0x666”,+=之后指向地址变成:"0x888'。也就是说,指向了两个不同对象,所以String类型尽量不要+=运算,因为每运算一次都会产生垃圾内存,并且垃圾回收器不会回收字符串常量池内的东西 。

另外:通过字面量的方式(区别于new)给一个字符串赋值,此时的字符串值声明在字符串常量池中

总结1:String字符串具有不可变性,当字符串重新赋值时,不会在原来的内存地址进行修改,而是重新分配新的内存地址进行赋值。

2.当字符串进行拼接时,也不会在原来的内存地址进行修改,而是重新分配新的内存地址进行赋值。

常用方法:

方法名作用
1. length()统计字符个数
2. equals equalsIgnoreCase方法

equals是Object的方法,用来判断两个对象是否相同,在判断字符串时它判断的是两个对象的内容是否相同。

equalsIgnoreCase是String的判断方法,只能判断两个字符串。

3. trim方法去掉字符串收尾的空格
4. substring方法返回一个新的字符串,它是此字符串的一个子字符串。该子字符串始于指定索引处的字符,一直到此字符串末尾。
5. concat()方法将几个字符串连接到一起
6. contains()用于判断字符串是否包含某个元素
7.int indexOf(String str)返回指定字符str在字符串中(方法调用者)第一次出现处的起始索引,如果此字符串中没有这样的字符,则返回 -1
8. lastIndexOf()返回str最后一次出现的位置
9. replace()替换字符串
10. split()将字符串以regex分割     !分隔符会把字符串拆成若干个子字符串,然后生成一个String数组
11. toLowerCase() toUpperCase()

toLowerCase()字符串转小写

toUpperCase()字符串转大写

实例:

public class Demo2 {
    public static void main(String[] args) {
        String s0="kshkjgksa";
        System.out.println(s0.length());//9  字符串长度

        String s1="a";
        String s2=new String("a");
        System.out.println(s1.equals(s2));//true  判断值知否相等

        System.out.println("HELLO".equalsIgnoreCase("hello"));//true 忽略大小写

        System.out.println("    hello   ".trim());//hello  去掉字符串收尾的空格

        System.out.println("hello world".substring(3));//lo world  截取字符串
        System.out.println("hello world".substring(3,7));//lo w 截取字符串

        String s = "厉害了,";
        String str1 = "我的";
        String str2 = "国!";
        s = s.concat(str1);//将字符串str1接到字符串s后面
        s = s.concat(str2);//将字符串str1接到字符串s后面
        System.out.println(s);//厉害了,我的国!

        //判断
        String s3 = "hello world 中国人";
        System.out.println(s3.contains("hello"));//true
        String str = "01234567890123456789";
        System.out.println(str.indexOf("123"));//1
        System.out.println(str.indexOf("123",5));//11 //从第五位开始查找
        System.out.println(s3.lastIndexOf("hello"));//0
        System.out.println(s3.startsWith("hello"));//true
        System.out.println(s3.endsWith("国人"));//true

        String s4 ="1a2";
        String[] split = s4.split("a");
        //split:{"1","2"}
        for (int i = 0; i < split.length; i++) {
            System.out.println(split[i]);
        }


        //替换  hello java 中国人
        String s5 = "hello world 中国人";
        System.out.println(s5.replace("world","java"));//hello java 中国人
        System.out.println(s5.replace("world",""));//hello  中国人
        System.out.println("hellohellohello".replace("hello","ok"));//okokok
    }
}

  • 12
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学会用脚编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值