JAVA中String类详解

string类的详细用法,主要参考string源码
1,属性
/** The value is used for character storage. */
//用户String字符的数组存储
private final char value[];

/** Cache the hash code for the string */
//String串的hashcode值,默认是0
private int hash; // Default to 0
2,常用方法

isEmpty()方法--判断字符串是否为空
源码: public boolean isEmpty() {
return value.length == 0;
}
例:
String s = "abcdefghijklmnopqrstuvwxwz";
boolean b = s.isEmpty();
System.out.println(b);//b的值为true
-----------------------------------------------
length()方法 -- 返回字符串的长度
源码: public int length() {
return value.length;
}
例:
String s = "abcdefghijklmnopqrstuvwxwz";
int i = s.length();
system.out.println(i);//i的值为26
-----------------------------------------------
charAt方法 -- 按照索引值获得指定的字符
源码:public char charAt(int index) {
if ((index < 0) || (index >= value.length)) {
throw new StringIndexOutOfBoundsException(index);
}
return value[index];
}
例:
String s = "abcdefghijklmnopqrstuvwxwz";
char c = s.charAt(1);
system.out.println(c);//c的值为'b'
-----------------------------------------------
compareTo()方法 --改方法主要是比较字符串的大小,
比较的原理是依次比较每个字符的字符编码。首先比较
两个字符串的第一个字符,如果第一个字符串的字符编码
大于第二个的字符串的字符编码,则返回大于0的值,如果
小于返回小于0的值,相等则比较后续的字符,如果完全相同
则返回0
源码:


例:
String s = "abcdefghijklmnopqrstuvwxwz";
String s1 = "abcdefghijklmnopqrstuvwxwz";
System.out.println(https://www.360docs.net/doc/d315094809.html,pareTo(s1));//两个字符串相同,值为0
----------------------------------------------------
endsWith()方法--判断字符串是否已某个字符串结尾,如果有对应的
字符串结尾,返回true
例:
String s = "abcdefghijklmnopqrstuvwxwz";
boolean b = s.endsWith("wz");
boolean b1 = s.endsWith("wzq");
System.out.println(b);//true
System.out.println(b1);//false
----------------------------------------------------
startsWith,与endsWith类似,主要是判断字符串是否是某个字符串的开始
----------------------------------------------------
equals()与equalsIgnoreCase()方法
该方法的作用是判断两个字符串对象的内容是否相同,如果相同
返回true,否则返回false,equalsIgnoreCase()忽略大小写
例:
String s = "abc";
String s1 = new String("abc");
String s2 = "abc";
boolean b = s.equals(s1);
System.out.println(b);//tr

ue
System.out.println(s1==s);//false
System.out.println(s==s2);//true
而使用“==”比较的是两个对象在内存中存储的地址是否一样。
例如上面的代码中,如果判断:
boolean b = (s == s1);
则变量b的值是false,因为s对象对应的地址是”abc”的地址,
而s1使用new关键字申请新的内存,所以内存地址和s的”abc”的地址不一样,
所以获得的值是false。
--------------------------------------------
getBytes()方法--该方法的作用是将字符串转换为对应的byte数组
从而便于数据的存储和传输。
例:String s = "中国";
byte [] b = s.getBytes();
b = s.getBytes("gb2312");
-------------------------------------------------
indexOf()方法
主要用于查找特定字符或者字符串在当前字符串中的起始位置
,如果不存在则返回-1
例:
String s = "abcdefghijklmn";
int i = s.indexOf('b');//返回1
int i1 = s.indexOf('x');//返回-1,因为不存在

也可以设置位置查找对应的字符
int i = s.indexOf('e',2);
从索引2(包括2)以后的字符中第一个出现字符e,返回的值为4

还有个方法是lastIndexOf(),从字符串的末尾开始查找第一次出现
的对应的字符或字符串
-----------------------------------------------------------
replace()方法
该方法的作用是替换字符串中所有指定的字符,然后生成一个新的字符串,
经过该方法调用以后,原来的字符串不放手改变
例:
String s = "abc";
String s1 = s.replace("a", "aa");
System.out.println(s);//abc
System.out.println(s1);//aabc
如果只需要替换第一个出现的指定字符串时,可以使用replaceFirst方法,例如:
String s = “abatbac”;
String s1 = s. replaceFirst (“ba”,”12”);
该代码的作用是只将字符串s中第一次出现的字符串”ab”替换为字符串”12”,
则字符串s1的值是”a12tbac”,字符串s的内容也不发生改变。
------------------------------------------------------------------
split()方法--
该方法的作用是以特定的字符串为间隔,拆分当前字符串的内容,拆分以后
会获得一个字符串数组
例如:
String s = "aa,bb,cc"
String [] s1 = s.split(",");
以“,”为间隔,拆分以后的数组内容为:{"aa","bb","cc"}
------------------------------------------------------------------
substring()方法
该方法的作用是取字符串中的"字串",所谓“字串”,就是字符串中的一部分
String s = "Hello";
String s1 = s.substring(2);
该代码的作用是取字符串s中的索引值为2包括2以后的所有字符串为字串,
字符串s1的值为:"llo"
--如果数字的值和字符串的长

度相同,则返回空字符串
如果需要去字符串内部的一部分,则可以使用2个参数的substring方法
String s = "Hello World";
String s1 = s.substring(1,7);
则代码的作用是去字符串s中从索引1包括1开始,到索引值5(不包括5)
的部分作为子串,s1的值为:"llo W"
------------------------------------------------
toCharArray()方法
该方法的作用和getBytes方法类似,即将字符串转换为对应的char数组
例:String s = "abc";
char [] c = s.toCharArray();
c的值为:{"a","b","c"}
----------------------------------------------------
toLowerCase方法和toUpperCase方法
toLowerCase方法作用是将字符串所有大写的字符都转换为小写
toUpperCase相反
-------------------------------------------------------------
trim()方法
该方法的作用是去掉字符串开始和结尾的所有空格,然后形成一个新的字符串
该方法不能去掉字符串中间的空格
--------------------------------------------------------------------
valueOf()方法
该方法的作用是将其他类型的数据转换为字符串类型
该方法是static方法,所有不用创建类型的对象即可
例:
int i = 10;
String s = String.valueOf(i);

3,String类常见问题
1>-- String类型转换为日期类型
String dateStr = "20160512";
SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
try {
Date date = format.parse(dateStr);
String dateString = format.format(date);
System.out.println(dateString);//20160512
System.out.println(date);//Thu May 12 00:00:00 CST 2016
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
2>-- String中使用equals与==的选择
==比较的字符串的内存地址,即物理地址,或者说堆内存地址
equals比较的字符串的值,内容
看需求做选择


相关文档
最新文档