天天看点

Java常用类(4)- String类

String类概述

  • 字符串是常量,创建之后不可改变
  • 字符串字面值存储在字符串池中,可以共享
  • String s = "hello";//产生一个对象,字符串池中存储
  • String s = new String("hello");//产生两个对象,堆、池各存储一个
  • jdk版本不同,字符串池存放位置不同,新版本一般放在堆中,旧版本一般放在方法区中;本篇暂定在方法区中,和堆先区分开,便于理解
package commonclass.stringclass;

public class Demo01 {
    public static void main(String[] args) {
        String name = "hello";//"hello"常量存储在字符串池中
        name = "zhangsan";//"zhangsan"赋值给name变量,给字符串赋值时,并没有修改数据,而是重新开辟了一个空间
        String name2 = "zhangsan";//栈中的地址和name一致
        System.out.println(name==name2);//true

        //字符串另一种创建方式
        String str = new String("hello java");
        String str1 = new String("hello java");
        System.out.println(str==str1);//false
     System.out.println(str.equals(str1));//true,比较的是内容      
}
}      
Java常用类(4)- String类

常用方法

length()

返回字符串长度

String content="java编程语言";
System.out.println(content.length());
//结果:8      

charAt(int index)

返回某个位置的字符

String content="java编程语言";
System.out.println(content.charAt(4));
//结果:编      

contains(String str)

判断是否包含某个字符串

String content="java编程语言";
System.out.println(content.contains("java"));
//结果True      

toCharArray()

将字符串转换成数组

String content="java编程语言";
System.out.println(content.toCharArray());
//结果:
/*
j
a
v
a
编
程
语
言
*/
System.out.println(Arrays.toString(content.toCharArray()));
//结果:[j, a, v, a, 编, 程, 语, 言]      

indexOf(String str)

查找str首次出现的下标,存在,则返回该下标;不存在,则返回-1

String content="java编程语言,java开发 java测试";
System.out.println(content.indexOf("java"));
//结果:0
System.out.println(content.indexOf("java",5));//从下标为5开始找
//结果:9      

lastIndexOf(String str)

查找str在当前字符串中最后一次出现的下标索引

String content="java编程语言,java开发 java测试";
System.out.println(content.lastIndexOf("java"));
//结果:16      

trim()

去掉字符串前后的空格

String content = " java is good ";
System.out.println(content.trim());
//结果:java is good      

toUpperCase()/toLowerCase()

将小写转成大写/转换成小写

String content = " java is good ";
System.out.println(content.toUpperCase());
//结果: JAVA IS GOOD       

endWith(String str)/startWith(String str)

判断字符串是否以str结尾/判断字符串是否以str开头

String content = " java is good ";
System.out.println(content.endsWith(" "));//是否以空格结尾
//结果:true      

replase(char oldChar,char newChar)

将旧字符串转换成新字符串

String content = " java is good ";
System.out.println(content.replace("java","python"));
//结果: python is good       

split(String str)

根据str做拆分

String content = "java is good";
String[] contentIndex = content.split(" ");//用空格作为拆分条件
System.out.println(contentIndex.length);
//结果:3

for (String i: contentIndex) { //遍历contentIndex数组
System.out.println(i);
//结果:
/*
java
is
good
*/
}      
String content = "java is good,python is nice";
String[] contentIndex1 = content.split("[ ,]");//用空格或者逗号进行拆分
for (String i:contentIndex1) {
System.out.println(i);
//结果:
/*
java
is
good
python
is
nice
*/
}      
String content = "java      is good,,python is nice";
String[] contentIndex2 = content.split("[ ,]+");//根据逗号和空格拆分,并且逗号和空格存在多个时
for (String i:contentIndex2) {
System.out.println(i);
//结果:
/*
java
is
good
python
is
nice
java
*/
}      

equals()/compareTo()

字符串比较

package commonclass.stringclass;

public class Demo04 {
    public static void main(String[] args) {
        String s1 = "hello";
        String s2 = "HELLO";

        //equals()字符串内容比较
        System.out.println(s1.equals(s2));//False

        //equalsIgnoreCase()字符串内容忽略大小写比较
        System.out.println(s1.equalsIgnoreCase(s2));//True

        String s3="abc";//97
        String s4="xyz";//120

        //compareTo()字符串位置的比较,第一位相同,就比第二位
        System.out.println(s3.compareTo(s4));//97-120=-23

        String s5="abc";//97
        String s6="abcdef";//120

        //compareTo()上面两个参数,一个参数值是另一个参数值的开头,这种情况比的就是长度
        System.out.println(s5.compareTo(s6));//-3
    }
}      

案例联系

需求:
已知String str = "this is a text";
1.将str中的单词单独获取出来
2.将str中的text替换为practice
3.在text前面插入一个easy
4.将每个单词的首字母改为大写      
package commonclass.stringclass;

import java.util.Arrays;

public class Demo05 {
    public static void main(String[] args) {
        String str = "this is a text";

        //1.将str中的单词单独获取出来
        String[] strIndex = str.split(" ");
        for (String i:strIndex) {
            System.out.println(i);
        }

        //2.将str中的text替换为practice
        System.out.println(str.replace("text","practice"));

        //3.在text前面插入一个easy
        System.out.println(str.replace("text","easy text"));

        //4.将每个单词的首字母改为大写
        //方式一
        String[] strIndex1 = str.split(" ");
        for (String i:strIndex1) {
            char fist = i.charAt(0);
            char upperfirst = Character.toUpperCase(fist);
            i = upperfirst + i.substring(1,i.length());
            System.out.println(i);
        }
        str = Arrays.toString(strIndex1);
        System.out.println(str);

        //方式二
        /*
        String[] strIndex2 = str.split(" ");
        for (int i = 0; i < strIndex2.length; i++) {
            char first = strIndex2[i].charAt(0);
            char upeerfirst = Character.toUpperCase(first);
            strIndex2[i]= upeerfirst + strIndex2[i].substring(1,strIndex2[i].length());
            System.out.println(strIndex2[i]);
        }
        str = Arrays.toString(strIndex2);
        System.out.println(str);
         */
    }
}      

可变字符串

  • StringBuffer:可变长字符串,JDK1.0提供,运行效率慢,线程安全
  • StringBuilder:可变长字符串,JDK5.0提供,运行效率快,线程不安全;单线程推荐使用这个

StringBuffer和StringBuilder常用方法

package commonclass.stringclass;

public class Demo06 {
    public static void main(String[] args) {
        
        //StringBuffer和StringBuilder的方法是一样的
        
        //StringBuffer sb = new StringBuffer();
        StringBuilder sb = new StringBuilder();
        //1. append()追加
        sb.append("java");
        System.out.println(sb.toString());
        sb.append(" is good");
        System.out.println(sb.toString());

        //2.insert()添加
        sb.insert(0,"编程语言:");
        System.out.println(sb.toString());

        //3.replace()替换
        sb.replace(5,9,"python");
        System.out.println(sb.toString());

        //4.delete()删除
        sb.delete(0,5);
        System.out.println(sb.toString());

        //5.清空
        sb.delete(0,sb.length());
        System.out.println(sb.length());
    }
}      
Java常用类(4)- String类

继续阅读