黑马程序员--String类--
2014-06-14 16:08
218 查看
------- <a target="blank">android培训</a>、<a target="blank">java培训</a>、期待与您交流! ----------
String类:
由多个字符组成的一串数据。
底层是一个字符数组。
构造方法:
A:String();//空字符串构造方法
B:String(byte[] bys) ;//把一个字节数组转换成字符串
C:String(byte[] bys,int index,int count);//把一个字节数组的一部分转成字符串。count:表示计数,个数的意思。
D:String(char[] chs);//把一个字符数组转成字符串。
E:String(char[] chs,int index,int count);//把一个字符数组的一部分转成字符串。
F:String(String str);//有参构造方法
G:String s = "hello";//给一个字符串赋值
(3)成员方法:
A:判断功能
boolean equals(Object obj);//比较字符串的内容是否相同
boolean equalsIgnoreCase(String str);//比较字符串的内容是否相同,忽略大小写 boolean contains(String str);//字符串对象中是否包含给定的字符串。
boolean startsWith(String str);//是否以指定的字符串开头。
boolean endsWith(String str);//是否以指定的字符串结束。
boolean isEmpty()//是否为空。""还是null。
B:获取功能
int length();// 返回字符串的字符个数。也就是长度。
char charAt(int index);// 返回指定索引处的字符。
int indexOf(int ch);//返回指定字符在字符串中的第一次出现的索引。
int indexOf(String str);//返回指定字符串在字符串中的第一次出现的索引。
int indexOf(int ch,int formIndex);// 返回从指定位置开始的指定字符在字符串中的第一次出现的索引。
int indexOf(String str,int formIndex);//返回从指定位置开始的指定字符串在字符串中的第一次出现的索引。
String substring(int start);//截取字符串。从start开始到末尾。
String substring(int start,int end);// 截取字符串。从start到end。(包左不包右。)
C:转换功能
byte[] getBytes();//把字符串转换成字节数组。
char[] toCharArray();//把字符串转换成字符数组。
static String copyValueOf(char[] chs);//把字符数组转换成字符串。
static String valueOf(char[] chs);//把字符数组转换成字符串。
static String valueOf(int i);// 把一个int类型的数据转换成字符串。
String toLowerCase();//把字符串转成小写
String toUpper();//把字符串转成大写
String concat(String str);//字符串的拼接。
D:其他功能
a:替换功能
String replace(char old,char nrw);//用给定的new字符把字符串中的old字符替换。
String replace(String old,String new);//用给定的new字符串把字符串中的old字符串替换。
b:去除前后空格
String trim();//去除字符串前后的空格。
c:按照字典顺序比较
int compareTo(String str);//按字典顺序比较两个字符串。
案例:
A:模拟用户登录
分析:
a:有已知的用户名和密码。
String username = "wangzhiyong";
String password = "wangzhiyong";
b:键盘录入用户名和密码。
用Scanner实现。
c:比较用if语句实现。
d:给三次机会,如果三次不成功。则吞卡。(退出)
代码实现:
public class StringTest {
public static void main(String[] args) {
// 已知的用户名和密码。
String username = "wangzhiyong";
String password = "wangzhiyong";
for (int x = 0; x < 3; x++) {
// x=0,1,2
// 键盘录入用户名和密码。
Scanner sc = new Scanner(System.in);
System.out.println("请输入用户名:");
String name = sc.nextLine();
System.out.println("请输入密码:");
String pwd = sc.nextLine();
// 比较用if语句实现。
if (username.equals(name) && password.equals(pwd)) {
System.out.println("登录成功");
break;
} else {
// 2,1,0
if ((2 - x) == 0) {
System.out.println("没有机会了,请和有关方面联系");
} else {
System.out.println("登录失败,你还有" + (2 - x) + "次机会");
}
}
}
}
}
B:遍历字符串
分析:
a:定义一个字符串:“hallowolld”
b:依次获取每一个字符
代码体现:
public class StringTest{
public static void main(String[] args){
//定义一个字符串
String s = "hellowold";
//依次获取每一个字符
int length = s.length();
for (int x = 0; x<length;x++){
system.out.println(s.charAt(x));
}
}
}
C:统计字符串中大写字母,小写字母以及数字字符出现的次数
分析:
a:定义一个字符串对象。(可以改进为键盘录入)
b:定义三个统计变量
bigCount=0
smallCount=0
numberCount=0
c:遍历字符串,获取得到每一个字符。
d:判断该字符在哪个范围。
char ch = '?';
如果在大写:bigCount++
ch>='A' &&ch<='Z'
如果在小写:smallCount++
ch>='a' &&ch<='z'
如果在数字:numberCount++
ch>='0' &&ch<='9'
e:输出统计变量即可。
代码体现:
public class StringTest2 {
public static void main(String[] args) {
// 定义一个字符串对象。(可以改进为键盘录入)
String s = "hello1234567WORLDJava";
// 定义三个统计变量。
int bigCount = 0;
int smallCount = 0;
int numberCount = 0;
// 遍历字符串,获取得到每一个字符。
for (int x = 0; x < s.length(); x++) {
char ch = s.charAt(x);
// 判断该字符在哪个范围。
if (ch >= 'A' && ch <= 'Z') {
bigCount++;
} else if (ch >= 'a' && ch <= 'z') {
smallCount++;
} else {
numberCount++;
}
}
//输出统计变量即可。
System.out.println("大写字母:"+bigCount);
System.out.println("小写字母:"+smallCount);
System.out.println("数字字符:"+numberCount);
}
}
D:把一个字符串的首字母变成大写,其他的全部小写
分析:
a:定义字符串。
b:截取出首字母。
截取出其他字母。
c:截取出首字母。 变大写
截取出其他字母。变小写
d:拼接。
代码实现:
public class StringTest {
public static void main(String[] args){
//定义一个字符串。
String s = "iloveYOU";
//截取出首字母,截取出其他字母。
String s1 = s.substring(0,1);
String s2 = s.substring(1);
//拼接。
String s3 = s1.toUpperCase().concat(s2.toLowerCase());
system.out.println(s30;
}
}
E:统计大串中小串出现的次数
获取一个字符串中指定子串出的次数。
比如说"hanbasdnbafllgnbahjnbakqqqqlnbaxi"在这个字符串中,
多有个nba?
分析:
a:定义两个字符串,一个大串,一个小串。
b:定义一个统计变量。
c:在大串中查找一次小串:
返回-1,直接返回统计变量。
返回不是-1,统计变量++。
d:把大串查过的部分截取掉,把值赋值给大串,返回C继续。
由于次数不知道多少次,所以,用while循环。条件是:不是-1.
代码实现:
public class StringTest {
public static void main(String[] args) {
// 定义两个字符串,一个大串,一个小串。
String maxString = "hanbasdnbafllgnbahjnbakqqqqlnbaxi";
String minString = "nba";
int count = getCount(maxString, minString);
System.out.println(count);
}
public static int getCount(String maxString, StringminString) {
int count = 0;
int index = 0;
// 查找,赋值,和判断放到一条语句上了。
while ((index = maxString.indexOf(minString)) !=-1){
count++;
// 重新赋值的动作
maxString = maxString.substring(index +minString.lengt());
}
return count;
}
}
F:对字符串中的数据按照自然排序:
举例:给出:"bagecdf"
要求结果:"abcdefg"
分析:
a:定义一个字符串。
b:把字符串转换成字符数组。
c:对字符数组排序。
d:把排序后的数组中的数据拼接成一个字符串即可。
代码体现:
public class StringTest2 {
public static void main(String[] args) {
// 定义一个字符串。
String s = "bagecdf";
// 把字符串转换成字符数组。
char[] chs = s.toCharArray();
// 对字符数组排序
sort(chs);
// 把排序后的数组中的数据拼接成一个字符串即可。
String result = "";
for (int x = 0; x < chs.length; x++) {
result += chs[x];
}
System.out.println(result);
}
private static void sort(char[] chs) {
for (int x = 0; x < chs.length - 1; x++) {
for (int y = 0; y < chs.length - 1 - x; y ++) {
if (chs[y] > chs[y + 1]) {
char ch = chs[y];
chs[y] = chs[y + 1];
chs[y + 1] = ch;
}
}
}
}
}
StringBuffer和StringBuilder(功能完全相同):
(1)字符缓冲区类。
StringBuffer:线程安全,效率低。
StringBuilder:线程不安全,效率高。
(2)构造方法:
A:StringBuffer sb = new StringBuffer();
B:StringBuffer sb = new StringBuffer(20);
C:StringBuffer sb = new StringBuffer("hello");
(3)成员方法:
A:添加功能:
append();
insert();
B:删除功能:
delete();
deleteCharAt();
C:截取功能:
subString();
D:替换功能:
replace();
E:反转功能:
reverse();
代码体现:
import java.util.Scanner;
/*
* 键盘录入一个字符串,控制台输出其反转后的数据:
* 举例:abc
* 结果:cba
*
* 方式1:
*
把字符串倒序输出。
*
* 方式2:
*
定义一个新的空字符串,把原始字符串变成字符数组,倒序遍历的时候拼接到新的字符串上。
*
* 方式3:
*
String -- StringBuffer -- String
*/
public class StringDemo {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String line = sc.nextLine();
// 方式1: 把字符串倒序输出。
for (int x = line.length() - 1; x >= 0; x--) {
System.out.print(line.charAt(x));
}
System.out.println();
// 方式2:定义一个新的空字符串,把原始字符串变成字符数组,倒序遍历的时候拼接到新的字符串上。
String result = "";
char[] chs = line.toCharArray();
for (int x = chs.length - 1; x >= 0; x--) {
result += line.charAt(x);
}
System.out.println(result);
//方式3:String -- StringBuffer -- String
StringBuffer sb = new StringBuffer(line);
sb.reverse();
String str = new String(sb);
System.out.println(str);
}
}
------- <a target="blank">android培训</a>、<a target="blank">java培训</a>、期待与您交流! ----------
详细请查看:http://edu.csdn.net
String类:
由多个字符组成的一串数据。
底层是一个字符数组。
构造方法:
A:String();//空字符串构造方法
B:String(byte[] bys) ;//把一个字节数组转换成字符串
C:String(byte[] bys,int index,int count);//把一个字节数组的一部分转成字符串。count:表示计数,个数的意思。
D:String(char[] chs);//把一个字符数组转成字符串。
E:String(char[] chs,int index,int count);//把一个字符数组的一部分转成字符串。
F:String(String str);//有参构造方法
G:String s = "hello";//给一个字符串赋值
(3)成员方法:
A:判断功能
boolean equals(Object obj);//比较字符串的内容是否相同
boolean equalsIgnoreCase(String str);//比较字符串的内容是否相同,忽略大小写 boolean contains(String str);//字符串对象中是否包含给定的字符串。
boolean startsWith(String str);//是否以指定的字符串开头。
boolean endsWith(String str);//是否以指定的字符串结束。
boolean isEmpty()//是否为空。""还是null。
B:获取功能
int length();// 返回字符串的字符个数。也就是长度。
char charAt(int index);// 返回指定索引处的字符。
int indexOf(int ch);//返回指定字符在字符串中的第一次出现的索引。
int indexOf(String str);//返回指定字符串在字符串中的第一次出现的索引。
int indexOf(int ch,int formIndex);// 返回从指定位置开始的指定字符在字符串中的第一次出现的索引。
int indexOf(String str,int formIndex);//返回从指定位置开始的指定字符串在字符串中的第一次出现的索引。
String substring(int start);//截取字符串。从start开始到末尾。
String substring(int start,int end);// 截取字符串。从start到end。(包左不包右。)
C:转换功能
byte[] getBytes();//把字符串转换成字节数组。
char[] toCharArray();//把字符串转换成字符数组。
static String copyValueOf(char[] chs);//把字符数组转换成字符串。
static String valueOf(char[] chs);//把字符数组转换成字符串。
static String valueOf(int i);// 把一个int类型的数据转换成字符串。
String toLowerCase();//把字符串转成小写
String toUpper();//把字符串转成大写
String concat(String str);//字符串的拼接。
D:其他功能
a:替换功能
String replace(char old,char nrw);//用给定的new字符把字符串中的old字符替换。
String replace(String old,String new);//用给定的new字符串把字符串中的old字符串替换。
b:去除前后空格
String trim();//去除字符串前后的空格。
c:按照字典顺序比较
int compareTo(String str);//按字典顺序比较两个字符串。
案例:
A:模拟用户登录
分析:
a:有已知的用户名和密码。
String username = "wangzhiyong";
String password = "wangzhiyong";
b:键盘录入用户名和密码。
用Scanner实现。
c:比较用if语句实现。
d:给三次机会,如果三次不成功。则吞卡。(退出)
代码实现:
public class StringTest {
public static void main(String[] args) {
// 已知的用户名和密码。
String username = "wangzhiyong";
String password = "wangzhiyong";
for (int x = 0; x < 3; x++) {
// x=0,1,2
// 键盘录入用户名和密码。
Scanner sc = new Scanner(System.in);
System.out.println("请输入用户名:");
String name = sc.nextLine();
System.out.println("请输入密码:");
String pwd = sc.nextLine();
// 比较用if语句实现。
if (username.equals(name) && password.equals(pwd)) {
System.out.println("登录成功");
break;
} else {
// 2,1,0
if ((2 - x) == 0) {
System.out.println("没有机会了,请和有关方面联系");
} else {
System.out.println("登录失败,你还有" + (2 - x) + "次机会");
}
}
}
}
}
B:遍历字符串
分析:
a:定义一个字符串:“hallowolld”
b:依次获取每一个字符
代码体现:
public class StringTest{
public static void main(String[] args){
//定义一个字符串
String s = "hellowold";
//依次获取每一个字符
int length = s.length();
for (int x = 0; x<length;x++){
system.out.println(s.charAt(x));
}
}
}
C:统计字符串中大写字母,小写字母以及数字字符出现的次数
分析:
a:定义一个字符串对象。(可以改进为键盘录入)
b:定义三个统计变量
bigCount=0
smallCount=0
numberCount=0
c:遍历字符串,获取得到每一个字符。
d:判断该字符在哪个范围。
char ch = '?';
如果在大写:bigCount++
ch>='A' &&ch<='Z'
如果在小写:smallCount++
ch>='a' &&ch<='z'
如果在数字:numberCount++
ch>='0' &&ch<='9'
e:输出统计变量即可。
代码体现:
public class StringTest2 {
public static void main(String[] args) {
// 定义一个字符串对象。(可以改进为键盘录入)
String s = "hello1234567WORLDJava";
// 定义三个统计变量。
int bigCount = 0;
int smallCount = 0;
int numberCount = 0;
// 遍历字符串,获取得到每一个字符。
for (int x = 0; x < s.length(); x++) {
char ch = s.charAt(x);
// 判断该字符在哪个范围。
if (ch >= 'A' && ch <= 'Z') {
bigCount++;
} else if (ch >= 'a' && ch <= 'z') {
smallCount++;
} else {
numberCount++;
}
}
//输出统计变量即可。
System.out.println("大写字母:"+bigCount);
System.out.println("小写字母:"+smallCount);
System.out.println("数字字符:"+numberCount);
}
}
D:把一个字符串的首字母变成大写,其他的全部小写
分析:
a:定义字符串。
b:截取出首字母。
截取出其他字母。
c:截取出首字母。 变大写
截取出其他字母。变小写
d:拼接。
代码实现:
public class StringTest {
public static void main(String[] args){
//定义一个字符串。
String s = "iloveYOU";
//截取出首字母,截取出其他字母。
String s1 = s.substring(0,1);
String s2 = s.substring(1);
//拼接。
String s3 = s1.toUpperCase().concat(s2.toLowerCase());
system.out.println(s30;
}
}
E:统计大串中小串出现的次数
获取一个字符串中指定子串出的次数。
比如说"hanbasdnbafllgnbahjnbakqqqqlnbaxi"在这个字符串中,
多有个nba?
分析:
a:定义两个字符串,一个大串,一个小串。
b:定义一个统计变量。
c:在大串中查找一次小串:
返回-1,直接返回统计变量。
返回不是-1,统计变量++。
d:把大串查过的部分截取掉,把值赋值给大串,返回C继续。
由于次数不知道多少次,所以,用while循环。条件是:不是-1.
代码实现:
public class StringTest {
public static void main(String[] args) {
// 定义两个字符串,一个大串,一个小串。
String maxString = "hanbasdnbafllgnbahjnbakqqqqlnbaxi";
String minString = "nba";
int count = getCount(maxString, minString);
System.out.println(count);
}
public static int getCount(String maxString, StringminString) {
int count = 0;
int index = 0;
// 查找,赋值,和判断放到一条语句上了。
while ((index = maxString.indexOf(minString)) !=-1){
count++;
// 重新赋值的动作
maxString = maxString.substring(index +minString.lengt());
}
return count;
}
}
F:对字符串中的数据按照自然排序:
举例:给出:"bagecdf"
要求结果:"abcdefg"
分析:
a:定义一个字符串。
b:把字符串转换成字符数组。
c:对字符数组排序。
d:把排序后的数组中的数据拼接成一个字符串即可。
代码体现:
public class StringTest2 {
public static void main(String[] args) {
// 定义一个字符串。
String s = "bagecdf";
// 把字符串转换成字符数组。
char[] chs = s.toCharArray();
// 对字符数组排序
sort(chs);
// 把排序后的数组中的数据拼接成一个字符串即可。
String result = "";
for (int x = 0; x < chs.length; x++) {
result += chs[x];
}
System.out.println(result);
}
private static void sort(char[] chs) {
for (int x = 0; x < chs.length - 1; x++) {
for (int y = 0; y < chs.length - 1 - x; y ++) {
if (chs[y] > chs[y + 1]) {
char ch = chs[y];
chs[y] = chs[y + 1];
chs[y + 1] = ch;
}
}
}
}
}
StringBuffer和StringBuilder(功能完全相同):
(1)字符缓冲区类。
StringBuffer:线程安全,效率低。
StringBuilder:线程不安全,效率高。
(2)构造方法:
A:StringBuffer sb = new StringBuffer();
B:StringBuffer sb = new StringBuffer(20);
C:StringBuffer sb = new StringBuffer("hello");
(3)成员方法:
A:添加功能:
append();
insert();
B:删除功能:
delete();
deleteCharAt();
C:截取功能:
subString();
D:替换功能:
replace();
E:反转功能:
reverse();
代码体现:
import java.util.Scanner;
/*
* 键盘录入一个字符串,控制台输出其反转后的数据:
* 举例:abc
* 结果:cba
*
* 方式1:
*
把字符串倒序输出。
*
* 方式2:
*
定义一个新的空字符串,把原始字符串变成字符数组,倒序遍历的时候拼接到新的字符串上。
*
* 方式3:
*
String -- StringBuffer -- String
*/
public class StringDemo {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String line = sc.nextLine();
// 方式1: 把字符串倒序输出。
for (int x = line.length() - 1; x >= 0; x--) {
System.out.print(line.charAt(x));
}
System.out.println();
// 方式2:定义一个新的空字符串,把原始字符串变成字符数组,倒序遍历的时候拼接到新的字符串上。
String result = "";
char[] chs = line.toCharArray();
for (int x = chs.length - 1; x >= 0; x--) {
result += line.charAt(x);
}
System.out.println(result);
//方式3:String -- StringBuffer -- String
StringBuffer sb = new StringBuffer(line);
sb.reverse();
String str = new String(sb);
System.out.println(str);
}
}
------- <a target="blank">android培训</a>、<a target="blank">java培训</a>、期待与您交流! ----------
详细请查看:http://edu.csdn.net
相关文章推荐
- 黑马程序员—String类常用方法
- 黑马程序员--Java基础学习笔记【Object类、String类】
- 黑马程序员 第二节String类和 Stringbuffer
- 黑马程序员——Java基础--------String类
- 黑马程序员————java基础————常用类String类
- 黑马程序员——java基础——String类的理解
- 黑马程序员------String类
- 黑马程序员_String类
- 黑马程序员——String类和基本数据类型包装类
- 黑马程序员——Java基础---String类和StringBuffer
- 黑马程序员_java String类
- 黑马程序员---Java基础-String类
- 黑马程序员——String类
- 黑马程序员面试题面向对象二(多态,抽象类abstract,接口Interface,内部类,异常Exception,包package,String类,StringBuffer)
- 黑马程序员_java String类
- 黑马程序员_java String类
- 黑马程序员——多线程、String类和基本数据类型包装类
- 黑马程序员——Java String类 and 正则表达式(第七篇)
- 黑马程序员-String类
- 黑马程序员_java基础笔记(05)...String类