学习string以及常用方法

String对象是不可变的,每一个看起来修改String的方法,起始都是创建了一个全新的String对象,以包含修改后的字符串内容,而最初的String对象丝毫未变。

public class Immutabe {
    public static String upcase(String s){
        return  s.toUpperCase();
    }
    public static void main(String args[]){
        String q="howdy";
        System.out.println(q);//howdy
        String qq=upcase(q);
        System.out.println(qq);//HOWDY
        System.out.println(q);//howdy
    }
}

        String a =new String("abc");
        String b =new String("abc");

        String c="abc";
        String d="abc";

        System.out.println(a==b+"a------------b");//false
        System.out.println(" -----"+a.equals(b)+"------a equsla b--------------");//true
        System.out.println(" -----"+c==d+"-----c----------------------d");//false
        System.out.println(" -----"+c.equals(d)+"-c  equals ----------------d");//true
        System.out.println(" -----"+a==c+"--------a--------------------c");//false
        System.out.println(a.equals(c)+"---------a--++++++++++++++++++++c");//true

当q传给upcase的时,实际传递的是引用的一个拷贝每当把String对象当做方法的参数时,都会复制一个引用,该引用所指的对象其实一直呆在单一的物理位置上,所有指向Stirng对象的引用都不可能修改他的值

  String mongo ="mongo";
        String s="abc"+mongo+"666";
        System.out.println(s);//abcmongo666

在这里,其实是先创建依赖一个StringBuilder对象,用来构造最终的String,为每一个字符串调用一次StringBuilder的append()方法,总计三次,最后toString生成结果。
如果你要在toString方法中使用循环,最好自己创建一个StringBuilder对象

public class usingStringBuilder {
    public static Random rand=new Random(47);

    public String toString(){
        StringBuilder result=new StringBuilder("[");
        
        for (int i=0;i<25;i++){
            /**
             *   public StringBuilder append(int i) {
             *         super.append(i);
             *         return this;
             *     }
             */
            result.append(rand.nextInt(100));
            result.append(",");
        }
        /**
         *   public StringBuilder delete(int start, int end) {
         *         super.delete(start, end);
         *         return this;
         *     }
         */
        result.delete(result.length()-2,result.length());
        result.append("]");
        return  result.toString();
    }
    public static void main(String[] args){
        usingStringBuilder  usingStringBuilder=new usingStringBuilder();
        System.out.println(usingStringBuilder);
        //[58,55,93,61,61,29,68,0,22,7,88,28,51,89,9,78,98,61,20,58,16,40,11,22,]
    }

}

String的常用方法

public class StringMethod {
    public static void main(String args[]) {
        String str = "自己菜就要知道,“好好加油";
        String str1 = "to be Best";
        //length()获取字符串的长度
        System.out.println(str.length());//13
        //charAt()获取指定位置的字符0 1 2 3 4 5..
        System.out.println(str.charAt(3));//就
        //获取某个字符在字符串中第一次出现的位置
        System.out.println(str.indexOf('菜'));//2
        //从指定的位置截取字符串
        System.out.println(str.substring(5));//知道,“好好加油
        //从指定的位置截取字符串
        System.out.println(str.substring(5, 8));//知道,

        //判断是否与字符串是否相同。忽略大小写
        System.out.println(str.equalsIgnoreCase("自己菜就要知道,“好好加油"));//true
        System.out.println(str1.equalsIgnoreCase("to be best"));//true
        System.out.println(str1.equalsIgnoreCase("to bebest"));//false

        //判断起始字符
        System.out.println(str1.startsWith("t"));//true
        System.out.println(str1.startsWith("a"));//false

        //判断字符串对象是否以指定的字符开头,参数toffset为指定从哪个下标开始
        System.out.println(str1.startsWith("o", 1));//true
        System.out.println(str1.startsWith("o", 2));//false

        System.out.println(str1.endsWith("t"));//true

        //判断是否为空
        System.out.println(str1.isEmpty());//fasle

        //去除两端空格
        String str2 = "    string test to be better";
        System.out.println(str2); //      string test to be better
        System.out.println(str2.trim());//string test to be better

        String array[] = str2.split("t");
        printString(array);

        //字符串装换为字符数组
        System.out.println(str2.toCharArray());
        //将指定的字符替换
        System.out.println(str2.replace('t','P'));

        //查看字符串中是否含有指定字符
        System.out.println(str2.contains("o"));
        //添加字符
        System.out.println(str2.concat("susu"));

    }

    public static void printString(String a[]) {
        for (int i = 0; i < a.length; i++) {
            System.out.print(a[i]);
        }
    }}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值