String类(不包含正则表达式)

实例化String对象

//直接赋值
String name="张三"//调用String类中的构造方法
//在此类中有public String(String original){}
String name=new String("张三")

两种实例化方式的区别

String str1="abc";
String str2="abc";
String str3="abc";
String str4="abc";

这种实例化在栈中创建了多个引用,在堆中创建了一个内容块,多个引用指向同一个内容块。
这是因为java会提供一个字符串池来保存全部的内容,在java中称为共享设计,在java中形成一个对象池,在这个对象池中,新实例化的对象如果已经在池中定义了,则不再重新定义,而从池中直接取出使用。
在这里插入图片描述

String str="abc";
String str=new String("abc");

使用new关键字,不管如何都会再开辟一个新的空间。
在这里插入图片描述

字符串内容不可改变

String str="ni";
str+="hao";

在这里插入图片描述

String内容比较

 //基本类型内容比较	==
        int x=1;
        int x1=2;
        System.out.println(x==x1);

但是对于字符串内容不行,字符串是通过引用存放到堆中的,使用==只能比较的是引用自己的地址,而不是引用对应地址的内容;
所以有如下:

 //equals()字符串比较
        String str1="hello";
        String str2=new String("hello");//通过new赋值 开辟一块新的堆内存,
        String str3=str2;//与str2指向同一块堆内存
        System.out.println(str1==str2);//内容相同 但表示内容的地址的数值不同  false
        System.out.println(str1==str3);//地址不同   false
        System.out.println(str2==str3);//指向同一空间,表示内容的地址的数值相同同 false

        //equals 只对堆中存的内容进行比较不考虑地址的数值
        System.out.println(str1.equals(str2));//true
        System.out.println(str1.equals(str3));//true
        System.out.println(str2.equals(str3));//true

String类中常用方法

String string1="hel.lo world str,ing args";
        System.out.println(string1.length());
        System.out.println(string1.charAt(4));
        //提取字串
        System.out.println(string1.substring(4,10));
        System.out.println(string1.substring(4));
        //拆分 把字符串根据某些符号拆分成子串
        String[] strings=string1.split(" ");//存放在字符串数组里面
        for (int i =0;i<strings.length;i++){
            System.out.print(strings[i]+" -- ");
        }
        System.out.println();
        //合并
        System.out.println(string1.concat("nihao"));
        //转换成字符数组
        char[] chars=string1.toCharArray();
        for (int i =0;i<chars.length;i++){
            System.out.print(chars[i]+" -- ");
        }
        //字符数组转换成字符串
        String string2=new String(chars);//构造方法
        System.out.println(string2);

        String string3="We are happy!";

        //替换 用%20替换空格
        System.out.println(string3.replaceAll(" ","%20"));
        System.out.println(string3.replaceAll("We","you"));
        //把其他数据类型转化成字符串
        System.out.println(String.valueOf(20));
        //根据字符返回索引位置
        System.out.println(string3.indexOf(' ',1));//只返回检索到的第一个此字符的索引后面的不管
        //去除字符串前后空格
        String string4="     dfTThjk  ";
        System.out.println(string4.trim());
        //字符串改成大小写
        System.out.println(string4.toUpperCase());
        System.out.println(string4.toLowerCase());
        //把字符串返回成字节数组
        byte[]bytes=string4.getBytes();
        System.out.println(new String(bytes));
         //判断是否以指定的字符串开头或结尾
        String s1="**hello";
        String s2="hello**";
        if (s1.startsWith("**"))
            System.out.println(s1);
        if (s2.endsWith("**"))
            System.out.println(s2);
        //不区分大小写进行字符串比较
        s1="hello";
        s2="HELLO";
        System.out.println(s1.equalsIgnoreCase(s2));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值