Java String 类

简介: 怎么描述String的重要性呢?我想我无论怎么描述都没办法表达它的重要性,所以,认真学习String对于我们开发人员来说是非常重要的。 首先我们要明白,String类是用来操作和创建字符串的。比如说: String str = “我是一个字符串”; String str2 = new String(“我也是一个字符串”) 接着需要明白的也是最需要记住的,String不属于java内置数据类型,也就是不属于8种基本数据类型。

怎么描述String的重要性呢?我想我无论怎么描述都没办法表达它的重要性,所以,认真学习String对于我们开发人员来说是非常重要的。
首先我们要明白,String类是用来操作和创建字符串的。比如说:
String str = “我是一个字符串”;
String str2 = new String(“我也是一个字符串”)
接着需要明白的也是最需要记住的,String不属于java内置数据类型,也就是不属于8种基本数据类型。String是一个对象,并且,String是一个非常特殊的现象,它有别的对象没有的一些特征。
image

对于上面两种创建字符串的方式我来具体的分析一下:
1、 对于String来说,有一个特殊的String pool,专门存储字符串数据。
2、 String str = “我是一个字符串”的创建过程:首先、java会去到String pool 寻找有没有一个值为“我是一个字符串”的东西,如果有,则返回该东西的位置给str对象,如果没有,则创建一个,并且把位置返回。
3、 对于String str2 = new String(“我也是一个字符串”)来说,java是先在堆内存中创建一个 “我也是一个字符串”的内存区域,并且把该区域的位置返回给str2,接着,还会再一次的去String pool里面检查是否有一个值为“我也是一个字符串”的东西,若没有,则创建一个。
由此可知:
1、我们现在可以知道的是,直接吧一个字符串赋值给一个String对象时,该字符串最多创建一次或者0次,为 new String(“…”)会创建1次或者是两次字符串。
2、变量的名称都是存储在栈里面的。
3、我们所持的变量(str str2)只是一个具体对象的内存地址,这个地址也可以叫做句柄。
需要做出补充的是:
1、 String类已经对Object类的equals方法进行了覆盖
2、 在比较两个对象是否相等的时候,使用的用必须是equals方法,而不等使用“==”,我会在后续的写作中进行说明。

String常用方法
(1)length() 字符串的长度
  例:char chars[]={'a','b'.'c'};
    String s=new String(chars);
    int len=s.length();

(2)charAt() 截取一个字符
  例:char ch;
    ch="abc".charAt(1); 返回'b'
(3)getBytes()获取对应字节数组

    例:String ok="apple";
           byte[]bytes=ok.getBytes();
           for(int i=0;i<bytes.length;i++)
                 System.out.println(bytes[i]);//输出字节数组,范围为-128---127

(4)indexOf()和lastIndexOf()
   indexOf() 查找字符或者子串第一次出现的地方。
   lastIndexOf() 查找字符或者子串是后一次出现的地方。
(5)substring()  

       它有两种形式,第一种是:String substring(int startIndex) 

  第二种是:String substring(int startIndex,int endIndex)
(6)concat() 连接两个字符串
(7)replace() 替换
  它有两种形式,第一种形式用一个字符在调用字符串中所有出现某个字符的地方进行替换,形式如下:
  String replace(char original,char replacement)
  例如:String s="Hello".replace('l','w');
  第二种形式是用一个字符序列替换另一个字符序列,形式如下:
  String replace(CharSequence original,CharSequence replacement)
(8)trim() 去掉起始和结尾的空格

(9)valueOf() 转换为字符串

(10)toLowerCase() 转换为小写

(11)toUpperCase() 转换为大写
(12)startsWith()和endsWith()  

    startsWith()方法决定是否以特定字符串开始,endWith()方法决定是否以特定字符串结束

更多方法请参考String的API

目录
相关文章
|
14天前
|
Java API 索引
Java基础—笔记—String篇
本文介绍了Java中的`String`类、包的管理和API文档的使用。包用于分类管理Java程序,同包下类无需导包,不同包需导入。使用API时,可按类名搜索、查看包、介绍、构造器和方法。方法命名能暗示其功能,注意参数和返回值。`String`创建有两种方式:双引号创建(常量池,共享)和构造器`new`(每次新建对象)。此外,列举了`String`的常用方法,如`length()`、`charAt()`、`equals()`、`substring()`等。
15 0
|
3天前
|
Java 关系型数据库 MySQL
Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
【4月更文挑战第12天】Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
28 3
|
1天前
|
安全 Java 程序员
|
1天前
|
存储 编解码 算法
Java 的 String StringBuilder StringBuffer(上)
Java 的 String StringBuilder StringBuffer
10 0
|
1天前
|
Java
Java Class类
Java Class类
8 0
|
6天前
|
存储 安全 C语言
【C++】string类
【C++】string类
|
存储 编译器 Linux
标准库中的string类(中)+仅仅反转字母+字符串中的第一个唯一字符+字符串相加——“C++”“Leetcode每日一题”
标准库中的string类(中)+仅仅反转字母+字符串中的第一个唯一字符+字符串相加——“C++”“Leetcode每日一题”
|
7天前
|
编译器 C++
标准库中的string类(上)——“C++”
标准库中的string类(上)——“C++”
|
8天前
|
Java 编译器
Java Character 类
4月更文挑战第13天
|
9天前
|
存储 Java
Java基础教程(7)-Java中的面向对象和类
【4月更文挑战第7天】Java是面向对象编程(OOP)语言,强调将事务抽象成对象。面向对象与面向过程的区别在于,前者通过对象间的交互解决问题,后者按步骤顺序执行。类是对象的模板,对象是类的实例。创建类使用`class`关键字,对象通过`new`运算符动态分配内存。方法包括构造函数和一般方法,构造函数用于对象初始化,一般方法处理逻辑。方法可以有0个或多个参数,可变参数用`类型...`定义。`this`关键字用于访问当前对象的属性。