黑马程序员-Java学习日志之:String
----------------------<a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IO开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------
String类是java类库中最常用的类。Java中String类不属于基本数据类型;是符合数据类型,String是java中的类,每个字符串都是实例化的字符串对象。在java语言中,对象的默认值是null,所以String的默认值也是null。但是String类又是一种特殊的对象,有其他对象没有的一些特性。
Java提供了两个类:String和StringBuffer,这两种类可以存储和操作字符串,即包含多个字符的字符数据,String和StringBuffer分别用于处理不变字符串和可变字符串。
String类的声明
Public final class String extends Object implements Serializable,Comparable<String>,CharSequence
String类声明为final类,即说明String类不可以有子类,继承了根类Object类,即继承了父类中的所有属性及方法;实现了3个接口:分别为Serializable接口、Comparable接口、CharSequence接口。
Comparable<String>接口强行对实现它的每个类的对象进行整体排序。此排序被称为该类的自然排序,java类的compareTo方法被称为他的自然比较方法,实现Comparable接口的对象列表和数组可以通过Collection.sort和Array.sort进行自动排序;实现Comparable接口的对象可以用作 有序映射表中的键或有续集和中的元素,无需制定比较器。
String对象的创建
String s1 = "abc";
String s2 = new String("abc");
String s3 = "abc";
s1是一个类类型变量,"abc"是一个对象
s1与s2的区别:s1在内存中有一个对象,s2在内存中有两个对象。
字符串的特点:一旦被初始化就不可以被改变。
s1 == s2; false 比较的是两个对象
s1.equals(s2);true String类复写Object类的equals方法,
该方法用于判断字符串是否相同。
s1 == s3;true
字符串基本操作
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字符串中是否有内容
boollean isEmpty();原理就是判断长度是否为0.
2.3字符串中是否是以指定内容开头。
boolean startsWith(str);
2.4 字符串中是否是以指定内容结尾。
boolean endWith(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);
特殊:字符串和字节数组在转换过程中,是可以指定编码表的。
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也是一个容器。
特点:
1 长度是可以变化的。
2 可以操作多个数据类型
3 最终会通过toString方法变成字符串。
1,存储
StringBuffer append();将指定数据作为参数添加到已有数据结尾处。
StringBuffer insert(index,数据);可以将数据插入到指定index位 置。
2,删除
StringBuffer delete(start,end);删除缓冲区中的数据,半酣start 不包含end。
StringBuffer deleteCharAt(index);删除指定位置的字符。
3,获取
char charAt(int index);获取字符串
int indexOf(String str);根据字符串获取位置
int length();获取字符串长度
String subString(int start,int end);
4,修改 替换
StringBuffer replace(start,end,string);
sb.replace(1,4,"hfjk");
void setCharAt(int index,char ch);
sb.setCharAt(2,'j');
5, 反转
StringBuffer reverse();
6,
将缓冲区中指定数据存储到指定字符数组中。
void getChars(int srcbegin,int srcEnd,char[] dst,int
dstBegin);
将StringBuffer中从srcbegin到srcEnd,存储到数组dst中从srcEnd开始
存。
StringBuffer是线程同步。
StringBuilding是线程不同步。
六、基本数据类型数据包装类
byte Byte
short short
int integer
long Long
boolean Boolean
float Float
double Double
char Character
基本数据类型对象包装类的最常见作用。
就是用于基本数据类型和字符串类型之间的转换。
基本数据类型转成字符串
基本数据类型.toString(基本数据类型值);
如:Integer.toString(21);
字符串转成基本数据类型。
静态:
xxx a = Xxx.ParseXxx(String);
int a = Integer.ParseInt("123");
double b = Double.ParseDouble("78.33");
boolean b = Boolean.ParseBoolean("true");
非静态:
Integer i = new Integer("123");
int num = i.intValue();
十进制转成其他进制。
Integer.toBinaryString();
Integer.toOctalString();
他进制转成十进制。
Integer.ParseInt(string,radix);
----------------------<a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------
----------------------<a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IO开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------
String类是java类库中最常用的类。Java中String类不属于基本数据类型;是符合数据类型,String是java中的类,每个字符串都是实例化的字符串对象。在java语言中,对象的默认值是null,所以String的默认值也是null。但是String类又是一种特殊的对象,有其他对象没有的一些特性。
Java提供了两个类:String和StringBuffer,这两种类可以存储和操作字符串,即包含多个字符的字符数据,String和StringBuffer分别用于处理不变字符串和可变字符串。
String类的声明
Public final class String extends Object implements Serializable,Comparable<String>,CharSequence
String类声明为final类,即说明String类不可以有子类,继承了根类Object类,即继承了父类中的所有属性及方法;实现了3个接口:分别为Serializable接口、Comparable接口、CharSequence接口。
Comparable<String>接口强行对实现它的每个类的对象进行整体排序。此排序被称为该类的自然排序,java类的compareTo方法被称为他的自然比较方法,实现Comparable接口的对象列表和数组可以通过Collection.sort和Array.sort进行自动排序;实现Comparable接口的对象可以用作 有序映射表中的键或有续集和中的元素,无需制定比较器。
String对象的创建
String s1 = "abc";
String s2 = new String("abc");
String s3 = "abc";
s1是一个类类型变量,"abc"是一个对象
s1与s2的区别:s1在内存中有一个对象,s2在内存中有两个对象。
字符串的特点:一旦被初始化就不可以被改变。
s1 == s2; false 比较的是两个对象
s1.equals(s2);true String类复写Object类的equals方法,
该方法用于判断字符串是否相同。
s1 == s3;true
字符串基本操作
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字符串中是否有内容
boollean isEmpty();原理就是判断长度是否为0.
2.3字符串中是否是以指定内容开头。
boolean startsWith(str);
2.4 字符串中是否是以指定内容结尾。
boolean endWith(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);
特殊:字符串和字节数组在转换过程中,是可以指定编码表的。
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也是一个容器。
特点:
1 长度是可以变化的。
2 可以操作多个数据类型
3 最终会通过toString方法变成字符串。
1,存储
StringBuffer append();将指定数据作为参数添加到已有数据结尾处。
StringBuffer insert(index,数据);可以将数据插入到指定index位 置。
2,删除
StringBuffer delete(start,end);删除缓冲区中的数据,半酣start 不包含end。
StringBuffer deleteCharAt(index);删除指定位置的字符。
3,获取
char charAt(int index);获取字符串
int indexOf(String str);根据字符串获取位置
int length();获取字符串长度
String subString(int start,int end);
4,修改 替换
StringBuffer replace(start,end,string);
sb.replace(1,4,"hfjk");
void setCharAt(int index,char ch);
sb.setCharAt(2,'j');
5, 反转
StringBuffer reverse();
6,
将缓冲区中指定数据存储到指定字符数组中。
void getChars(int srcbegin,int srcEnd,char[] dst,int
dstBegin);
将StringBuffer中从srcbegin到srcEnd,存储到数组dst中从srcEnd开始
存。
StringBuffer是线程同步。
StringBuilding是线程不同步。
六、基本数据类型数据包装类
byte Byte
short short
int integer
long Long
boolean Boolean
float Float
double Double
char Character
基本数据类型对象包装类的最常见作用。
就是用于基本数据类型和字符串类型之间的转换。
基本数据类型转成字符串
基本数据类型.toString(基本数据类型值);
如:Integer.toString(21);
字符串转成基本数据类型。
静态:
xxx a = Xxx.ParseXxx(String);
int a = Integer.ParseInt("123");
double b = Double.ParseDouble("78.33");
boolean b = Boolean.ParseBoolean("true");
非静态:
Integer i = new Integer("123");
int num = i.intValue();
十进制转成其他进制。
Integer.toBinaryString();
Integer.toOctalString();
他进制转成十进制。
Integer.ParseInt(string,radix);
----------------------<a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------