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

目录
相关文章
|
6天前
|
缓存 安全 Java
《从头开始学java,一天一个知识点》之:输入与输出:Scanner与System类
你是否也经历过这些崩溃瞬间?三天教程连`i++`和`++i`都说不清,面试时`a==b`与`equals()`区别大脑空白,代码总是莫名报NPE。这个系列就是为你打造的Java「速效救心丸」!每天1分钟,地铁通勤、午休间隙即可学习。直击高频考点和实际开发中的“坑位”,拒绝冗长概念,每篇都有可运行代码示例。涵盖输入输出基础、猜数字游戏、企业编码规范、性能优化技巧、隐藏技能等。助你快速掌握Java核心知识,提升编程能力。点赞、收藏、转发,助力更多小伙伴一起成长!
36 19
|
7天前
|
缓存 安全 Java
《从头开始学java,一天一个知识点》之:字符串处理:String类的核心API
🌱 **《字符串处理:String类的核心API》一分钟速通!** 本文快速介绍Java中String类的3个高频API:`substring`、`indexOf`和`split`,并通过代码示例展示其用法。重点提示:`substring`的结束索引不包含该位置,`split`支持正则表达式。进一步探讨了String不可变性的高效设计原理及企业级编码规范,如避免使用`new String()`、拼接时使用`StringBuilder`等。最后通过互动解密游戏帮助读者巩固知识。 (上一篇:《多维数组与常见操作》 | 下一篇预告:《输入与输出:Scanner与System类》)
37 11
|
13天前
|
存储 JavaScript Java
课时44:String类对象两种实例化方式比较
本次课程的主要讨论了两种处理模式在Java程序中的应用,直接赋值和构造方法实例化。此外,还讨论了字符串池的概念,指出在Java程序的底层,DOM提供了专门的字符串池,用于存储和查找字符串。 1.直接赋值的对象化模式 2.字符串池的概念 3.构造方法实例化
|
13天前
|
Oracle Java 关系型数据库
课时37:综合实战:数据表与简单Java类映射转换
今天我分享的是数据表与简单 Java 类映射转换,主要分为以下四部分。 1. 映射关系基础 2. 映射步骤方法 3. 项目对象配置 4. 数据获取与调试
|
13天前
|
存储 Java 编译器
课时11:综合实战:简单Java类
本次分享的主题是综合实战:简单 Java 类。主要分为两个部分: 1.简单 Java 类的含义 2.简单 Java 类的开发
|
13天前
|
Java
课时14:Java数据类型划分(初见String类)
课时14介绍Java数据类型,重点初见String类。通过三个范例讲解:观察String型变量、&quot;+&quot;操作符的使用问题及转义字符的应用。String不是基本数据类型而是引用类型,但使用方式类似基本类型。课程涵盖字符串连接、数学运算与字符串混合使用时的注意事项以及常用转义字符的用法。
|
14天前
|
传感器 监控 Java
Java代码结构解析:类、方法、主函数(1分钟解剖室)
### Java代码结构简介 掌握Java代码结构如同拥有程序世界的建筑蓝图,类、方法和主函数构成“黄金三角”。类是独立的容器,承载成员变量和方法;方法实现特定功能,参数控制输入环境;主函数是程序入口。常见错误包括类名与文件名不匹配、忘记static修饰符和花括号未闭合。通过实战案例学习电商系统、游戏角色控制和物联网设备监控,理解类的作用、方法类型和主函数任务,避免典型错误,逐步提升编程能力。 **脑图速记法**:类如太空站,方法即舱段;main是发射台,static不能换;文件名对仗,括号要成双;参数是坐标,void不返航。
36 5
|
1月前
|
安全 Java 编译器
JAVA泛型类的使用(二)
接上一篇继续介绍Java泛型的高级特性。3. **编译时类型检查**:尽管运行时发生类型擦除,编译器会在编译阶段进行严格类型检查,并允许通过`extends`关键字对类型参数进行约束,确保类型安全。4. **桥方法**:为保证多态性,编译器会生成桥方法以处理类型擦除带来的问题。5. **运行时获取泛型信息**:虽然泛型信息在运行时被擦除,但可通过反射机制部分恢复这些信息,例如使用`ParameterizedType`来获取泛型参数的实际类型。
|
1月前
|
安全 Java 编译器
JAVA泛型类的使用(一)
Java 泛型类是 JDK 5.0 引入的重要特性,提供编译时类型安全检测,增强代码可读性和可维护性。通过定义泛型类如 `Box&lt;T&gt;`,允许使用类型参数。其核心原理是类型擦除,即编译时将泛型类型替换为边界类型(通常是 Object),确保与旧版本兼容并优化性能。例如,`Box&lt;T&gt;` 编译后变为 `Box&lt;Object&gt;`,从而实现无缝交互和减少内存开销。
|
3月前
|
JSON Java Apache
Java基础-常用API-Object类
继承是面向对象编程的重要特性,允许从已有类派生新类。Java采用单继承机制,默认所有类继承自Object类。Object类提供了多个常用方法,如`clone()`用于复制对象,`equals()`判断对象是否相等,`hashCode()`计算哈希码,`toString()`返回对象的字符串表示,`wait()`、`notify()`和`notifyAll()`用于线程同步,`finalize()`在对象被垃圾回收时调用。掌握这些方法有助于更好地理解和使用Java中的对象行为。