------- android培训、java培训、期待与您交流! ----------
String概述
String类在java.Lang包中。String类不可以有子类。
String s1=“abc”;//s1是一个类类型变量;“abc”是一个对象。
字符串最大特点:一旦被初始化就不能被改变(比如上面“abc”这个对象就不能变了,s1是指向这个对象的地址值,s1 可以变)
当String s1=“abc”;//只有一个“abc”对象。
String s2=new String(”abc”);// new String()一个对象,”abc”另一个对象。共两个对象。
String s3=“abc”;
s1==s2;结果为false,s1和s2指向地址值不同。
s1.equals(s2);结果为true,因为String类覆写了Object中的equals方法,比较的是字符对象内容。(Object中的equals方法比较的是地址值)。
s1==s3;结果为true,因为“abc”在内存中了,而s3在初始化时发现在常量池中已经有“abc”了,他就不会再开辟空间了,此时s1和s2指向同一个对象。
常见功能-获取和判断
1,获取。
1.1 字符串中的包含的字符数,也就是字符串的长度。
int length():获取长度。
1.2 根据位置获取位置上某个字符。
char charAt(int index):
1.3 根据字符获取该字符在字符串中位置。
int indexOf(int ch):返回的是ch在字符串中第一次出现的位置。
int indexOf(int ch, int fromIndex) :从fromIndex指定位置开始,获取ch在字符串中出现的位置。
int indexOf(String str):返回的是str在字符串中第一次出现的位置。
int indexOf(String str, int fromIndex) :从fromIndex指定位置开始,获取str在字符串中出现的位置。
int lastIndexOf(int ch) :反向索引(右→左)
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 判断字符串内容是否相同。复写了Object类中的equals方法。
boolean equals(str);
2.6 判断内容是否相同,并忽略大小写。
boolean equalsIgnoreCase();
3,转换。
3.1 将字符数组转成字符串。
构造函数:String(char[])
String(char[],offset,count):将字符数组中的一部分转成字符串。
静态方法:
static String copyValueOf(char[]);
static String copyValueOf(char[] data, int offset, int count)
static String valueOf(char[]):
3.2 将字符串转成字符数组。**
char[] toCharArray():
3.3 将字节数组转成字符串。
String(byte[])
String(byte[],offset,count):将字节数组中的一部分转成字符串。
3.4 将字符串转成字节数组。
byte[] getBytes():
3.5 将基本数据类型转成字符串。
static String valueOf(int)
static String valueOf(double)
//3+"";//String.valueOf(3);
特殊:字符串和字节数组在转换过程中,是可以指定编码表的。
4,替换
String replace(oldchar,newchar);
5,切割
String[] split(regex);
6,子串。获取字符串中的一部分。
String substring(begin);
String substring(begin,end);
7,转换,去除空格,比较。
7.1 将字符串转成大写或则小写。
String toUpperCase();
String toLowerCase();
7.2 将字符串两端的多个空格去除。
String trim();
7.3 对两个字符串进行自然顺序的比较。
int compareTo(string);
StringBuffer添加
StringBuffer是字符串缓冲区,是一个容器,而长度可以变化,而直接操作多个数据类型。最终会通过toString方法变为字符串——
StringBuffer su=new StringBuffer();
su.append(“abc”);
Sting s=su.toString();。
1、 存储:
StringBuffer append():将指定数据作为参数添加到已有数据结尾。
StringBuffer inster(index,数据):可以将数据插入指定index位置。
2、 删除:
StringBuffer delete(start,end)《包头不包尾》:删除缓冲区数据。
StringBuffer deleteCharAt(index):删除指定位置的字符。
sb.delete(0,sb.length());:清空缓冲区。
3、 获取:
char charAt(int indext);通过角标获得字符
int indexOf(String str);通过字符串获得这个缓冲区中第一个字符串所在的角标
int lastIndexOf(String str); 通过字符串有右到左索引,获得这个缓冲区中第一个字符串所在的角标
int length();获得缓冲区长度。
String substring(int start,int end);获得这个缓冲区的字串。
4、 修改:
StringBuffer replace(int start,int end,Sting st)
void setCharAt(int index,char ch)
5、 反转:
StringBuffer reverse();
6、 将缓冲区中指定数据存储到指定字符数组中。
void getChars(int srcBegin,int srcEnd,char[] dsc,int dstBegin):
把srcBegin为字符串缓冲区的开始。
把srcEnd为字符串缓冲区的结尾。
dsc[]为要把字符串缓冲区从开始到结尾的字符要放进去的目标字符数组。
dstBegin为目标数组存放字符串时的开始角标位置。
StringBuilder
JDK1.5版本后出现StringBuilder。
StringBuffer是可以线程同步 -->多线程用方便。
StringBuilder是线程不同步。可以自己写同步
一般开发建议用StringBuilder。
JDK升级三要素:
1、 提高效率。
2、 简化书写。
3、 提高安全性。
基本数据类型对象包装类
基本数据类型 | 应用数据类型(包装类、对象) |
byte | Byte |
short | Short |
Int | Integer |
long | Long |
boolean | Boolean |
float | Float |
double | Double |
char | Character |
例:Integer.MAX_VALUE:int 类型最大值。
基本数据类型对象包装类的最常见作用就是用于基本数据类型和字符串类型之间做转换。
格式:
1、 基本数据类型转成字符串。
<1>、基本数据类型+““;
<2>、基本数据类型。toString(基本数据类型值);
例如:Integer.toString(34);//将34变成“34“。
2、 字符串转换成基本数据类型。
static int parseInt(String s):其中s必须是数字格式字符串。否则出现异常。
格式:xxx a=Xxx.parseXxx(String s);
Boolean b=Boolean.parseBoolean(“true”);
Integer i=new Integer(“123“);
int num=i.intValue();
十进制转换其他进制:
toBinaryString();//转二进制
toHexString();//转十六进制
toOctalString();//转八进制
其他进制转换成十进制:
static parseInt(String s, int radix)
例如:int x=new Integer(“123“8);把123转换成八进制表现形式。
基本数据类型对象包装类新特性
Integer中的equals()方法覆写了Object中的equals()方法,他比较的是数值是否相同。
Integer x=new Integer(“123“);
Integer y=new Integer(123);
当x==y时结果false,因为他们是指向的两个对象。
x.equals(y)时为true。
JDK1.5版本以后:
Integer x=new Integer(4);
可以写成Integer x=4;//自动装箱。new Integer(4)
x = x/* x.intValue() */ + 2;//x+2:x 进行自动拆箱。变成成了int类型。和2进行加法运算。
//再将和进行装箱赋给x。
当x=null时,x=x+2;会出现运行时异常,所以在x=x+2;之前要判断。
Integer m=128;
Integer n=128;
m==n;时结果为false。
而:Integer a=128;
Integer b=128;
a==b;时结果为true。
因为a和b指向同一个Integer对象。原因当数值在byte范围内时,对于新特性:如果该数值已经存在,则不会再开辟新的空间。
------- android培训、 java培训、期待与您交流! ----------详细请查看: http://edu.csdn.net