Java 中 String 类的常规操作

本文深入探讨了 Java 中 String 类型的特点与用法,包括不同实例化方式的区别、字符串比较的注意事项、以及常用的字符串操作方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

String类型详解

String本身就是一个类,只是Java对其进行了特殊处理。

两种实例化方式原理及区别:

/* 两种创建 String 对象的方法
* 1.
直接赋值:(推荐按这种方法)
* 2.
使用构造方法
* */
String str1 = "123";
String str2 = new String("123");

/*两者的区别
* 1.
直接赋值: 只会开辟一块堆内存空间,并且该对象会保存在对象池中,以供下次使用
* 2.
使用构造方法: 会开辟两块堆内存空间,并且一块将会成为垃圾,并且不会自动保存到对象池中,但可以通过 str1.intern() 方法手工入池
* */
// 两种创建 string 对象的区别
String str3 = "123";    // str1 共享 "123" 数据所占的堆内存空间
System.out.println(str1 == str3);   // 值为: true;    JVM的常量共享


// 字符串的比较
System.out.println(str1 == str2);   // 结果为 false
System.out.println(str1.equals(str2)); // 结果为 true
/*
*
原因分析:
* "=="
只能进行数值的比较,str1 == str2 实际比较的是两个字符串内存地址的数值
* "equals()"
比较的才是两者的内容的区别
* */

/*
*
在以后的开发中强烈建议采用 way_2 比较字符串.
*
原因在于:
*   way_1
str1 如果为空的话会产生空指针异常,导致程序终止
*   way_2
str1 即使为空,只会得到的结果为 false,不会出现异常
* */
// way_1
str1.equals("hello");
// way_2
"hello".equals(str1);

 

常用操作分类:

构造函数:

String(byte[] bytes)

String(byte[] bytes, Charset charset)

String(byte[] bytes, String charsetName)

String(byte[] bytes, int offset, int length)

String(char[] value)

String(char[] value, int offset, int count)

String(StringBuffer buffer)

String(StringBuilder builder)

字符串与字符数组:

      

char[]

toCharArray()

 

字节与字符串:

byte[]

getBytes()

byte[]

getBytes(Charset charset)

byte[]

getBytes(String charsetName)

 

字符串比较:

int

compareTo(String anotherString)

比较字符串的大小(-101

int

compareToIgnoreCase(String str)

忽略大小写比较字符串大小

boolean

equals(Object anObject)

boolean

equalsIgnoreCase(String anotherString)

 

字符串查找:

boolean

contains(CharSequence s)

是否包含

boolean

endsWith(String suffix)

int

indexOf(String str)

返回找到的 str 的首字母索引值

int

indexOf(String str, int fromIndex)

从指定位置查找

int

lastIndexOf(String str)

倒着查找

int

lastIndexOf(String str, int fromIndex)

boolean

matches(String regex)

使用正则表达式匹配

boolean

startsWith(String prefix)

boolean

startsWith(String prefix, int toffset)

 

字符串替换:

String

replace(char oldChar, char newChar)

String

replaceAll(String regex, String replacement)

String

replaceFirst(String regex, String replacement)

 

字符串拆分:

String[]

split(String regex)

String[]

split(String regex, int limit)

限制拆分后的个数

 

字符串截取:

String

substring(int beginIndex)

String

substring(int beginIndex, int endIndex)

 

其他常用方法

char

charAt(int index)

返回指定索引位置的字符

String

concat(String str)

连接两个字符串类似 “+”

boolean

isEmpty()

String

intern()

int

length()

String

toLowerCase()

转换为小写

String

toUpperCase()

转换为大写

String

trim()

去除开头结尾的空格(注意只有这一种方法:1.8

 PS:上面的方法是直接从 Java 1.8 API 文档中提取出来的,这里主要作为一个个人总结,由于较为简单所以没有符详细代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值