黑马程序员 String类
2015-06-14 14:34
447 查看
黑马程序员 String类
------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------
1.概述:String类代表字符串。Java程序中的所有字符串字面值(如”abc”)都作为此类的实例实现。
2.创建String类对象方式:
(1)String s=new String(); //不常用
(2)String s1=“”; /*字符串是特殊的对象;字符串最大的特点:一旦被初始化就不可以被改变*/
(3)String s2=new String(“abc”); String s1=“abc”;
s1.equals(s2); /*答案是true。因为String类复写了Object类中的equals方法,该方法用于判断字符串是否相同。区别:s1在内存中有一个对象;s2在内存中有两个对象*/
3.String类提供了多个方法对字符串进行操作,那么常见的方法有 :
(1)获取。
a.字符串中的包含的字符数,也就是字符串的长度。
int length();获取长度。
b.根据位置获取位置上某个字符。
char charAt(int index);
c.根据字符获取该字符在字符串中位置。
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)判断。
a.字符串中是否包含某一个子串。
boolean contains(str) //只进行判断
特殊之处:indexOf(str):可以索引str第一次出现的位置,如果返回-1,表示该str不在字符串中存在。If(str.indexOf(“aa”)!=-1)
而且该方法即可以判断,也可以获取出现的位置。
b.字符串中是否有内容。
boolean isEmpty():原理就是判断长度是否为0。
c.字符串是否是以指定的内容开头。
boolean startsWith(str);
d.字符串是否是以指定内容结尾。
boolean endsWith(str);
e.判断字符串内容是否相同,复写了object类中的equale方法。
Boolean equals(str);
f.判断内容是否相同,并忽略大小写。
Boolean equalsIgnoreCase();
(3)转换
a.将字符数组转成字符串。
构造函数:
String(char[]);
String(char[],offset,count);将字符数组中的一部分转成字符串。
静态方法:static String copyValueOf(char[]);
static String copyValueOf(char[] data,int offset,int count);
static String valueOf(char[]);
b.将字符串转成字符数组。
char[] toCharArray();
c.将字节数组转成字符串。
String(byte[]);
String(byte[],offset,count);将字节数组中的一部分转成字符串。
d.将字符串转成字节数组。
byte[] getBytes();
e.将基本数据类型转成字符串。
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)转换,去除空格,比较
a.将字符串转成大写或者小写
String toUpperCase();
String toLowerCase();
b.将字符串两端的多个空格去除。
String trim();
c.对两个字符串进行自然顺序的比较。
int compareTo(string);
练习题
StringBuffer
1.StringBuffer是字符串缓冲区,是一个容器:它的长度是可变化的;可以字节操作多个数据类型。
数组也是一个容器,但它的长度不可以改变。
2.功能
(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 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 getChar(int srcBegin,int srcEnd,char[] dst,int dstBegin)
3.JDK1.5版本之后出现了StringBuilder。
StringBuilder是线程不同步的,提高效率。(建议使用)
StringBuffer是线程同步的,提高安全性。
4.基本数据类型对象包装类
(1) 类 基本数据类型
Byte byte
Short short
Integer int
Long long
Boolean boolean
Float float
Double double
Character char
(2)基本数据类型对象包类的最常见作用,就是用于基本数据类型和字符串类型之间的转换。
a.基本数据类型转成字符串:
基本数据类型.toString(基本数据类型值)
如:Integer.toString(34);//将34整数变成”34”
b.字符串转成基本数据类型。
xxx a=Xxx.parseXxx(String);
int a=Integer.parseInt(“123”);
double b=Double.parseDouble(“12.23”);
boolean b=Boolean.parseBoolean(“true”);
c.十进制转成其他进制:
toBinaryString();
toHexString();
toOctalString();
d.其他进制转成十进制。
parseInt(string,radix)
5.JDK1.5版本以后出现的新特性。
Integer x=new integer(4);
Integer x=4; //自动装箱,等于new Integer(4)
x=x+2; //进行自动拆箱(x.intValue),变成int类型和2进行加法运算,再将和进行装箱赋给x
Integer m=128;
Integer n=128;
sop(m==n);//false,对象不同
Integer a=127;
Integer b=127;
sop(a==b);//true,因为当数值在byte范围内[-128,127],对于新特性,如果该数值已经存在,则不会在开辟新的空间,所以它们指向了同一个对象。
------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------
1.概述:String类代表字符串。Java程序中的所有字符串字面值(如”abc”)都作为此类的实例实现。
2.创建String类对象方式:
(1)String s=new String(); //不常用
(2)String s1=“”; /*字符串是特殊的对象;字符串最大的特点:一旦被初始化就不可以被改变*/
(3)String s2=new String(“abc”); String s1=“abc”;
s1.equals(s2); /*答案是true。因为String类复写了Object类中的equals方法,该方法用于判断字符串是否相同。区别:s1在内存中有一个对象;s2在内存中有两个对象*/
3.String类提供了多个方法对字符串进行操作,那么常见的方法有 :
(1)获取。
a.字符串中的包含的字符数,也就是字符串的长度。
int length();获取长度。
b.根据位置获取位置上某个字符。
char charAt(int index);
c.根据字符获取该字符在字符串中位置。
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):反向索引
//String类中常见的获取方法 class StringGetDemo { public static void method_get() { String str="abcdabefg"; sop(str.length()); //获取字符串的长度 sop(str.charAt(1)); //获取1位置上某个字符 sop(str.indexOf('a'));//获取'a'字符在字符串中位置 sop(str.indexOf('a',2));//从指定2位置开始,获取'a'在字符串中出现的位置 } public static void sop(Object obj) { System.out.println(obj); } public static void main(String[] args) { method_get(); } }
(2)判断。
a.字符串中是否包含某一个子串。
boolean contains(str) //只进行判断
特殊之处:indexOf(str):可以索引str第一次出现的位置,如果返回-1,表示该str不在字符串中存在。If(str.indexOf(“aa”)!=-1)
而且该方法即可以判断,也可以获取出现的位置。
b.字符串中是否有内容。
boolean isEmpty():原理就是判断长度是否为0。
c.字符串是否是以指定的内容开头。
boolean startsWith(str);
d.字符串是否是以指定内容结尾。
boolean endsWith(str);
e.判断字符串内容是否相同,复写了object类中的equale方法。
Boolean equals(str);
f.判断内容是否相同,并忽略大小写。
Boolean equalsIgnoreCase();
<span style="font-size:14px;">//String类中的常见方法—判断 class StringIfDemo { public static void method_get() { String str="ArrayDemo.java";//创建字符串对象 sop(str.isEmpty()); //字符串中是否有内容 sop(str.startsWith("Array")); //字符串是否是以指定的内容开头 sop(str.endsWith(".java"));//字符串是否是以指定内容结尾 sop(str.contains("Demo"));//从指定2位置开始,获取'a'在字符串中出现的位置 sop(str.equals("Array"));//判断字符串内容是否相同 sop(str.equalsIgnoreCase("arraydemo.java"));//判断内容是否相同,并忽略大小写 } public static void sop(Object obj) { System.out.println(obj); } public static void main(String[] args) { method_get(); } }</span>
(3)转换
a.将字符数组转成字符串。
构造函数:
String(char[]);
String(char[],offset,count);将字符数组中的一部分转成字符串。
静态方法:static String copyValueOf(char[]);
static String copyValueOf(char[] data,int offset,int count);
static String valueOf(char[]);
b.将字符串转成字符数组。
char[] toCharArray();
c.将字节数组转成字符串。
String(byte[]);
String(byte[],offset,count);将字节数组中的一部分转成字符串。
d.将字符串转成字节数组。
byte[] getBytes();
e.将基本数据类型转成字符串。
static String valueOf(int);
static String valueOf(double)
特殊:字符串和字节数组在转换过程中,是可以指定编码表的。
//String类中的常见方法—转换 class StringTransDemo { public static void method_trans() { char[] arr={'a','b','c','d','e','f'};//创建字符数组 String s=new String(arr); //将字符数组转成字符串 String s1=new String(arr,1,3);//将字符数组中的一部分转成字符串 sop("s="+s); sop("s1="+s1); String str="hello_wold";//创建字符串对象 char[] ch=str.toCharArray();//将字符串转成字符数组 for(int x=0;x<ch.length;x++) { sop("ch"+x+"="+ch[x]); } } public static void sop(Object obj) { System.out.println(obj); } public static void main(String[] args) { method_trans(); } }
(4)替换
String replace(oldchar,newchar);
(5)切割
String[] split(regex)
(6)子串,获取字符串中的一部分。
String substring(begin);
String substring(begin,end);//包头不包尾
//String类中常见方法—替换和切割 class StringMethodDemo { public static void method_sub() { String s1="Hello java"; sop(s1); sop(s1.replace("a","n"));//替换字符 sop(s1.substring(0));//获取从脚标为0的到最后一位的字符串 sop(s1.substring(0,4));//获取从0脚标为0到脚标为3的字符串, String s2="zhangsan,lisi,wangwu"; String[] arr=s2.split(",");//以“,”为切割标志对字符串进行切割 for(int x=0;x<arr.length;x++) { sop(arr[x]); } } public static void sop(Object obj) { System.out.println(obj); } public static void main(String[] args) { method_sub(); } }
(7)转换,去除空格,比较
a.将字符串转成大写或者小写
String toUpperCase();
String toLowerCase();
b.将字符串两端的多个空格去除。
String trim();
c.对两个字符串进行自然顺序的比较。
int compareTo(string);
//String类中常见方法—转换,比较和去空格 class StringCompareDemo { public static void method_compare() { String s1=" Hello java "; sop(s1.toUpperCase());//将字符串转成大写 sop(s1.toLowerCase());//将字符串转成小写 sop(s1.trim());//去除字符串两端的多个空格 String s2="acc"; String s3="aac"; sop(s2.compareTo(s3));//对两个字符串进行自然顺序的比较. } public static void sop(Object obj) { System.out.println(obj); } public static void main(String[] args) { method_compare(); } }
练习题
//练习一:去除字符串两端空格 class StringTrimDemo { public static String myTrim(String str) { int start=0; int end=str.length()-1; while(start<=end && str.charAt(start)==' ') start++; while(start<=end && str.charAt(en b38a d)==' ') end--; return str.substring(start,end+1);//获取某部分的字符串 } public static void sop(String str) { System.out.println(str); } public static void main(String[] args) { String s=" ab cd "; sop("s="+s); s=myTrim(s); sop("s="+s); } }
//练习二:将字符串反转 class StringReverseDemo { public static String reverseString(String s) { char[] chs=s.toCharArray();//将字符串转成数组 reverse(chs);//反转数组 return new String(chs);//将数组转成字符串 } public static void reverse(char[] arr) { for(int start=0,end=arr.length-1;start<end;start++,end--) swap(arr,start,end); } public static void swap(char[] arr,int x,int y) { char temp=arr[x]; arr[x]=arr[y]; arr[y]=temp; } public static void sop(String str) { System.out.println(str); } public static void main(String[] args) { String s=" ab cd "; sop('('+s+')'); sop('('+reverseString(s)+')'); } }
//练习题三:获取一个字符串在另一个字符串中出现的次数 class GetCount { public static int getSubCount(String str,String key) { int index=0; int count=0; while((index=str.indexOf(key,index))!=-1) { sop("index="+index); index=index+key.length(); count++; } return count; } public static void sop(String str) { System.out.println(str); } public static void main(String[] args) { String str="abkkcdkkefkkhikk"; sop("count="+getSubCount(str,"kk")); } }
StringBuffer
1.StringBuffer是字符串缓冲区,是一个容器:它的长度是可变化的;可以字节操作多个数据类型。
数组也是一个容器,但它的长度不可以改变。
2.功能
(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 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 getChar(int srcBegin,int srcEnd,char[] dst,int dstBegin)
3.JDK1.5版本之后出现了StringBuilder。
StringBuilder是线程不同步的,提高效率。(建议使用)
StringBuffer是线程同步的,提高安全性。
4.基本数据类型对象包装类
(1) 类 基本数据类型
Byte byte
Short short
Integer int
Long long
Boolean boolean
Float float
Double double
Character char
(2)基本数据类型对象包类的最常见作用,就是用于基本数据类型和字符串类型之间的转换。
a.基本数据类型转成字符串:
基本数据类型.toString(基本数据类型值)
如:Integer.toString(34);//将34整数变成”34”
b.字符串转成基本数据类型。
xxx a=Xxx.parseXxx(String);
int a=Integer.parseInt(“123”);
double b=Double.parseDouble(“12.23”);
boolean b=Boolean.parseBoolean(“true”);
c.十进制转成其他进制:
toBinaryString();
toHexString();
toOctalString();
d.其他进制转成十进制。
parseInt(string,radix)
5.JDK1.5版本以后出现的新特性。
Integer x=new integer(4);
Integer x=4; //自动装箱,等于new Integer(4)
x=x+2; //进行自动拆箱(x.intValue),变成int类型和2进行加法运算,再将和进行装箱赋给x
Integer m=128;
Integer n=128;
sop(m==n);//false,对象不同
Integer a=127;
Integer b=127;
sop(a==b);//true,因为当数值在byte范围内[-128,127],对于新特性,如果该数值已经存在,则不会在开辟新的空间,所以它们指向了同一个对象。
相关文章推荐
- 面试题总结
- 《程序员的自我修养》读书笔记3
- 程序员,你有自己的博客吗?现在有了。
- AJAX面试题
- 黑马程序员---Java基础-多线程的实现
- 黑马程序员——JAVA集合
- 黑马程序员——JAVA集合
- 求职的途径
- 有深度,面试有用的题
- 程序员开心一下
- 九章算法面试题76 搜索二维矩阵
- 九章算法面试题75 二叉树的最小深度
- 九章算法面试题74 中位数
- 九章算法面试题73 翻转链表II
- 黑马程序员——Java语法基础(二)
- 面试时有哪些话是千万不能说的?
- 如何一周工作80-100小时还能拥有自己的生活?
- 黑马程序员——基础知识总结_static
- 作为一个程序开发者在职场中必须注意的7件事
- 黑马程序员------多线程创建的3种方式