------- android培训、java培训、期待与您交流! ----------
1. String 类:
字符串是一个特殊的对象,字符串一旦初始化就不可以被改变。
如:String s1 = “abc” ;s1是一个类类型变量,”abc”一个对象。S1=”kk”,abc没有改变, s1原先指向abc,现在指向kk,s1的地址改变。
String s1 = “abc” ;String s2 = new String(“abc”);s1和s2有什么区别?
S1在内存中一个对象,s2在内存中有两个对象:new一个对象,abc一个对象。
System.out.println(s1.equals(s2)):String类复写了Object类中equals方法,该方法用于 判断字符串是否相同。
2. String类适用于描述字符串事物,那么它就提供了多个方法对字符串进行操作。
常见的操作有?
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在字符 串中出现的位置
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(str);
例子
class StringMethodDemo
{
public static void method_is()
{
String str = "ArrayDemo.java";
//判断文件名称是否是Array单词开头。
sop(str.startsWith("Array"));
//判断文件名称是否是.java的文件
sop(str.endsWith(".java"));
//判断文件中是否包含Demo
sop(str.contains("Demo"));
}
public static void method_get()
{
String str ="abcdef";
//长度
sop(str.length);
//根据索引获取字符
sop(str.charAt(4));//当访问到字符串中不存在的角标时会发生StringIndexOutofBoundsException。
//根据字符获取索引
sop(str.indexof('a'),3);//如果没有找到,返回-1
//反向索引一个字符出现位置。
sop(str.lastIndexof('a'));
}
public static void main(String[] args)
{
method_get();
method_is();
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
3.转换:
3.1讲字符数组转成字符串。
构造函数:String(char[])
String(char[],offset,count):将字符数组中的一部分转成字符串。
静态方法:
Static String copyValueof(char[]);
Static String copyValueof(char[] data, int offset. Int count)
3.2将字符串转成字符数组
Char[] toCharArray();
3.3将字节数组转成字符串
String (byte[])
String(byte[],offset,count):将字节数组中的一部分转成字符串。
3.4将字符串转成字节数组
byte[] getSytes():
3.5将基本数据类型转换成字符串:
Static String valueof(int)
Static String valueof(double)
//3+””; String.valueof(3);
特殊:字符串和字节数组在转换过程中,是可以指定编程码表的
例子:
public static void method_trans()
{
char[] arr = {'a','b','c','d','e','f'};
String s= new String(arr,1,3);//从arr数组第一个坐标打印3个字符
sop("s="+s);
String s1 = "zhisohfd";
char[] chs = s1.toCharArray();
for(int x=0;x
{
sop("ch"+chs[x]);
}
}
4. 替换:
String replace(oldchar ,newchar),
5. 切割:
String[] split(regex);//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)
8. StringBuffer是字符串缓冲区,是一个容器。
特点:长度是可变化的,可以字节操作多个数据类型,最总会通过toString方法变成字
符串。
1.存储
StringBuffer append():将指定数据作为参数添加到已有数据结尾处
StringBuffer insert(index,数据):可以将数据插入到指定index位置,即在原来字符串的index位置开始插入字符串
2.删除
StringBuffer delete(start ,end):删除缓冲区中的数据,包含start,不包括end,
StringBuffer delete(index):删除指定位置的字符
例子:清空缓冲区 sb.delete(0,sb.length());
3.获取
4.修改
StringBuffer replace(start ,end,string);
Void setCharAt(int index,char ch)
5.反转
StringBuffer reverse()
9. Jdk1.5版本之后出现了StringBuilder
StringBuffer是线程同步
StringBuilder是线程不同步,以后程序开发建议使用StringBuilder
10. 基本数据类型对象包装类:
类型 类
byte Byte
short Short
int Integer
char Character
。。。。。。。。。。。。。。。。。。。。。
基本数据类型对象包装类的最常见作用
就是用于基本数据类型和字符串类型之间做转换
基本数据类型转换成字符串
基本数据类型+””
基本数据类型.toString(基本数据类型值)
如:Integer.toString(34)//将34整数变成”34”
字符串转成基本数据类型
基本数据类型 a = ****.parse****(String)
int a = Integer.parseInt(“123”)
double b = Double.parseDouble(12.23)
十进制转换成其他进制
toBinaryString()
toHexString()
toOctalString()
其他进制转成十进制
parseInt(String,radix);
11. Jdk1.5之后新特性:
如:Integer x = 4;//自动装箱,4相当于new Integer(4)
x= x+3//进行自动拆箱,变成了int类型,和2进行加法运算,再将和进行装箱赋 //给x
Integer m =128;
Integer n =128;
Sop(“m==n”+(m==n));
Integer a=127;
Integer b =127;
Sop(“a==b”+(a==b));//结果为true,因为a和b指向了同一个Integer对象
//因为当数值在byte范围内时,对于新特性,如果该数值已经存 //在,则不会再开辟新的空间。
12. 学习心得体会
掌握字符串 的基本操作:增,删,改,查,
同时熟悉字符串通其它类型之间的转换。
熟悉jdk1.5之后的新特性:
Jdk1.5版本之后出现了StringBuilder
StringBuffer是线程同步
StringBuilder是线程不同步,以后程序开发建议使用StringBuilder
自动装箱和自动拆箱
Integer x = 4;//自动装箱,4相当于new Integer(4)
x= x+3//进行自动拆箱,变成了int类型,和2进行加法运算,再将和进行装 箱赋//给x