------- android培训、java培训、期待与您交流! ----------
1、String类。
字符串是一个特殊的对象,字符串最大的特点:一旦初始化就不可以被改变。(“abc”不会变,s1会变。)
String s1 = "abc"; //s1是一个类类型变量,“abc”是一个对象。
String s2 = new String("abc");
s1和s2有什么区别:
s1在内存中有一个对象,s2在内存中有两个对象。
s1==s2 的打印结果是false。是两个不同的对象。
s1.equals(s2)的打印结果是true,因为String类复写了Object类中的 equals方法,该方法用于判断字符串是否相同。
String s3 =“abc” s1==s3打印结果是true 因为s3不再开辟空间,字符串相同,指向了同一对象。
2、String常见操作。
1.获取。
1.1字符串中的包含的字符数,也就是字符串的长度。int length()获取长度。
1.2根据位置获取位置上某个字符。char charAt(int index)
当访问到字符串中不存在的角标时候会发生角标越界异常。
1.3根据字符获取该字符在字符串中的位置。
如果没有找到,返回-1
int indexOf(int ch)返回的是ch在字符串中第一次出现的位置。
int indexOF(int ch,int fromIndex)从fromIndex指定位置开始,获取ch在字符串中出现的位置。
int indexOf(int str)返回的是ch在字符串中第一次出现的位置。
int indexOF(int 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 startsWith(str);
2.5判断字符串内容是否相同。(复写了Object类中的euqals方法)。
boolean equals(str);
2.6判断内容是否相同,并忽略大小写。
boolean equalsIgnoreCase();
3.转换。
3.1将字符数组转成字符串。
构造函数:String(char [])
String(char[],offset,count)将字符数组的一部分转成字符串。
静态方法:
static String copyValueOf(char[]);
static String copyValueOf(char[],offset,count);
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);
如果要替换的字符不存在,返回的还是原串。
String s1=s.replace("java""world");可以接收字符串。
5切割。
String[] split(regex);
//String s = "zhangsan,lisi,wangwu";
String[] arr = s.split(",");
for(int x = 0;x<arr.length;x++)
{
sop(arr[x]);
}
6子串。获取字符串中的一部分。
String substring(begin);从指定位置开始到结尾。如果角标不存在,会出现角标越界异常。
String substring(begin,end);包含头,不包含尾。
7转换,去除空格,比较。
7.1将字符串转换成大写或者小写。
String toUpperCase();
String toLowerCase();
7.2将字符串两端的多个空格去除。
String trim();
7.3对两个字符串进行自认顺序的比较。
int compareTo(string);
String s1="acc"; 这里面可以写数字等等。
String s2="aaa";
sop(s1.compareTo(s2));返回2.c是99,a是97.相减得2.
如果参数字符串等于此字符串,则返回值0.如果此字符串按字典顺序小于字符串参数,返回小于0的值。大于,则返回大于0的值。
3、StringBuffer
是字符串缓冲区,是一个容器。
特点1:长度是可变化的。
特点2:可以操作多个数据类型。“abc” true 34
特点3:最终会通过toString方法变成字符串。
常见操作:
1.储存。
StringBuffer append();将指定数据作为参数添加到已有数据结尾处。
StringBuffer insert(index,数据)可以将数据插入到指定index位置。
2.删除。
StringBuffer delete(start,end);删除缓冲区中的数据,包含start,不包含end。
StringBuffer deleteCharAt(index);删除指定位置的字符。
清空缓冲区。sb.delete(0,sb.length( ) );
3.获取。
char charAt( int index)
int indexOf(String str)
int lastIndexOf(String str)
int.length()
String substring(int start,int end)
4.修改。
StringBuffer replace(start,end,string);
void setCharAt(int index,char ch);
5.反转。
StringBuffer reverse();
6.将缓冲区中指定数据存储到指定字符数组中。
void getChars(int srcBegin,int srcEnd,char[] dst,int dstBegin)
开始位,结束位,要存的数组,目的的开始位
StringBuffer sb = new StringBuffer("abcdef");
char [] chs = new char[4];定义一个4长度的数组
sb.getChars(1,4,chs,1);
for(int x = 0;x<chs.length;x++)
{
sop("chs["+x+"]="+chs[x]+";");
}
4、StringBuilder
1.5之后才出现。
StringBuffer是线程同步。
StringBuilder是线程不同步。
将StringBuilder的实例用于多个线程是不安全的。如果需要这样的同步,建议使用StringBuffer。
以后开发建议使用 StringBuilder
5、升级三个因素:
1.提高效率
2.简化书写
3.提高安全性
6、基本数据类型对象包装类。
大写就是类,小写就是类型。关键字。左边是基本数据类型,右边是引用数据类型。(类)
byte Byte
short Short
Int Integer
long Long
boolean Boolean
float Float
double Double
char Character
基本数据类型对象包装类的最常见作用:
就是用于基本数据类型和字符串类型之间做转换。
1.基本数据类型转成字符串
⑴基本数据类型+“”
⑵基本数据类型.toString(基本数据类型值);
如:Integeer。toString(34);将34整数变成字符串“34”
2.字符串转成基本数据类型。
xxx a = Xxx.parseXxx(String);
int a = Integer.parseInt("123");
double b = Double.parseDouble("12.23");
long x =Long.parseLong("123");
boolean b = Boolean.parseBoolean("true");
【注】int num = Integer.parseInt("a123");数字格式异常
7、十进制转成其他进制。
toBinaryString();
toHexString();
toOctalString();
其他进制转成十进制。
parseInt(string s,int radix);
int x = Integer.parseInt("3C",16);
int x= Integer.parseInt("110",10);
8、Integer x = new Integer(4);
等于Integer x = 4 //1.5的新特性:自动装箱。
x = x + 2; //x进行自动拆箱,变成int类型,和2进行加法运算。再将和进行装箱赋给x。
9、Integer m = 128;
Integer n = 128;
sop(m==n); 结果为false。因为是两个对象。
Integer a = 127;
Integer b = 127; 结果为true,因为a和b指向了同一个Integer对象。当数值在byte范围内容, 对于新特性,如果数值已经存在。不会再开辟新的空间。
sop(a==b);