Java常用类(一)
文章目录
String类
1、String类概述
A:字符串:
a、字符串是由多个字符组成的一串数据(字符序列);
b、字符串可以看成是字符数组。
B:String类的概述:String 类代表字符串
a:字符串字面值"abc"也可以看成是一个字符串对象。
b:字符串是常量,一旦被创建,就不能被改变。
2、String类的构造方法
public String():空构造
public String(byte[] bytes):把字节数组转成字符串
public String(byte[] bytes,int index,int length):把字节数组的一部分转成字符串(index:表示的是从第几个索引开始, length表示的是长度)
public String(char[] value):把字符数组转成字符串
public String(char[] value,int index,int count):把字符数组的一部分转成字符串
public String(String original):把字符串常量值转成字符串
举例:
public class Example02 {
public static void main(String[] args) {
String s1 = new String();//空参构造方法
byte[] bytes={97,98,99,100,101};
String s = new String(bytes);//把字节数组转成字符串的构造方法
System.out.println(s); //ASCII表 打印对应键盘字符
String s2 = new String(bytes, 1, 3);//将一部分转成字符串
System.out.println(s2);
System.out.println("------------------------------");
char[] value={'他','是','个','学','生'};
String str3 = new String(value);//将字符数组转换为字符串的构造方法
System.out.println(str3);
//public int length():返回此字符串的长度
System.out.println(str3.length());
//从指定元素开始获取指定个数的元素并将其转换为字符串的构造方法
String str4 = new String(value, 3, 2);
System.out.println(str4);
System.out.println(str4.length());
}
}
运行结果:
abcde
bcd
------------------------------
他是个学生
5
学生
2
Process finished with exit code 0
3、String类特点
字符串一旦被创建就不能改变,因为字符串的值是在方法区的常量池中划分空间分配地址值的。
简化内存图:
4、String类的判断功能
public boolean equals(Object obj): 比较字符串的内容是否相同,区分大小写
public boolean equalsIgnoreCase(String str): 比较字符串的内容是否相同,忽略大小写
public boolean contains(String str): 判断字符串中是否包含传递进来的字符串
public boolean startsWith(String str): 判断字符串是否以传递进来的字符串开头
public boolean endsWith(String str): 判断字符串是否以传递进来的字符串结尾
public boolean isEmpty(): 判断字符串的内容是否为空串""。
示例:
public class Example03 {
public static void main(String[] args) {
//public boolean equals(Object obj): 比较字符串的内容是否相同,区分大小写
//“==”比较的是地址值
{
String str = "aaa";
String str1 = "bbb";
String str2 = "ccc";
String str3 = "aaa";
String str4 = new String("bbb");
System.out.println(str.equals(str3)); //true
System.out.println(str == str3); //true
System.out.println(str.equals(str2)); //false
System.out.println(str1.equals(str4)); //true
System.out.println(str1 == str4); //false str4是新创建的"bbb"字符串,地址值和str1的不同
}
System.out.println("------------------------------");
//public boolean equalsIgnoreCase(String str): 比较字符串的内容是否相同,忽略大小写
{
String str="QWER";
String str1="qwer";
System.out.println(str.equalsIgnoreCase(str1)); //true
}
{
String str="MyJavaDemo";
System.out.println(str.contains("aD")); //true 判断字符串中是否包含传递进来的字符串
System.out.println(str.startsWith("My"));//true 判断字符串是否以传递进来的字符串开头
System.out.println(str.endsWith("emo"));//true 判断字符串是否以传递进来的字符串结尾
System.out.println(str.isEmpty()); //false 判断字符串的内容是否为空串""
System.out.println("".isEmpty()); //true
}
}
}
5、String类的获取功能
public int length(): 获取字符串的长度。
public char charAt(int index): 获取指定索引位置的字符
public int indexOf(int ch): 返回指定字符在此字符串中第一次出现处的索引。
public int indexOf(String str): 返回指定字符串在此字符串中第一次出现处的索引。
public int indexOf(int ch,int fromIndex):返回指定字符在此字符串中从指定位置后第一次出现处的索引。
public int indexOf(String str,int fromIndex): 返回指定字符串在此字符串中从指定位置后第一次出现处的索引。
public String substring(int start): 从指定位置开始截取字符串,默认到末尾。
public String substring(int start,int end): 从指定位置开始到指定位置结束截取字符串。
示例:
public class Example08 {
public static void main(String[] args) {
String str="西安市长安区西安邮电大学长安校区710121";
//获取字符串长度
System.out.println( str.length());
//获取指定索引位置的字符
System.out.println( str.charAt(0));
//返回指定字符串在此字符串中第一次出现处的索引
System.out.println( str.indexOf("邮电"));
//返回指定字符(ASCII码表对应数值或字符)在此字符串中第一次出现处的索引
System.out.println( str.indexOf('邮'));
//返回指定字符在此字符串中从指定位置后第一次出现处的索引
System.out.println( str.indexOf('区', str.indexOf('区') + 1));
//返回指定字符串在此字符串中从指定位置后第一次出现处的索引
System.out.println( str.indexOf("西安", str.indexOf("西安")+1));
//从指定位置开始截取字符串,默认到末尾
System.out.println( str.substring(5));
//从指定位置开始到指定位置结束截取字符串
System.out.println( str.substring(5, 8));
}
}
运行结果:
22
西
8
8
15
6
区西安邮电大学长安校区710121
区西安
Process finished with exit code 0
6、字符串的遍历
//遍历字符串
public static void traversingStrings(String str) {
for (int i = 0; i < str.length(); i++) {
System.out.print(str.charAt(i));
}
System.out.println();
}
例:分别统计字符串中大写字母,小写字母,数字的个数
public static void statistics(String str1) {
//定义统计变量
int capitalCount=0;
int lowerCaseCount=0;
int numCount=0;
//遍历查找统计
for (int i = 0; i < str1.length(); i++) {
if(str1.charAt(i)>=48&&str1.charAt(i)<=57){
numCount++;
}else if(str1.charAt(i)>=65&&str1.charAt(i)<=90){
capitalCount++;
}else if(str1.charAt(i)>=97&&str1.charAt(i)<=122){
lowerCaseCount++;
}
}
System.out.println("大写字母统计个数:" + capitalCount);
System.out.println("小写字母统计个数:" + lowerCaseCount);
System.out.println("数字统计个数:" + numCount);
}
7、String类的转换功能
public byte[] getBytes(): 把字符串转换为字节数组。
public char[] toCharArray(): 把字符串转换为字符数组。
public static String valueOf(char[] chs): 把字符数组转成字符串。
public static String valueOf(int i): 把int类型的数据转成字符串。
注意:String类的valueOf方法可以把任意类型的数据转成字符串。
public String toLowerCase(): 把字符串转成小写。
public String toUpperCase(): 把字符串转成大写。
public String concat(String str): 把字符串拼接。
示例:
public class Example06 {
public static void main(String[] args) {
{
String str="33 4 @";
byte[] bytes = str.getBytes(); //把字符串转换为字节数组
for (int i = 0; i < bytes.length; i++) {
System.out.print(bytes[i]+" ");
}
System.out.println();
char[] chars = str.toCharArray(); //把字符串转换为字符数组
for (int i = 0; i < chars.length; i++) {
System.out.print(chars[i]+",");
}
}
System.out.println("\n----------------------------------");
{
//注意:String类的valueOf方法可以把任意类型的数据转成字符串。
char[] chars = {'s', '#', '你', '好'};
System.out.println(String.valueOf(chars));//把字符数组转成字符串
System.out.println(String.valueOf(100));//将int类型数据转化为字符串
}
System.out.println("----------------------");
{
String str = "ASDsfshgY";
String str1 = "asds";
System.out.println(str.toLowerCase()); //转小写
System.out.println(str.toUpperCase()); //转大写
System.out.println(str.concat(str1)); //拼接
}
}
}
运行结果:
51 51 32 52 32 64
3,3, ,4, ,@,
----------------------------------
s#你好
100
----------------------
asdsfshgy
ASDSFSHGY
ASDsfshgYasds
Process finished with exit code 0
8、String类的其他功能
public String replace(char old,char new) 将指定字符进行互换
public String replace(String old,String new) 将指定字符串进行互换
public String trim() 去除两端空格
public class Example14 {
public static void main(String[] args) {
String str="abcde12345";
String newStr = str.replace('a', '#');//将指定字符进行互换
System.out.println(newStr);
String newStr1 = str.replace("abcde", "*****");//将指定字符串进行互换
System.out.println(newStr1);
str=" 123 ";
String newStr2 = str.trim();//去除两端空格
System.out.println(newStr2);
}
}
运行结果:
#bcde12345
*****12345
123
Process finished with exit code 0
9、例题:
需求:统计大串中小串出现的次数
举例: "woaijavawozhenaijavawozhendeaijavawozhendehenaijavaxinbuxinwoaijavagun”中,
java出现了5次
示例:
public class Example13 {
public static void main(String[] args) {
String maxStr = "woaijavawozjavahendeaijavawohenajavaihenaijava";
String minStr = "java";
int count = getCount1(maxStr, minStr);//方法一
int count1 = countMinString(maxStr, minStr);//方法二
System.out.println(count);
System.out.println(count1);
}
public static int getCount1(String maxStr, String minStr) {
if(minStr==null||minStr.isEmpty()){
return -1;
}
int count = 0;// 定义一个统计变量
int index;//定义java索引
while ((index = maxStr.indexOf(minStr)) != -1) {
count++;
// 找到"java" 截取
maxStr = maxStr.substring(index + minStr.length());
}
return count;
}
public static int countMinString(String maxStr,String minStr) {
//若传进来的minStr为null或空串,则直接返回-1
if(minStr==null||minStr.isEmpty()){
return -1;
}
int maxStrLength = maxStr.length();//原串长度
maxStr=maxStr.replace(minStr,"");//用空串替换java
int strNewLength = maxStr.length();//新串长度
int count=(maxStrLength-strNewLength)/minStr.length();//计算java出现的次数
return count;
//上面五行代码链式编程:return (maxStr.length()-maxStr.replace(minStr,"").length())/minStr.length();
}
}
运行结果:
5
5
Process finished with exit code 0