String 、StringBuffer 与StringBuilder类的常用方法及包装类

一,字符串

1.初始化方式

2.常用方法

package com.sk.dome;
​
/**
 * ClassName: StrTest <br/>
 * Description: <br/>
 * date: 2021/12/27 9:38<br/>
 *
 * @author 斑马<br />
 */
public class StrTest {
    public static void main(String[] args) {
        String s1="Hello Word!";
        //charAt(int index)返回 char指定索引处的值。
        System.out.println(s1.charAt(10));
        System.out.println("长度:"+s1.length());
        //连接字符串
        System.out.println(s1.concat(" hello java!"));
        //返回指定字符第一次出现的字符串内的索引。
        System.out.println(s1.indexOf("wo"));
        System.out.println(s1);
        //最后一次出现
        System.out.println(s1.lastIndexOf("e"));
        //返回从替换所有出现的导致一个字符串 oldChar在此字符串 newChar 。
        System.out.println(s1.replace("word","java"));
        //将此字符串分割为给定的 regular expression的匹配。
        String strs[]=s1.split("");
        for (String s3:strs){
            System.out.println(s3);
        }
        //toCharArray()
        char c[]=s1.toCharArray();
        //变小写
        System.out.println(s1.toLowerCase()+"大写:"+s1.toUpperCase());
        //截取
        System.out.println(s1.substring(3));
        System.out.println(s1.substring(3,6));
​
​
    }
}

二,可变字符串

1.语法

StringBuffer 用于表示可以修改的字符串。

StringBuffer sb1=new StringBuffer();
        StringBuffer sb2=new StringBuffer(10);
        StringBuffer sb3=new StringBuffer("hello word!");

2.常用方法


package com.sk.dome;
​
/**
 * ClassName: StrBuTest <br/>
 * Description: <br/>
 * date: 2021/12/27 14:12<br/>
 *
 * @author 斑马<br />
 */
public class StrBuTest {
    public static void main(String[] args) {
        //初始化的三种方式
        StringBuffer sb1=new StringBuffer();
        StringBuffer sb2=new StringBuffer(10);
        StringBuffer sb3=new StringBuffer("hello word!");
        //在指定位置添加
        sb3.insert(1,"张三");
        System.out.println("长度:"+sb3.length());
        String s=sb3.toString();//转换为字符串
        System.out.println(s);
        sb3.reverse();//字符反转
        //删除  包含开始,不包含结束
        sb3.delete(0,3);
        //替换  包含开始,不包含结束
        sb3.replace(0,2,"你好");
        sb3.append("你好!");//在末尾追加字符串
        System.out.println("当前容量:"+sb3.capacity());
        System.out.println(sb3);
​
​
    }
}

3.String与StringBuffer,StringBuider的区别

String与StringBuffer的不同点: String类是不可改变的,而StringBuffer类是可变的。 String类覆盖了Object的equals方法,而StringBuffer没有。 String类可以使用”+”进行连接,而StringBuffer对象之间不能通过”+”进行连接。

StringBuilder类与StringBuffer类的功能是一样的,只是后者是线程安全的。所以前者效率会更高。

package com.sk.dome;
​
/**
 * ClassName: StrTest02 <br/>
 * Description: <br/>
 * date: 2021/12/27 14:37<br/>
 *
 * @author 斑马<br />
 */
public class StrTest02 {
    public static void main(String[] args) {
        System.out.println("性能对比");
        String str="张三";
        StringBuffer sb=new StringBuffer("张三");
        StringBuilder sd=new StringBuilder("张三");
        //从1970.1.1到当前的毫秒数
        long str1=System.currentTimeMillis();//开始
        for (int i=0;i<=20000;i++){
            str=str+i;
        }
​
        long str2=System.currentTimeMillis();//结束时间
        long t1=str2-str1;
        System.out.println("String 花费:"+t1);
        long sb1=System.currentTimeMillis();
        for (int i=0;i<=20000;i++){
            sb.append(i);
        }
        long sb2=System.currentTimeMillis();
        long sb3=sb2-sb1;
        System.out.println("StringBuffer时间:"+sb3);
        long sd1=System.currentTimeMillis();
        for (int i=0;i<=20000;i++){
            sd.append(i);
        }
        long sd2=System.currentTimeMillis();
        long sd3= sd2-sd1;
        System.out.println("StringBuider时长:"+sd3);
    }
}
​

三,包装类

1.为什么需要包装类

2.什么是包装类

Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的,这在实际使用时存在很多的不便,为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八个基本数据类型对应的类统称为包装类(Wrapper Class)

3.用法

对于包装类说,这些类的用途主要包含两种: 作为和基本数据类型对应的类类型存在,方便涉及到对象的操作。 包含每种基本数据类型的相关属性如最大值、最小值等,以及相关的操作方法。

1)使用 包装 类进行转换

2).自动装箱拆箱

JDK自从1.5(5.0)版本以后,就引入了自动拆装箱的语法,也就是在进行基本数据类型和对应的包装类转换时,系统将自动进行,这将大大方便程序员的代码书写。

自动装箱:基本类型自动转为包装类(int >> Integer) 自动拆箱:包装类自动转为基本类型(Integer >> int)

自动装箱与拆箱的功能事实上是编译器来帮忙,编译器在编译时期根据语法,决定是否进行装箱或拆箱动作。例如: Integer i = 100; 相当于编译器自动做以下的语法编译: Integer i = new Integer(100);


package com.sk.dome;
​
/**
 * ClassName: Dome01 <br/>
 * Description: <br/>
 * date: 2021/12/27 15:13<br/>
 *
 * @author 斑马<br />
 */
public class Dome01 {
    public static void main(String[] args) {
        int a=9;
        Integer b=9;
        //包装类可以直接当做基本数据类型进行计算
        int c=a+b;
​
        b=a;//基本数据类型转换为包装类
        a=b;//包装类转换为基本数据类型
​
        //包装类无法强制转换
        //Float d=(Float) b;
        //可以通过  包装类.目标类型Value()来进行转换
        Float d=b.floatValue();
        Double e=123.6;
        Integer f=e.intValue();
        //转换为String
        String g=f.toString();
        System.out.println(g);
        //字符串转为基本类型
        String h="123";
        int i=Integer.parseInt(h);
        System.out.println(i);
        String j="123.6";
        Double k=Double.parseDouble(j);
        System.out.println(k);
​
    }
}
​

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

斑马有点困

原创不易,多谢打赏

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

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

打赏作者

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

抵扣说明:

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

余额充值