5.字符串

我这些学习笔记,记录的都是我自己认为的知识点,可能以后再看的时候还要翻书,但是可以用来定位到准确的书中示例的位置,减少翻书重找的时间,利于自身知识体系的搭建。                   self-transcendence

5 字符串

java将字符串作为对象来处理,通过java.lang包中的String类来创建字符串

5.1.1  声明字符串

“”符号包围的都是字符串。

5.1.2  创建字符串

创建字符串要使用类的构造方法。String的构造方法如下:

1.String ( char a[] );//用一个字符数组a创建String对象

实例:String s = new String ( “good” );//这个good实际上就是char a[]={‘g’,’o’,’o’,’d’};

2.String ( char a[] , int offset , int length );//提取字符组a中一部分创建一个字符串对象,从哪里开始,长度是多少。

实例:String s = new String ( “good” );//等价于char a[]={‘g’,’o’,’o’,’d’}; String s = new String (a,2,4);

3.通过字符串常量的引用赋值给一个字符串变量

String str1str2

str1=”one”;

str2=”one”;

因为str1str2引用的相同的字符串,所以具有相同的实体

内存示意图如下:

str1   one

str2

5.2  字符串操作

字符串的下标是从0开始的

5.2.1  连接多个字符串

+”运算符实现多个字符串的连接功能。

5.3.1 获取字符串长度(返回值int

.length ( ) ;//字符串长度包括空格

5.3.2  字符串查找(返回值int

.indexOf ( String s )//返回搜索字符或字符串首次出现的位置

实例:str .indexOf ( “a” );//找不到返回-1

.lastIndexOf ( String s )//搜索字符或字符串最后一次出现的位置

实例:str . lastIndexOf ( “a” ); //找不到返回-1

str . lastIndexOf ( “” ) == str . length ( )//lastIndexOf的参数为空,等价于length方法

5.3.3  获取指定索引位置的字符(指定下标)(返回值char

.charAt ( int index ) ;//将指定索引位置的字符返回

5.4.1  获取子字符串(返回值String

.substring ( int beginIndex );//从指定索引位置开始截取

.substring ( int beginIndex , int endIndex);//从指定的开始位置截取到指定的结束位置

5.4.2  去除空格(返回值String

.trim ( );//去除字符串首尾空格

5.4.3  字符串替换(返回值String

.replace ( char oldChar , char newChar );///将指定字符或字符串替换成新的

实例:str.replace (“a”,”A”);//原字符串的a替换成A。如果原字符串没有a,则返回原字符串

5.4.4  判断字符串的开始与结尾(返回值boolean

.startsWith ( String s);//字符串开头是不是跟参数一致

.endsWith ( String s);//字符串结尾是不是跟参数一致

5.4.5  判断字符串是否相等

字符串的比较不能用==,因为==比较的是两个字符串的内存地址是否相等。即使两个字符串的内容相同,两个对象的内存地址也是不一样的,使用==仍然会返回false

.equals ( String s);//区分大小写,具有相同的字符和长度,返回true

.equalslgnoreCase ( String s);//不区分大小写,两个字符串相等,返回true

5.4.6  按字典顺序比较两个字符串

str.compareTo ( String s);//按字典顺序比较两个字符串,该比较基于字符串中各个字符的unicode值。将两个字符串的字符序列进行比较,str < s返回负整数(strs前面),str > sstrs后面)返回正整数,相等返回0

5.4.7  字母大小写转换

.toLowerCase ( );//把字符串中所有大写字母改为小写字母,没有大写返回原字符

.toUpperCase ( );//把字符串中所有小写字母改为大写字母,没有小写返回原字符

5.4.8  字符串分割

.split ( String sign);//根据参数分割,参数出现几次,分割几次

.split ( String sign , int limit);//根据int分割,int是几从第一次出现的参数位置开始,有几次分割几次。

5.5  格式化字符串

.format ( String format ,Object args);//用指定的格式和参数,返回一个指定格式的参数。

5.5.1  日期和时间字符串格式化

1.日期格式化

Date date = new Date();

String s = String.format( “%te”,date);//如果今天是2号,那么s的值为2

转换符

说明

示例

%te

一月中的某一天(1-31)

2

%tb

指定语言环境的月份简称

Feb、二月

%tB

指定语言环境的月份全称

February、二月

%tA

指定语言环境的星期几全称

Monday、星期一

%ta

指定语言环境的星期几简称

Mon、星期一

%tc

包括全部日期和时间信息

星期二 三月 25 133722 CST 2008

%tY

4位年份

2008

%tj

一年中的第几天(001-366)

085

%tm

月份

03

%td

一个月中的第几天(01-31)

02

%ty

2位年份

08

5.6  正则表达式

5.7  字符串生成器

创建的字符串对象,长度固定,内容不能改变和编译。+”可以附加新字符或字符串,但是会产生一个新的“String”实例,会在内存中创建新的字符串对象。重复对字符串修改,会极大的提升系统的负担。

如果程序中频繁的附加字符串,要使用StringBuilder

新创建的StringBuilder初始容量是16个字符,可以自行指定初始长度。如果附加的字符超过可容纳的长度,StringBuilder会自动增加长度用来容纳被附加的字符。最后使用toString()方法来得到字符串。

.append ( content );//向字符串生成器中追加内容,内容是object类型的。

.insert ( int offset , arg);//向字符串生成器指定位置插入内容,内容是object类型的。

.delete ( int start , int end);//start下标处开始,移除到end-1处下标的字符。如果不存在end-1这个字符,就一直删除到尾。


猜你喜欢

转载自blog.csdn.net/selftranscendence/article/details/80883782