java系统学习(四) --------java字符串的处理

来源:互联网 发布:猎巫运动知乎 编辑:程序博客网 时间:2024/04/29 01:11


字符串是java中的类,它不是基本的数据类型。使用方法像一般的基本数据类型。


字符串处理的类库种类

java中使用最多的字符串处理的类 分别是 String 和  StringBuffer


处理一些小的文本,建议使用String,它比较方便。

如果使用String类来处理大型文本,会很消耗资源,所以java引进了 StringBuffer


下面分别记录 两种类型的使用


String

构造器

默认构造器

String() 这个构造器是最简单的构造器 也是系统默认的构造器,是不带参数的。

用法

String str= new String();System.out.println(str);

这里输出了一个空字符串。因为只初始化,没赋值。


字节参数的构造器

String(byte[] byte) 将字节数组中的元素作为字符串对象。

用法

byte[] b={97,98,99}//通过构造器,将字节数组中的元素连接成一个字符串String str=new String(b);System.out.println(str);
结果:

abc

因为字节 97 98 99分别对应字母 abc 


获取指定字节数的构造器

String(byte[] bytes,int offset,int length) 将字节数组中,从offset指定的位置开始,到 length长度结束。中间的字符构成字符串对象。

用法

byte[]  b={97,98,99,100,101,102};//通过构造器,将字节数组中的元素连接成一个字符串,并且从第4个位置开始,取2个元素String str=new String(b,3,2);System.out.println(str);
结果:

de

因为字节 100   101 分别对应字母d  e 


将字节型数据转换为字符集输出的构造器

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

这个构造器的含义就是将一个字节数组中从第offset个位置的字符开始,length长度的字符结束,中间的字符形成字符串对象,然后将这个字符串按照某种字符集样式输出。

字符集一般有  us-ascii   iso-8859-I  utf-8    utf-16be     utf-16le      utf-16等样式

用法

byte[] b ={97,98,99,100,101,102};String str =new String(b,3,2,"utf-8");//将此字符串以utf-8的形式输出System.out.println(str);

结果:

de



字符数组的构造器

String(char[] value)构造一个字符数组

用法

char[]  c={'w','e','l','c','o','m','e'};//通过构造器,将字符数组中的元素链接成一个字符串Sring str=new String(c);Syetem.out.println(str);

结果:

welcome


截取部分字符串数组内容的构造器

String(char[]  value,int offset,int count) 这个构造器的含义是 将字符数组中从offset指定的位置开始 count指定的数目结束,中间的字符连成字符串。

用法   

char[]  c={'w','e','l','c','o','m','e'};//通过构造器,将字符数组中的元素链接成一个字符串,并且从第4个位置开始,取4个元素Sring str=new String(c,3,4);Syetem.out.println(str)

结果:

come




字符串的处理方法

串连接

两种方法

一个是用+ 号

另一个是 用 contact(String str)方法

+号连接

用法

String str1="welcome";String str2="you";System.out.println(str1+str2);

结果:

welcome you


contact连接

用法

String str1="welcome";String str2="you";System.out.println(str1.contact(str2))

结果:

welcome you



提取字符串

有时一个很长的字符串,其中只有一小部分是需要的,于是Java语言类库中就提供了相
应的获取局部字符串的方法。方法是:"substring(int beginIndex,  int endlndex)"或
substring(int index)"。下面将详细地讲述这两个方法的意义和使用方法。


substring(int index)

"substring(int index)”是指提取从index指定的位置开始,一直到字符串的最后。

用法

//初始化一个字符串strString str="we are students and he is worker”;//提取从字符串的第3个元素开始到第1。个元素位置的字符串,//并且将其输出System.out.println(str.substring(2,10));
结果:

are stu


substring(int beginlndex,  int endlndex)

"substring(int beginlndex,  int endlndex)”是指提取由“beginIndex”位置开始,以 "endIndex”为结束位置的字符串。

用法

//初始化一个字符串strString str="we are students and he is worker”;//提取从字符串的第3个元素开始到第1。个元素位置的字符串,//并且将其输出System.out.println(str.substring(3));

结果:

are students and he is worker



从字符串中分解字符


上面的方法是从字符串中提取子字符串,而将要讲述的是从宇符串中提取一个指定的字符。从字符串中分解字符的方法是:"charAt  (int index)",这个方法返回的是一个字符,而不是字符串,这是跟前面方法的区别。参数“index"是指宇二符串序列中字符的位置。


用法

//从字符串中的第2个位置将字符提取出来String str="we are students and he is a worker";Spstem.out.println(str.charAt(1));//获取第2个位置的字件

结果

e



得到字符串的长度


在学习数组时,学到过数组长度,而在这里也要讲到字符串的长度。字符串长度使用方法"length()”获取。
用法

String str="we are students and he is a worker”;System.out.println(str.length());//输出字符串的长度
结果:

34



测试字符串是否相等

equals

在实际程序月几发中,经常会出现一些比较字符串的程序模块,通过比较字符串是否相等,来实现某个要求。例如,通过比较两个字符串是否相等,来确认密码和用户名是否正确,从而判断是否可以登录系统。这个在系统登录界面中经常遇到。测试字符串是否相等的方法是"equals(String str)"。

用法

//声明两个字符串对象str和strlString str="administrator";String strl="administrator";if (str.equals(strl)) {//如果相同则输出’‘密码正确,请登录系统”      System.out.println('’密码正确,请登录系统”);}else{//否则输出‘’密码不正确,请重新输入密码”        System.ou七.println(”密码不正确请重新输入密码”》;)
结果:

密码正确,请登录系统


equalsIgnoreCase

在现实程序开发中,有的登录系统对十输入密码的大小写忽略。此时在Java语言中也有一
个方法就是“equalsIgnoreCase(String str)",这个方法忽略字符串大小写。

用法

//声明两个字符串对象str和strlString str="Administrator";String strl="administrator";if (str.<span style="font-size: 18px;">equalsIgnoreCase</span>(strl)) {//如果相同则输出’‘密码正确,请登录系统”      System.out.println('’密码正确,请登录系统”);}else{//否则输出‘’密码不正确,请重新输入密码”        System.ou七.println(”密码不正确请重新输入密码”》;)
结果:

密码正确,请登录系统


查找特定子串

在程序开发的过程中,有的系统提供查找j-.系统,用于查找自己需要的内容。java提供了查找特定子串的功能,可以帮助查找自己需要的升字符串。


查找字符串子串有三个方法:
"indexOf(串内容)”方法是帮助查找子串,如果返回的是负数,就表示在当前字符串中没有找到所查找的子串。
"startsWith(子串内容)”方法测试当前宇符串是否以子串开始。
 "endsWith(子串内容)”方法测试当前字符串是否以子串内容为结尾。

用法

//定义字符串对象StrString str=”是一个很优秀的程序员”;//通过indexOf方法来查找字符串中的元素位置System.out.println(str.iadezOf("个"));//通过endswith来查找当前元素是否是字符串的结尾System.out.printla(str.endsWith("员"));//通过startsWith来查找当前元素是否是字符串的开头System.out.println(str.startsWith(”明”));
结果:

2
true
false



从基本类型转换成字符串

使用“valueOf()”将基本类型的数据转换成相应的字符串。或者 toString()




缓冲字符串处理类—StringBuffer

前面介绍过,"String”类声明初始化后,是固定不变的。如果要改变它,就必须重新申清空间,重新声明和初始化。Java类库中有一个类,可以解决上面的问题,那就是缓冲’全符串类—"StringBuffer”类。
   

当创建StringBuffer类对象时,系统为对象分配的内存会自动扩展,以容纳新增的内容。针对“StringBuffer”类创建对象时的构造器有两个,下面将详细地讲述。


缓冲字符串StringBuffer类的构造器

默认的构造器

用法

StringHuffer sb=new StringBuffer();


设定容量大小的构造器

用法

StringBuffer sb=new StringBuffer(int x)


扩充容量

用法

System.out.println(sb.capacity());System.out.println(sb. easureCapacity(100))System.out.println(sb.capacity());//输出字符串的容量capacity//扩充容量//输出宇符串的容量capacity



缓冲字符串处理的方法

连接字符串

用法

//构造一个缓冲字符串类的对象sbStringBuffer sb=new StriagBuffer('’小明是一个优秀”);//通过append方法,在这个对象后面添加一个新字符串sb.append(”的程序员”)System.out.println(sb);//输出字符串对象
结果:

小明是一个优秀的程序员



取字符串的单个字符

charAt()方法返回字符串中的单个字符。

用法

//构造一个缓冲字符串类对象sbStringBuffer sb=new StringBuffer("小明是一个优秀");//返回指定位置的字符System.out.println(sb.charAt(3));

结果:


单个字符串赋值

setCharAt()方法对字符串中的单个字符赋值或进行替换。

用法

//构造一个缓冲字符串类对象sbStringBuffer sb=new StringBuffer('‘小明是一个优秀程序员")//将指定位置的元素替换成新的字符sb.setCharAt(0,'张');System.out.println(sb);//输出字符串
结果:

张明是一个优秀程序员


指定位置插入字符串

insert()方法在字符串指定位置插入值

用法

//构造一个缓冲字符串类对象sbStringBuffer sb=new StringBuffer("我是一个优秀");//使用insert方法将新字符串插入到指定的位置sb.insert(6,'的程序员');System.out.println(sb);//输出字符串
结果:

我是一个优秀的程序员



返回字符串的子串

substring()方法用干返回字符串的一个子串。

用法

//构造一个缓冲字符串类对象StringBuffer sb=new StringBuffer(”我是一个程序员”)//使用substring方法返回指定位置开始到结束位置的子串System.out.println(sb.substring(2));
结果:

一个程序员


倒置字符串的内容

reverse()方法用来倒置“StrineBuffer'的内容

用法

//构造一个缓冲字符串类对象StringBUffer sb=new StringBuffer(”我是一个程序员”);System.out.println(sb.reverse());//将字符串倒置后输出
结果:

员序程个一是我




疑难问答

“equals”与 “== ”的区别

1.

 ==是判断两个变量或实例是不是指向同一个内存空间
equals是判断两个变量或实例所指向的内存空间的值是不是相同
2.
==是指对内存地址进行比较 
equals()是对字符串的内容进行比较 
3.
==指引用是否相同 
equals()指的是值是否相同




0 0
原创粉丝点击