java笔记
  • Java语言概述
  • 入门
    • ubuntu安装
    • window配置环境变量
    • 编写HelloWorld
    • 注释
    • 编程风格
    • 进制与字符编码
    • 键盘录入
  • java基础
    • 数据类型
    • 运算符与类型转换
    • 控制语句
      • 选择结构(if-else/swtich)
      • 循环结构(while/do-while/for)
    • 数组
      • 数组基础
      • 数组进阶
    • 面向对象
      • 基础
        • 面向过程和面向对象
        • 类与对象
        • 构造方法
        • 垃圾回收机制garbage collection
        • 关键字
      • 进阶
        • 封装
        • 继承
        • 多态
        • 抽象
        • 内部类
      • 高级特性
        • String类
        • 枚举
        • 注解
    • 异常
    • 常用类
      • 包装类
      • String相关类
      • 时间类
      • 数学类
      • File类
      • 枚举类
    • 单个字符操作(Character 类)
    • Java字符串
      • String
      • StringBuilder
      • StringBuffer
    • Java集合
    • Java 泛型
    • Java解惑
  • 附录:git
  • 附录:转义字符
  • maven
    • pom.xml
    • maven安装
  • 其他
    • BeanUtils
  • java与php语法对比
  • idea
  • 开发记录
  • ExecutorService 异步线程池
Powered by GitBook
On this page
  • 常量池(了解即可)
  • String常用Api

Was this helpful?

  1. java基础
  2. 面向对象
  3. 高级特性

String类

Previous高级特性Next枚举

Last updated 5 years ago

Was this helpful?

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

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

常量池(了解即可)

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

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

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

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

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

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

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

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

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

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"的值替换成"都成"。  
    }  
}

String API 请自行到 下载JAVA的API包,下载完解压打开docs/api/index.html进行查看API的查看。如何查看请自行搜索相关教程,这不是我们的重点。

https://www.oracle.com/technetwork/java/javase/documentation/jdk8-doc-downloads-2133158.html