String类

本质:一串不可变的字符数组。

请看String的源码有如下一句话:

常量池(了解即可)

常量池属于方法区,分为三种。

  • 1.全局字符串常量池(String Pool)

存放字符串常量的引用值,每个JVM只有一份。

  • 2.class文件常量池(Class Constant Pool)

每个class在编译阶段都有,存放常量(文本、字符串、final常量……)和符号引用。

  • 3.运行时常量池(Runtime Constant Pool)

每个class都有一个运行时常量池,作用是类在解析之后,将符号引用替换成直接引用。

把全局字符串常量池的引用值和class文件常量池的值关联起来。

关于字符串的“+”连接符以及字符串比较请仔细看运算符和继承章节,里面有讲。

String API 请自行到 https://www.oracle.com/technetwork/java/javase/documentation/jdk8-doc-downloads-2133158.html 下载JAVA的API包,下载完解压打开docs/api/index.html进行查看API的查看。如何查看请自行搜索相关教程,这不是我们的重点。

String常用Api

这些api开发中经常用,要多练习。

System.out.println("String常用API");  
String s2 = " dfa345GFGEdfgsew成都45码到功成 ";  
System.out.println(s2.length());// 获取字符串长度。  
System.out.println(s2.trim());// 去除字符串首尾空格  
String s3 = " dfa345gfgedfgsew成都45码到功成 ";  
System.out.println(s2.equals(s3));// 比较字符串内容是否相等  
System.out.println(s2.equalsIgnoreCase(s3));// 无视大小写比较字符串内容是否相等  
System.out.println(s2.toUpperCase());// 字符串的字符全部大写  
System.out.println(s2.toLowerCase());// 字符串的字符全部小写  
System.out.println(s2.startsWith(" dfa"));// 字符串是否以 daf开始  
System.out.println(s2.endsWith("功成 "));// 字符串是否以功成 结束  
System.out.println(s2.indexOf("成都"));// 字符串里面“成都”的索引值,从0索引开始。  
System.out.println(s2.substring(3, 10));// 截取字符串下标3到10的字符串并返回。  
System.out.println(s2.replace("成都45", "都成"));//把字符串"成都45"的值替换成"都成"。

效果:

String类的完整代码:

package com.itcode.demo2;  

/**      
 * @author: 成都码到功成学员  
 * @Description:  
 *  String类的使用 
 */  

public class TestString{  
    public static void main(String[] args) {  
        // s只是在方法区常量池产生一个字符串abc  
        // s1在方法区常量池产生一个字符串abc,同时也在堆里面产生一个对象。  
        // 字符串比较请用equals方法。  
        String s = "abc";  
        String s1 = new String("abc");  
        System.out.println(s==s1);//false  
        System.out.println(s.equals(s1));//true  
        System.out.println("=======================================================");  

        System.out.println("String常用API");  
        String s2 = " dfa345GFGEdfgsew成都45码到功成 ";  
        System.out.println(s2.length());// 获取字符串长度。  
        System.out.println(s2.trim());// 去除字符串首尾空格  
        String s3 = " dfa345gfgedfgsew成都45码到功成 ";  
        System.out.println(s2.equals(s3));// 比较字符串内容是否相等  
        System.out.println(s2.equalsIgnoreCase(s3));// 无视大小写比较字符串内容是否相等  
        System.out.println(s2.toUpperCase());// 字符串的字符全部大写  
        System.out.println(s2.toLowerCase());// 字符串的字符全部小写  
        System.out.println(s2.startsWith(" dfa"));// 字符串是否以 daf开始  
        System.out.println(s2.endsWith("功成 "));// 字符串是否以功成 结束  
        System.out.println(s2.indexOf("成都"));// 字符串里面“成都”的索引值,从0索引开始。  
        System.out.println(s2.substring(3, 10));// 截取字符串下标3到10的字符串并返回。  
        System.out.println(s2.replace("成都45", "都成"));//把字符串"成都45"的值替换成"都成"。  
    }  
}

Last updated

Was this helpful?