Java学习——常用类库API

1.字符串操作

1.字符串操作——String类

  1. String可以表示一个字符串
  2. String类实际是使用字符数组存储的
    String 类的两种赋值方式:
  3. 一种称为直接赋值:
String name = "小白"
  1. 通过关键字new调用String的构造方法赋值
String name = new String("小白")

示例

//String表示一个字符串,内部使用字符数组实现,不能被继承(最终类),不可变
public class Test15 {
    public static void main(String[] args){
        //String 的两种赋值方式,Java推荐使用第一种方式
        //1.直接赋值
        String s1 = "粉粉";
        //2.使用new关键字创建对象,new:表示申请内存空间
        String s2 = new String("粉粉");

        String s3 = "粉粉";

        System.out.println(s1==s3);
        System.out.println(s1==s2);

        //代码示例:4种情况分析:直接赋值字符串连接时,考虑编译期和运行期
        //如果在编译期,值可以被确定 那么就使用已有的对象,否则会创建新的对象
        String a="a";
        String a1=a+1;
        String a2="a1";
        System.out.println(a1==a2);

        final String b="b";
        String b1 = b+"1";
        String b2 = "b1";
        System.out.println(b1==b2);

        String c = getC();
        String c1 = c+1;
        String c2 = "c1";
        System.out.println(c1==c2);

        final String d=getD();
        String d1= d+1;
        String d2="d1";
        System.out.println(d1==d2);

    }
    private static String getC(){
        return "c";
    }
    private static String getD(){
        return "d";
    }
}

String类的两种赋值分析:

  1. 字符串常量池
  2. String name = new String(“小白”),在内存中的分析
  3. String name = “小白”,在内存中的分析
    String 类编译期与运行期分析:
  4. 编译期和运行期
  5. 代码示例:4种情况分析
    String类字符与字符串操作方法
No方法名称类型描述
1public char charAt(int index)普通根据下标找到指定的字符
2public char[] toCharArray()普通以字符数组的形式返回全部的字符串内容
3public String(Char[] value)构造将全部的字符数组变为字符串
4public String(Char[] value,int offset,int count)构造将指定范围的字符数组变为字符串
public class Test16 {
    public static void main(String[] args){
        String str = "dsds123";
        char c = str.charAt(0);
        System.out.println(c);

        System.out.println(str.toCharArray());

        char[] cs = {'a','b','c'};
        String s1 = new String(cs);

        String s2 = new String(cs,0,1);
        System.out.println(s2);

    }

}

String类字节与字符串操作方法:

No.方法名称类型描述
1public byte[] getBytes()普通将字符串变为字节数组
2public String (byte[] bytes)构造将字节数组变为字符串
3public String (byte[] bytes,int offset,int length)构造将指定范围的字节数组变为字符串
4public String(byte[] bytes,String charsetName)构造通过使用指定的charset解码指定的byte
import java.util.Arrays;

public class Test16 {
    public static void main(String[] args){
        String str = "dsds123";
        char c = str.charAt(0);
        System.out.println(c);

        System.out.println(str.toCharArray());

        char[] cs = {'a','b','c'};
        String s1 = new String(cs);

        String s2 = new String(cs,0,1);
        System.out.println(s2);

        System.out.println(Arrays.toString(str.getBytes()));
        

    }

2.字符串操作——StringBuffer类

StringBuffer解决了使用String拼接字符串时产生大量垃圾对象的问题,内部实现其实是字符数组
在实际开发当中,我们经常会使用到字符串连接的操作,如果用String来操作,则使用"+"号完成字符串的连接操作。
使用String连接字符串,代码性能会非常低,因为String的内容不可改变。
解决这个问题的方法是使用StringBuffer。
StringBuffer类源码分析

public class stringbuffer {
    public static void main(String[] args){
        String a = "a";
        String b = "b";
        String c = a+b+1;
        System.out.println(c);

        //
        String d = "a"+1+2+3+4+"b";//a1234b//常量相加没有性能问题(编译期进行优化)

        //StringBuffer目的是解决字符串相加时带来的性能问题(常量与变量)
        //StringBuffer的内部实现采用字符数组,默认数组的长度为16,超过数组大小时,动态扩充的算法是原来的长度*2+2
        //所以当我们预知要添加的数据长度时,建议使用带初始化容量的构造方法,来避免动态扩容的次数,从而提高效率
        //线程安全的,会影响性能
        StringBuffer sb = new StringBuffer();
        sb.append(a).append(b).append(1);
        System.out.println(sb.toString());
    }
}

StringBuffer常用操作方法

方法名称描述
public StringBuffer()构造一个空的StringBuffer对象
public StringBuffer(String str)将指定的String变为StringBuffer的内容
public StringBuffer(CharSequence seq)接收CharSequence接口的实例
public StringBuffer append(数据类型 b)提供了很多的append()方法,用于进行字符串连接
public StringBuffer delete(int start,int end)删除指定位置的内容
public int indexOf(String str)字符串的查询功能
public StringBuffer insert(int offset,数据类型 b)在指定位置上增加一个内容
public StringBuffer replace(int start,int end,String str)将指定范围的内容替换成其他内容
public String substring(int start,int end)截取指定范围的字符串
public String substring(int start)字符串截取
public StringBuffer reverse()字符串反转

2.字符串操作——StringBuilder类

StringBuffer的兄弟StringBuilder:
一个可变的字符序列。此类提供一个与StringBuffer兼容的API,但不保证同步,该类被设计用作StringBuffer的一个简易替换,用在字符串缓冲区被单子线程使用的时候(这种情况很普通)。如果可能,建议优先采用该类,因为在大多数实现中,它比StringBuffer要快

StringBuffer与StringBuilder的区别?
  1. StringBuffer是线程安全的,性能低,适合在多线程的使用
  2. StringBuilder是线程不安全的,性能高,适合在单线程中使用,这种情况占大多数,在JDK1.5后使用
字符串相加操作
  1. 多个常量相加没有性能问题,在编译期优化
  2. 变量与常量相加,会产生多个垃圾对象
public class StringBuilder {
    public static void main(String[] args){
        StringBuilder sb = new StringBuilder();

        String a = "a"+1;
        String b = a+"b";

        String c = null;
        for (int i = 0;i<5;i++){
            c+=i;//每次循环会产生一个StringBuilder对象实现拼接,性能低,最好是手动创建StringBulider来拼接
        }

    }
}

2.程序国际化

3.Math与Random类

4.日期操作类

5.对象比较器

6.对象的克隆

7. System与Runtime类

8. 数字处理工具类

9. MD5工具类

10.数据结构之二叉树实现

11.JDK1.8新特性

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值