JavaSE基础(7)——String类

1、String类

1.java中最常用的类。final类不能被继承
2.String表示字符串常量。我们平时使用" "将内容进行包裹,就形成了字符串对象
3.String使用频率较高,Java对他做了一定的优化,———字符串池(String pool)

构造方法

1.String() :创建一个空字符串
2.String(byte[]):根据字节数组构建一个字符串
3.String(char[]):根据字符数组构建一个字符串
4.String(String):复制一个字符串
5.String(StringBuffer):根据字符缓冲区构建字符串;
 6.String(StringBuilder):根据字符缓冲区构建字符串;
使用最多的是字面值     String str="abc";

public class StringDemo {
    public static void main(String[] args) {
        String str01 =new String();
        System.out.println(str01);
        byte[] bytes={1,2,3,4};
        String str02=new String(bytes);//处理流的时候使用
        System.out.println(str02);
        char[] chars={'a','b','c'};
        String str03=new String(chars);
        System.out.println(str03);

        String str04=new String("abc");
        System.out.println(str04);

        //常用的“”
        String str05 = "abc";
        System.out.println(str05);
    }

 常用方法

public class MethodDemo {
    public static void main(String[] args) {
        //字符串常用方法
        String str = "hello world";
        //1.获取字符串的长度 int length()
        System.out.println(str.length());
        //2.根据索引找到字符串中的字符 char charAt(int index)
        char c = str.charAt(10);
        System.out.println(c);
        //3.根据索引对字符串进行截取,返回一个新的字符串:String substring(int startIndex)
        String s = str.substring(5);
        System.out.println(s);
        //4.根据索引对字符串进行截取,返回一个新的字符串:String substring(int startIndex,int endIndex):[statIndex,endIndex)
        String s1 = str.substring(1, 5);
        System.out.println(s1);
        //5.字符串拼接:String concat(String str)
        String s2 = str.concat("java");//相当于 str + "java"
        System.out.println(s2);
        //6.判断字符串是否以指定字符串开头:boolean startsWith(String prefix)
        boolean b = str.startsWith("q");
        System.out.println(b);
        //7.判断字符串是否以指定字符串结尾:boolean endsWith(String suffix)
        boolean b1 = str.endsWith("d");
        System.out.println(b1);
        //8.判断字符串是否包含指定字符串:boolean contains(String str)
        boolean b2 = str.contains("ll");
        System.out.println(b2);
        //9.判断字符串是否为空:boolean isEmpty()
        boolean empty = str.isEmpty();
        System.out.println(empty);
        //10.判断字符串(内容)是否相等:boolean equals(Object obj)
        boolean b3 = str.equals("hello world");
        System.out.println(b3);
        //11.去空格(去掉的是前后的空格) String trim();
        str="  hello world  ";
        String trim = str.trim();
        System.out.println(trim);
        //12.字符串转大写 String toUpperCase()
        String upperCase = str.toUpperCase();
        System.out.println(upperCase);
        //13.字符串转小写 String toLowerCase()
        str="HELLO WORLD";
        String lowerCase = str.toLowerCase();
        System.out.println(lowerCase);
        //14.对字符串进行拆分,返回一个 String[] split(String regex)
        String st="1#2#3#4#5";
        String[] split = st.split("#");
        System.out.println(Arrays.toString(split));
        //15.查找字符串在此字符串序列中第一次出现的索引位置:int indexOf(String str)
        str="hello world";
        int indexOf = str.indexOf("ql");
        System.out.println(indexOf);
        //16.返回指定字符在此字符串中最后一次出现处的索引 int lastIndexOf(int ch)
        int i = str.lastIndexOf("l");
        System.out.println(i);
        //17.对字符串中的内容进行替换,返回一个新的字符串   String replace(原来的值,新的值);
        String replace = str.replace("l", "q");
        System.out.println(replace);
    }
}

2、字符串与基本数据类型的转换

//将字符串转成数字  对应包装类.parseXXX(String str)
int a=3;
String b = "5";
System.out.println(a+Integer.parseInt(b));
//将数字转成字符串 String.valueOf(数字类型变量) 
或字符串+"" 或者调用包装类的toString方法
String s = String.valueOf(a);
System.out.println(s+Integer.parseInt(b));


//当我们创建Integer类型的对象时,如果这个数字在-128到127之间,
则直接从缓存池中获取,否则,则创建一个对象,并放入缓存池中。
Integer j = 127;
Integer k = 127;
System.out.println(j==k);
//当我们创建Integer类型的对象时,如果这个数字在-128到127之间,
则直接从缓存池中获取,否则,则创建一个对象,并放入缓存池中。
Integer m = 128;
Integer n = 128;
System.out.println(n==m);

1.字符串是一个常量,一旦定义就不可以修改,我们调用方法都不是在此字符串中进行操作,都返回一个新的字符串
2.需要理解字符串池
    String s1 = "hello";
    String s2 = "hello";
    String s3 = new String("hello");
    String s4 = new String("hello");


3、字符串缓冲区StringBuffer及StringBuilder 

字符串缓冲区 主要是用来处理字符串,与String类不同,缓冲区的内容是可以改变的。
    StringBuffer:  线程安全的 -----安全,效率低
    StringBuilder:非线程安全的---效率高,不安全
String类型主要用来存储字符串的。—————缓存区主要用来处理字符串的
StringBuffer和StringBuilder 用法相同

StringBuilder

1.StringBuilder() 构造一个不带任何字符的字符串生成器,其初始容量为 16 个字符。 
2.StringBuilder(int capacity) 构造一个不带任何字符的字符串生成器,其初始容量由capacity 参数指定。 
3.StringBuilder(String str) 构造一个字符串生成器,并初始化为指定的字符串内容。 

 常用方法

public class StringBuilderDemo {
    public static void main(String[] args) {
        //创建一个StringBuilder对象
        StringBuilder sb = new StringBuilder("Hello");
        StringBuilder sb1 = new StringBuilder();
        StringBuilder sb2 = new StringBuilder(20);
        //常用方法
        //1.向缓冲区尾部追加一个字符串
        sb.append("abc");
        System.out.println(sb);
        //2. 返回当前容量。
        int capacity = sb.capacity();
        System.out.println(capacity);
        //3. 移除此序列的子字符串中的字符。
        sb.delete(0,2);//开始包含 结束不包括
        System.out.println(sb);
        //4.将字符串插入到指定的位置  第一个参数是 位置不是索引!!!!
        sb.insert(2,"play");
        System.out.println(sb);
        //5.指定位置元素替换
        sb.replace(2,4,"abc");
        System.out.println(sb);
        //6.字符串反转
        sb.reverse();
        String s=sb.toString();
        System.out.println(sb);
    }
}

4、小结

String字符串类主要存储字符串
StringBuilder 和 StringBuffer 主要用来操作(删除,修改,追加,插入)字符串

如果我们要对字符串进行操作
    1.创建字符串
    2.将字符串转为字符串缓冲区对象(StringBuilder 或 StringBuffer)进行操作
    3.(StringBuilder 或 StringBuffer)转换为String

练习

  • 下面这条语句一共创建了多少个对象:String s=“welcome”+“to”+“huayu”;

由于字符串字面量是在编译期确定的,JVM 会先计算 "welcome" + "to" + "huayu" 的结果,然后将其作为一个单一的字符串字面量 "welcometohuayu" 放入字符串常量池中。

这个过程中,实际上只创建了一个字符串对象,即 "welcometohuayu",并且这个字符串对象会被放入字符串常量池中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值