黑马程序员--JAVA<API>--String

来源:互联网 发布:美容上门服务软件 编辑:程序博客网 时间:2024/05/21 10:40
---------------------- ASP.Net+Android+IO开发S、.Net培训、期待与您交流! ----------------------

String


概述

1.字符串是一个特殊的对象。
2.字符串一旦初始化就不可以被改变。
3.String str = “abc”;与String str1 = new String("abc");有什么区别?
class StringTest{public static void main(String[] args){String s1 = "abc"; //s1是一个类类型变量,“abc”是一个对象。字符串最大特点:一旦被初始化就不可以被改变。s1 = "kk";//s1变了,指向了kk对象。abc对象并没有变。String s2 = new String("abc");//s1和s2有什么区别?//s1在内存中有一个对象。//s2在内存中有两个对象。System.out.println(s1==s2); //结果为falseSystem.out.println(s1.equals(s2));//结果为true。因为String类复写了Object类中equals方法,该方法用于判断字符串是否相同。并不是比较地址值。String s3 = "abc";System.out.println(s1==s3); //结果为true。因为 abc 作为一个对象存在于常量池中,s3指向了 abc 的地址。}}

常见方法

String类适用于描述字符串事物。它提供了多个方法对字符串进行操作。常见的方法:

1.获取

1.1.字符串中包含的字符数,也就算字符串的长度。
int length();获取长度。
1.2.根据位置获取位置上某个字符。
char charAt(int index);
1.3.根据字符获取该字符在字符串中的位置。
int indexOf(int ch);返回的是ch在字符串中第一次出现的位置。ch为ASCLL码值。
int indexOf(int ch, int fromIndex);从fromIndex指定位置开始,获取ch在字符串中出现的位置。ch为ASCLL码值。

int indexOf(String str);返回的是str在字符串中第一次出现的地址。
int indexOf(String str, int fromIndex);从fromIndex指定位置开始,获取str在字符串中出现的位置。

int lastIndexOf(int ch);返回的是ch在字符串中最后一次出现的位置。ch为ASCLL码值。
int lastIndexOf(int ch, int fromIndex);从fromIndex指定位置开始,获取ch在字符串中最后出现的位置。ch为ASCLL码值。

int lastIndexOf(String str);返回的是str在字符串中最后一次出现的地址。
int lastIndexOf(String str, int fromIndex);从fromIndex指定位置开始,获取str在字符串中最后出现的位置。

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.判断字符串内容是否相同。
boolean equals(str);
2.6.判断内容是否相同,并且忽略大小写。
boolean equalsIgnoreCase();

3.转换。

3.1.将字符数组转成字符串。

构造函数:String(char[]);

String(char[],offset,count);将字符数组中的一部分转成字符串。offset:起始位。count:个数。
静态方法:static StringcopyValueOf(char[] data) 
         返回指定数组中表示该字符序列的 String。
static StringcopyValueOf(char[] data, int offset, int count) 
         返回指定数组中表示该字符序列的 String。
static StringvalueOf(char[] data) 
         返回 char 数组参数的字符串表示形式。
static StringvalueOf(char[] data, int offset, int count) 
         返回 char 数组参数的特定子数组的字符串表示形式。
3.2.将字符串转成字符数组。
char[] toCharArray() 
          将此字符串转换为一个新的字符数组。
3.3.将字节数组转成字符串。
String(byte[]);
String(byte[],offset,count);将字节数组中的一部分转成字符串。offset:起始位。count:个数。
3.4.将字符串转成字节数组。
byte[]getBytes() 
          使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。
byte[]getBytes(Charset charset) 
          使用给定的 charset 将此 String 编码到 byte 序列,并将结果存储到新的 byte 数组。
3.5.将基本数据类型转成字符串。
String valueOf(int);
String valueOf(double)
3+"";与String.valueOf(3);结果一样。
特殊:字符串和字节数组在转换过程中,是可以指定编码表的。

4.替换

Stringreplace(char oldChar, char newChar) 
返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的
Stringreplace(CharSequence target, CharSequence replacement) 
使用指定的字面值替换序列替换此字符串所有匹配字面值目标序列的子字符串
注:替换以后,原来的字符串并没有改变,而是生成了新的字符串。

5.切割

String[]split(String regex) 
          根据给定正则表达式的匹配拆分此字符串

6.子串,获取字符串中的一部分。

Stringsubstring(int beginIndex, int endIndex) 
          返回一个新字符串,它是此字符串的一个子字符串。包含geginIndex不包含endIndex。

7.转换,去除空格,比较。

7.1.将字符串转成大写或者小写。
StringtoUpperCase() 
          使用默认语言环境的规则将此 String 中的所有字符都转换为大写。
StringtoUpperCase() 
          使用默认语言环境的规则将此 String 中的所有字符都转换为大写。
7.2.将字符串两端的多个空格去除。
Stringtrim() 
          返回字符串的副本,忽略前导空白和尾部空白。
7.3.对两个字符串进行自然顺序的比较。
intcompareTo(String anotherString) 
          按字典顺序比较两个字符串。     
                 

StringBuffer

StringBuffer是字符串缓冲区,是一个容器。

1.长度是可变化的。
2.可以操作多个数据类型。
3.最终会通过toString方法变成字符串。

常见方法

CURD

C create    U update    R read    D delete

1.存储

StringBuffer append();
将指定数据作为参数添加到已有数据结尾处。
例:StringBuffer sb = new StringBuffer();
sb.append("abc").append(true);//append();返回的是原对象,可以连用若干个append();命令。
这时,sb的值为:abctrue。不同于String,StringBuffer中的数据是可以改变的。
StringBuffer insert(index,数据);可以将数据插入到指定index位置。

2.删除

StringBufferdelete(int start, int end);
移除此序列的子字符串中的字符,含头不含尾。
sb.delete(0,sb.length());//清空缓冲区。
StringBufferdeleteCharAt(int index);
移除此序列指定位置的 char。

3.获取

charcharAt(int index);
返回此序列中指定索引处的 char 值
intindexOf(String str);
返回第一次出现的指定子字符串在该字符串中的索引。
intlastIndexOf(String str);
返回最右边出现的指定子字符串在此字符串中的索引。
intlength();
返回长度(字符数)。
Stringsubstring(int start, int end);
返回一个新的 String,它包含此字符序列当前所包含的字符子序列

4.修改

StringBufferreplace(int start, int end, String str);
使用给定 String 中的字符替换此序列的子字符串中的字符
voidsetCharAt(int index, char ch);
将给定索引处的字符设置为 ch。

5.反转

StringBufferreverse();
将此字符序列用其反转形式取代。

6. void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin);

字符从此序列复制到目标字符数组 dst




StringBuilder

在jdk1.5后出现。一个可变的字符序列。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。

StringBuffer是线程同步的,安全的。StringBuilder是线程不同步,效率高,但多线程不安全。


基本数据类型对象包装类


byte---------Byte
short-------Short
int-----------Integer
long--------Long
boolean---Boolean
float--------Float
char-------Character

基本数据类型对象包装类的最常见作用:用于基本数据类型和字符串类型之间做转换。
基本数据类型转成字符串
基本数据类型+"";
基本数据类型.toString(基本数据类型);
字符串转成基本数据类型
静态:
XXX a=XXX.pareXXX(String);
例:long l = Long.pareLong(String);
注意:传入的数据类型要是对应的数据类型,如转成int类型要传入整数的字符串。
非静态:
XXX XXXValue() 
         以 XXX类型返回该 XXX 的值。
例:
Integer i = new Integer("123");
int num = i.intValue();
十进制转成其他进制
static String toBinaryString(int i) 
以二进制(基数 2)无符号整数形式返回一个整数参数的字符串表示形式。
static StringtoHexString(int i) 
以十六进制(基数 16)无符号整数形式返回一个整数参数的字符串表示形式。
static StringtoOctalString(int i) 
以八进制(基数 8)无符号整数形式返回一个整数参数的字符串表示形式。
其他进制转成十进制
static intparseInt(String s, int radix) 
使用第二个参数指定的基数,将字符串参数解析为有符号的整数。
 例:int x = Integer.parseInt("110",2);

JDK1.5版本以后出现的新特性。

Integer x = 4; //自动装箱。
相当于:Integer x = new Integer(4);
x = x + 2; //x+2:x进行自动拆箱,变成了int类型,和2进行加法运算,再将和进行装箱赋给x。
相当于x = x.intValue() + 2;
注:
Integer m = 128;
Integer n = 128;
m == n?-->false 
Integer a = 127;
Integer b = 127;
a == b?-->true
原因:新特性中,当数值在byte范围内时,如果该数值已经存在,则不会开辟新的空间。127在byte范围内,128在byte范围外。

---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------详细请查看:http://edu.csdn.net

原创粉丝点击