您的位置:首页 > 职场人生

黑马程序员_javse字符串学习总结

2014-06-16 05:51 323 查看
-------<a href="http://www.itheima.com/"">android培训</a>、<a
href="http://www.itheima.com/" ">java培训</a>期待与您交流!----------

字符串是非常常见的数据类型。在软件编程中,对字符串的处理是非常频繁的。

字符串特点:

在java中String表示为字符串类。在被“”双引号引住的的字符们被视为是一个字符串对象。

String是被final修饰的,所以是常量一旦被赋值就不会被改变。千万不要有以下的误解。

String s1="abc";

s1="kk";

不能认为上述两个式子是给字符串对象二次赋值,其实字符串对象此时是有两个“abc”"kk",字符串对象并没有改变,改变的是类类型变量s1,s1先是指向"abc"然后改变为指向“kk”;

String对象两种创建方法的比较。

String s1="abc";A

String s2=new String("abc")B

两者不同点:A在堆内存里只存在一个对象“abc”,而B 在内存中有两个对象 一个是new 创建的内容为null的字符串对象,另一个是“abc”.这句话的具体内容是,先在内存中创建了一个内容为空的字符串对象被s2所指向,然后在将s2指向字符串对象“abc”.

因此我们可以发现 s1==s2 的运算结果为false,很明显他们是不同的对象。

而s1.equals(s2)则为true.因为字符串重写了equals方法。比较的不在是对象地址值而是内容。

但是如果在定义以字符串如 String s3="abc";

s1==s3 结果为true,因为该种方式创建的字符串是存储在常量池中的,如果虚拟机发现新创建的字符串对象在常量池中已经存在了,就将该对象句柄(类类型变量)指向之前的那个对象,所以在内存中只有一个对象。结果为true。

字符串常用方法。

Java在String内封装了很多方法,便于我们在操作字符串时使用。这些功能大致可以有以下几个方面。

构造函数。

String的构造函数可以接受字节 字符数组 StringBuffer StringBuilder,将他们转换成字符串。

获取:

char charAt(int index)获取字符串中指定位置的字符。

int indexOf(char ch)获取字符串中指定字符的位置(第一次出现)。

int indexOf(String str)获取字符串中指定字符串的位置(第一次出现)。

int lastIndexOf(char ch)逆向获取字符串中指定字符的位置(第一次出现)。

int lastIndexOf(String str)逆向获取字符串中指定字符串的位置(第一次出现)。

String substring(int beginIndex)

返回一个新的字符串,它是此字符串的一个子字符串。

String substring(int beginIndex, int endIndex)

返回一个新字符串,它是此字符串的一个子字符串。

判断:

boolean isEmpty()判断字符串是否为空

boolean contanis(CharSequence chs)判断字符串是否包含指定序列字符串.CharSequence为字符串的父类

boolean startWith(String str)判断字符串是否以指定字符串开头

boolean endWith(String str)判断字符串是否以指定字符串结尾

boolean equals(String)判断字符串与指定字符串是否相等(内容上比较)

boolean equalsIgnoCase(String str)不考虑大小写判断字符串与制定是否相等(内容上比较)

int compareTo(String)如果参数字符串等于此字符串,则返回值 0;如果此字符串按字典顺序小于字符串参数,则返回一个小于 0 的值;如果此字符串按字典顺序大于字符串参数,则返回一个大于 0 的值。

转换:

1.将字符数组转换成字符串

构造函数 String(char[]ch)

String (char[]ch int
offerest,int count)指定偏移值与要转换的字符个数。

static String copyVauleOf(char[] ch,int offesert,int count)

2.将字符串转换成字符数组。

char[] toCharArray()

static char[] vauleOf(char[])

3.将字节数组转成字符串

构造函数 String(byte[] b)

另Arrays的静态方法 toString(byte[]b)

4.字符串转换为字节数组

byte[] getBytes()

byte[] getBytes(String charset)指定编码表,将字符串转换为字节数组

5.将基本数据类型转换成字符串。

第一种方式:基本数据+“”

第二种方式:static valueOf(基本数据类型 变量名)

基本数据类型包括:int long float boolean char char[] double Object(返回其toString())

替换:

String replace(char oldChar,char newChar)

将指定的新字符替换掉指定的所有的原先字符

String replace(Charquence old,Charquence new)将指定的新字符串替换掉指定的所有的原先字符串

切割

String[] spilt(String regex )按照指定的正则表达式拆分字符串。

注意 String s="qqjhvjhvqqjvfjjqqnj"

String[] ss=s.spilt("qq");

ss的元素因为{"","jhvjhv","jvfjj","nj"}

8其他方法

trim() 去除字符串两端空格

装换大小写:toUpCase(String s) toLowCase(string s)

字符串的容器 StringBuffer与StringBuilder

StringBuffer与StringBuilder都是用来存放字符串对象的容器对象。区别在于StringBuffer是老版本JDK上的类,是同步的。而StringBuilder是新版本JDK增加的类,是不同步的。建议使用StringBuilder因为是不同步的所以他的效率高些。但如果涉及到多线程则选择StringBffer。

他们的功能基本相同。学完StringBuffer的方法基本上也就学习完了StringBuilder的方法。

StringBuffer f方法总结。从增 删 该 查 四个方面总结。

增:

StringBuffer append(Object obj)将任意类型数据转换成字符串追加到StringBuffer容器内。

StringBuffer append(基本数据)将基本数据追加到StringBuffer容器内。

StringBuffer append(StringBuffer sb)

将StringBuffer追加到StringBuffer容器内。



StringBuffer delete(int start,int end)

删除指定范围的字符串。

StringBuffer deleteCharAt(int index)

删除指定位置的字符。



StringBuffer replace(int start,int end,String str)

将指定范围的字符串替换成参数字符串(包含头不包含尾)

void setCharAt(int index,char ch)

将制定位置的字符替换成参数字符。

StringBuffer reverse()

将StringBuffer内的字符串反转。



getChars(int begin,int stop,char[]ch,int begin)

将StringBuffer内指定范围的字符串存入参数字符数组中从指定位置开始。

char charAt(int index)

获取指定位置的字符

int index(String str)int index(String str,fromIndex)

从开头位置或指定位置开始获取指定字符串出现的位置。

int length()获取StringBuffer的长度。

String subString(int start)或(int start,int end)

获取指定位置的字符串。

基本数据包装类

Java把基本数据类型也包装成了对象。其对应关系如下。

byte Byte

short Short

int Integer

long Long

float Float

double Double

char charcter

boolean Boolean

基本数据类型包装类常用方法是字符串与基本数据类之间的转换

static parse基本数据类型(String str)

将指定字符串转换成基本数据类型

基本数据进制转换方法

十进制转二进制:static toBinaryString()

十进制转八进制:static toHexString()

十进制转十六进制:static toOctalString()

其他进制转十进制

parseInt(String s, int radix)

使用第二个参数指定的基数,将字符串参数解析为有符号的整数

注意参数的格式一定要传正确,不然会抛NumberFormatException 异常。

下面是一些字符串的练习题,演示字符串一些方法的使用

package com.itheima.string;

/*

* 写一个和trim()一样的方法。

*/

public class Practise1 {

public static void main(String[] args) {

// TODO Auto-generated method stub

System.out.println(myTrim("b"));

}

public static String myTrim(String s){

char[]ch=s.toCharArray();

int start=0;

int end=s.length()-1;

while(ch[start]==' '){

start++;

}

while(ch[end]==' '){

end--;

}

if(end==start)

end++;

System.out.println(s.length());

String newS=s.substring(start,end);

return newS;

}

}

package com.itheima.string;

/*

* 将字符串指定部分进行反转。

*/

public class Practise2 {

public static void main(String[] args) {

// TODO Auto-generated method stub

System.out.println(fanZhuan("0123456789",3,8));

}

public static String fanZhuan(String s,int start,int end){

if(start==end)

return s.substring(start,end+1);

char[]ch=s.toCharArray();

String s1="";

for(int i=end-1;i>=start;i--){

s1=s1+ch[i];

}

return s.replace(s.substring(start,end), s1);

}

}

-------<a href="http://www.itheima.com/"">android培训</a>、<a href="http://www.itheima.com/"
">java培训</a>期待与您交流!----------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: