黑马程序员-基础-String类

  ------- android培训java培训、期待与您交流! ---------- 

1:String类:字符串(重点)
(1)多个字符组成的一个序列,叫字符串。
  生活中很多数据的描述都采用的是字符串的。而且我们还会对其进行操作。
  所以,java就提供了这样的一个类供我们使用。
(2)创建字符串对象
A:String():无参构造
**举例:
 String s = new String();
 s = "hello";
 sop(s);
B:String(byte[] bys):传一个字节数组作为参数 *****
**举例
 byte[] bys = {97,98,99,100,101};
 String s = new String(bys);
 sop(s);
C:String(byte[] bys,int index,int length):把字节数组的一部分转换成一个字符串 *****
**举例
 byte[] bys = {97,98,99,100,101};
 String s = new String(bys,1,2);
 sop(s);
D:String(char[] chs):传一个字符数组作为参数 *****
**举例
 char[] chs = {'a','b','c','d','e'};
 String s = new String(chs);
 sop(s);
E:String(char[] chs,int index,int length):把字符数组的一部分转换成一个字符串 *****
**举例
 char[] chs = {'a','b','c','d','e'};
 String s = new String(chs,1,2);
 sop(s);
F:String(String str):把一个字符串传递过来作为参数
 char[] chs = {'a','b','c','d','e'};
 String ss = new String(s);
 sop(ss);
G:直接把字符串常量赋值给字符串引用对象(最常用) *****
**举例
 String s = "hello";
 sop(s);
(3)面试题
A:请问String s = new String("hello");创建了几个对象。
 两个。一个"hello"字符串对象,在方法区的常量池;一个s对象,在栈内存。


B:请写出下面的结果
String s1 = new String("abc");
Strign s2 = new String("abc");
String s3 = "abc";
String s4 = "abc";


sop(s1==s2);  //false
sop(s1==s3);  //false
sop(s3==s4);  //true
C:字符串对象一旦被创建就不能被改变。
指的是字符串常量值不改变。
(4)字符串中各种功能的方法
A:判断
**** boolean equals(Object anObject):判断两个字符串的内容是否相同,复写了Object的方法
**** boolean equalsIgnoreCase(String anotherString):判断两个字符串的内容是否相同,
不区分大小写
**** boolean contains(String s):判断一个字符串中是否包含另一个字符串
注意:判断字符串是否包含特殊字符.直接表示为str.contains(".")
boolean endsWith(String suffix):测试此字符串是否以指定的后缀结束
boolean startsWith(String suffix):测试此字符串是否以指定的前缀开始
boolean isEmpty():测试字符串是否为空
B:获取
***** int length():返回此字符串的长度
***** char charAt(int index):返回指定索引处的 char值
***** int indexOf(int ch):返回指定字符在此字符串中第一次出现处的索引。 
int indexOf(int ch, int fromIndex):返回在此字符串中第一次出现指定字符处的索引,
  从指定的索引开始搜索。 
int indexOf(String str):返回指定子字符串在此字符串中第一次出现处的索引。 
int indexOf(String str, int fromIndex):返回指定子字符串在此字符串中第一次
出现处的索引,从指定的索引开始。 
*** int lastIndexOf(int ch):返回指定字符在此字符串中最后一次出现处的索引。 
int lastIndexOf(int ch, int fromIndex) 
返回指定字符在此字符串中最后一次出现处的索引,从指定的索引处开始进行反向搜索。 
int lastIndexOf(String str) 
返回指定子字符串在此字符串中最右边出现处的索引。 
int lastIndexOf(String str, int fromIndex) 
返回指定子字符串在此字符串中最后一次出现处的索引,从指定的索引开始反向搜索。 
***** String substring(int beginIndex) (注意:该方法substring的String是小写!!!)
返回一个新的字符串,它是此字符串的一个子字符串。 
String substring(int beginIndex, int endIndex) (注意该方法的String是小写!!!)
返回一个新字符串,它是此字符串的一个子字符串,包含头不包含尾。 
C:转换
***** byte[] getBytes():(很常用!)从字符串到字节数组的方法
void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) 
将字符从此字符串复制到目标字符数组。 
***** char[] toCharArray():(很常用!)从字符串到字符数组的方法
**** static String copyValueOf(char[] data) 
返回指定数组中表示该字符序列的 String。 
static String copyValueOf(char[] data, int offset, int count) 
返回指定数组中表示该字符序列的 String。 
***** static String valueOf(数据类型):把该数据类型的数据转换成字符串。
*** String toLowerCase():把字符串转换成小写
String toUpperCase():把字符串转换成大写
*** 字符串的连接
String concat(String str):将指定字符串连接到此字符串的结尾。
D:替换
String replace(char oldChar, char newChar):用新字符替换旧字符(替换所有)
String replace(String target, String replacement):用新的子串换旧串
E:分割
String[] split(String regex):根据指定的字符串把一个字符串分割成一个字符串数组
F:
String trim():去除字符串的前后空格
G:
int compareTo(String anotherString) 
按字典顺序比较两个字符串。 
int compareToIgnoreCase(String str) 
按字典顺序比较两个字符串,不考虑大小写。 
(5)练习
1:模拟登录,给三次机会,并提示还有几次.
默认的用户名和密码为admin。 区分大小写。
自己从键盘输入用户名和密码。


2:给定一个字符串统计,统计大写字母,小写字母,数字出现的个数.
***注意:不包括特殊字符
从键盘输入一个不包含特殊字符的字符串(只有26个字母和0-9组成)。


3:给定一个字符串,把它变成首字母大写,其他字母小写的字符串.
从键盘输入一个字符串,全部26个字母组成的。


4:子串在整串中出现的次数。
也就是说:获取一个字符串中,指定的字串在该字符串中出现的次数.
例如:
"nbasdnbafllgnbahjnbakqqqqlnba"  在这个字符串中,多有个nba.


5:对字符串中字符进行自然顺序排序。
"basckd"-->"abcdks"


先留做思考内容:
6:两个字符串的最大相同子串。
两个字符串的最大相同子串。
比如:
"sadabcdfghjkl"
werabcdtyu"


2:StringBuffer
(1)字符串的缓冲区,是一个容器。
(2)它和String的区别
它是缓冲区可变长度的。
(3)构造方法
StringBuffer() 构造一个其中不带字符的字符串缓冲区,初始容量为 16 个字符。
StringBuffer(int num) 构造一个不带字符,但具有指定初始容量的字符串缓冲区。
StringBuffer(String str) 构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。
(4)常用方法
A:增加数据
**append :添加各种类型的数据
**insert : 在容器指定位置插入各种类型的数据。
B:删除数据
**deleteCharAt : 删除指定位置的字符
**delete 还可以用于清空StringBuffer的缓冲区
C:替换
**replace
D:获取 
**charAt 
E:长度和容量
**length() 元素的个数
**capacity 元素的理论值
F:获取元素的位置
**indexOf
**lastIndexOf
G:截取
**substring(int start)
**substring(int start,int end)
H:反转
**reverse
(5)字符串和StringBuffer的转换
String-->StringBuffer通过构造:
如:StringBuffer sb = new StringBuffer(String str)
StringBuffer--String通过toString方法 
如:StringBuffer sb = new StringBuffer();
  sb.toString();


3:StringBuilder
和StringBuffer的功能是一样的,但是有区别:
StringBuffer(JDK1.0)是线程安全的。
StringBuilder(JDK1.5)不保证线程安全。


一般来说,我们写的程序都是单线程的,所以,用StringBuilder,效率高。


JDK版本的升级原则:
A:提高效率
B:提高安全性
C:简化书写


------- Windows Phone 7手机开发.Net培训、期待与您交流! -------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值