JAVA提高篇之字符串

最近学习JAVA String类,写点博客记录学习笔记,主要从五个部分介绍Java 字符串,(1)字符串String简介 (2)字符串String 常用方法 (3)字符串String常规操作如截断,查找分区等,(4)字符串的存储特性和不可变性,(5)String ,StringBuilder,Stringbuffer之间的比较。(一)String简介在JAVA中,我们用String来表示字符串,如"abd","132asdjkdv",等内容,Java程序中的所有字符串文字(例如"abc" )都...
摘要由CSDN通过智能技术生成

最近学习JAVA String类,写点博客记录学习笔记,主要从五个部分介绍Java 字符串,(1)字符串String简介  (2)字符串String 常用方法  (3)字符串String常规操作如截断,查找分区等,(4)字符串的存储特性和不可变性,(5)String ,StringBuilder,Stringbuffer之间的比较。

(一)String简介

在JAVA中,我们用String来表示字符串,如"abd","132asdjkdv",等内容, Java程序中的所有字符串文字(例如"abc" )都被实现为此类的实例。

String是一个fianl类,代表不可变的字符序列。字符串不变; 它们的值在创建后不能被更改。 字符串缓冲区支持可变字符串。 因为String对象是不可变的,它们可以被共享。 例如:

     String str = "abc";

相当于:

     char data[] = {'a', 'b', 'c'};
     String str = new String(data);

字符串的特点:

  1. 字符串的内容在创建后永不可变。(重点)
  2. 因为字符串在创建后是不可变的,所以字符串是可以共享的。
  3. 字符串的处理结果相当于char[ ]字符数组,但底层原理是byte[ ]字节数组。
  4. 通过new创建的字符串对象,每一次new都会申请一块内存空间,虽然内容是相同的,但是地址值是不同的,
  5. 以""方式给出的字符串,只要字符序列相同(顺序和大小写完全相同),无论在程序代码中出现几次,JVM都只会创建一个String对象放置于堆内存的字符串常量池中

 String应用中的注意点

  • String s1 = "a"; 说明:在字符串常量池中创建了一个字面量为"a"的字符串。
  •  s1 = s1 + "b"; 说明:实际上原来的“a”字符串对象已经丢弃了,现在在堆空间中产生了一个字符 串s1+"b"(也就是"ab")。如果多次执行这些改变串内容的操作,会导致大量副本 字符串对象存留在内存中,降低效率。如果这样的操作放到循环中,会极大影响 程序的性能。
  •  String s2 = "ab"; 说明:直接在字符串常量池中创建一个字面量为"ab"的字符串。
  •  String s3 = "a" + "b"; 说明:s3指向字符串常量池中已经创建的"ab"的字符串。 String s4 = s1.intern(); 说明:堆空间的s1对象在调用intern()之后,会将常量池中已经存在的"ab"字符串 赋值给s4。

(二)String常用方法

Java中String类常用的方法如下:

程序实例:

package strings;

/**
 * Created with IntelliJ IDEA.
 * User:  yongping Li
 * Date: 2020/11/14
 * Time: 10:47
 * Description: No Description
 */
/*
 String类适用于描述字符串事物。那么它就提供了多个方法对字符串进行操作。

 常用的方法如下:

 1、获取:
 	1.1 字符串中包含的字符数,也就是字符串的长度。
 		int length():获取长度。
 	1.2 根据位置获取该位置上的某个字符。
 		char charAt(int index):返回指定索引处的char值。
 	1.3 根据字符获取该字符在字符串的位置。
 		int indexOf(String str):返回的是str在字符串中第一次出现的位置。
 		int indexOf(int ch,int fromIndex):从fromIndex指定位置开始,获取ch在字符串中出现的位置。
 		int lastIndexOf(int ch):反向索引一个字符出现的位置

 2、判断:
 	2.1  字符串中是否包含某一个子串。
 		boolean contains(str);
 		特殊之处:indexOf(str):可以索引str第一次出现的位置,如果返回-1表示该str不在字符串中存在。
 				  所以,也可以用于对指定判断是否包含。
 				 if(str.indexOf("aa")!=-1)
 				  而且该方法既可以判断,又可以获取出现的位置
 	2.2 字符中是否有内容。
 		boolean isEmpty():原理就是判断长度是否为0.
 	2.3 字符串是否是以指定内容开头。
 		boolean startsWith(str);
 	2.4 字符串是否是以指定内容结尾。
 		boolean endsWith(str);
 	2.5判断字符串内容是否相同。复写Object类中的equals方法。
 		boolean equals(str);
 	2.6 判断内容是否相同,并忽略大小写
 		boolean equalsIgnoreCase();

 3、转换
 	3.1 将字符数组转换成字符串。
 		构造函数: String(char[])
 				  String(char[],offset,count):将字符数组中的一部分转换成字符串。
 		静态方法:
 				 st
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值