Java中String类的深度理解

public class StringDemo {
    //此代码用于更加深刻理解String类
    public static void main(String[] args) {
        String name = "衣衣";
        //string 作为Java lang包下的一个类,可以通过调用构造器来创建string对象
        //除了最基础也是最常用的创建对象方法,还有标准的创建对象的写法,但这种方法不用
        String s1 = new String("hhh");
        //还有一些比较常用,它可以将字符数组转换成字符串进行输出
        char[] c = new char[]{'a', 'b', 'c'};
        String s2 = new String(c);
        System.out.println(s2);//abc
        //另外Java给String的构造器中还有一种byte形参的,它可以把byte数组以Ascall码对应的字符然后转换成字符串输出
        byte[] b = {65, 68, 69};
        String s3 = new String(b);
        System.out.println(s3);//ADE
        //同时string的对象一样也是放在堆区的,而字符串变量存放的是对象在堆区的地址
        //如果是以String name1 = "衣衣";这个方式创建的字符串对象,再创建一个String name2 = "衣衣";
        //name1 存放的地址会和name2存放的地址一样
        //而要是以String s2 = new String(c);方式创建的字符串对象,再创建一个String ss2 = new String(c);
        //s2存放的地址不会跟ss2相同
        name = "yy";
        System.out.println(name);
        //字符串比较最好不用==来比较,因为这样比较比较的是地址,如果是用户输入之类的创建出来的字符串对象,那个地址与原本用""来定义的地址不同
        //String类中,有一个成员方法用于比较字符串内容的,equals(比较字符串内容是否严格相同,包括大小写)、equalsIgnoreCase(比较字符串内容,大小写可以不同)
        String yesPassword = "123456";
        String password = new String("123456");
        System.out.println(yesPassword == password);//地址不同,结果为false
        System.out.println(yesPassword.equals(password));//true
        //String 常用的api 下面这些是Java中给String类中的成员方法
        String ad ="Redmi K50,天玑8100,yyds";
        //public int length()  //用于返回字符串长度
        System.out.println(ad.length());//21
        //public char charAt(int index)//获取某个索引处的字符
        System.out.println(ad.charAt(6));//K
        //public char[] toCharArray()   //将字符串转换成字符数组返回
        char[] ch =ad.toCharArray();
        for (int i = 0; i < ch.length; i++) {
            System.out.print(ch[i]);
        }//Redmi K50,天玑8100,yyds
        System.out.println();
        //public String substring(int beginIndex,int endIndex)  //截取字符串,从开始和不包含结束索引处之间截取
        System.out.println(ad.substring(0,9));  //Redmi K50
        //public String substring(int beginIndex)   //截取字符串,从开始处直接截取到最后
        System.out.println(ad.substring(10));   //天玑8100,yyds
        //public String replace(CharSequence target,CharSequence replacement)   //将什么词替换成什么
        System.out.println(ad.replace("yyds","xxx"));   //Redmi K50,天玑8100,xxx
        //public String[] split(String regex)   //切割字符串,得到字符串数组进行返回
        String[] rs =ad.split(",");
        for (int i = 0; i < rs.length; i++) {
            System.out.println(rs[i]);
        }
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值