String类的方法

package 复习;
/**
 * String 方法的总结
 * ASCII 编码表: 字典的顺序  ,字节遍历的
 *   a-z 97-122,A-Z 65-90,1-9 48-57
 * @author Administrator
 *
 */
public class String方法汇总 {
public static void main(String[] args) {
// int length()返回此字符序列的长度。该长度是序列中的 16 位 char 数
String s="abclyzqwlyz";//字符串其实就是char字符数组
method(s); //判断
methods1(s);//获取
method2(s);//转换
method3(s);//其他
method5(s);//构造方法
}
//获取 ,找不到会返回-1
// charAt(),indexOf(),lastIndexOf(),length(),substring()
private static void methods1(String s) {
// |-- 传递索引,获取字符 charAt()
char at = s.charAt(3);
// 返回指定索引的 char 值。索引范围是从零到 length() - 1。
System.out.println(at);
//  |-- 获取字符出现第一次索引 indexOf()
// int indexOf = s.indexOf(at);x 
// int indexOf = s.indexOf("lyz");//如果放字符串会返回第一个出现的位置的索引
// 指定从第几个位置开始搜索,我从第5个位置开始搜索,他前的就都忽略了,所以只有第9个位置上有l
// 如果我指定的位置上直接是我们找的字符,就会直接返回我指定的位置了
int indexOf = s.indexOf("y",5);
System.out.println(indexOf);
//  |-- 获取字符出现最后一次索引 lastIndexOf()
//从后面找起,如果字符串里有重复也会先把后面的索引返回
// int indexOf2 = s.lastIndexOf("z");
int indexOf2 = s.lastIndexOf("b",5);//如果我指定从索引位置5开始搜索,他就只会找5到0的字符
System.out.println(indexOf2);
//  |-- 获取字符串长度 length()
int length = s.length();
System.out.println(length);
//  |-- 获取字符串一部分 substring()
String string = s.substring(2);//从指定int类型的索引位置开始到后面都获取到
System.out.println(string);

}


// . 判断 ,返回值全是boolean类型
// isEmpty() , contains (), equals (), startsWith() ,endsWith(),
//  |-- 判断字符串全等忽略大小写 equalsIgnoreCase()
private static void method(String s){
//  |-- 判断字符串全等方法 equals()
String dome ="abbcs";
boolean equals = s.equals(dome);
System.out.println(equals);
// |-- 判断字符串全等忽略大小写 equalsIgnoreCase()
String dome2="abclyzQW";
boolean equalsIgnoreCase = s.equalsIgnoreCase(dome2);
System.out.println(equalsIgnoreCase);
// |-- 判断字符串的开头 startsWith()
// boolean startsWith = s.startsWith("a");可以自定义放字符也或可以放字符串
boolean startsWith = s.startsWith(dome);//可以放字符串,引用变量
System.out.println(startsWith);
//  |-- 判断字符串的结尾 endsWith()
boolean endsWith = s.endsWith("qw");//和startsWith同理,可以放字符串和字符,还有空“ ”
System.out.println(endsWith);

//  |-- 判断字符串完全包含 contains()
boolean contains = s.contains(dome);//可以放字符串,引用变量和字符,还有空“ ”
System.out.println(contains);
// |-- 判断字符串中不是有字符 isEmpty()
boolean empty = s.isEmpty();
System.out.println(empty);

}


//5. 转换
// getBytes(),toCharArray(),toLowerCase(),toUpperCase,valueOf(静态方法)
private static void method2(String s){
//  |-- 字符串转成字节数组 getBytes()
String dome ="abVcs8#";
byte[] bytes = dome.getBytes();
//遍历字节数组
for(int i=0;i<bytes.length;i++){
// 打印出来的是编码表里转换的数字如常用的 a-z 97-122,A-Z 65-90,1-9 48-57
// System.out.print(bytes[i]+"  ");
}
// |-- 字符串转成字符数组 toCharArray()
 char[] cs = s.toCharArray();
 //char 可以直接打印出字符 ,因为底层封装做遍历了,里面都做好了转换,重写了toString打印就不是地址值了
 System.out.println(cs);
//  |-- 字符串转成全小写 toLowerCase()
//  转换大小写只对字符有效,而且是全转
 String lowerCase = dome.toLowerCase();
 System.out.println(lowerCase);
//  |-- 字符串转成全大写 toUpperCase()
 String upperCase = dome.toUpperCase();
 System.out.println(upperCase);
//  |-- 任意数据类型转成字符串, 静态方法 static String valueOf()
 int lyz=465498;
char[]  ch={'a','b','c'};
 String valueOf = String.valueOf(lyz);
 //在这里valueof已经是字符串了+1变成连接符了,但是+ " "的方法也可以变成字符串
 System.out.println(valueOf+1);
 String valueOf2 = String.valueOf(ch);
 System.out.println(valueOf2);//打印是abc字符串
 
 
}
// 6. 其他
public static void method3(String s){
//  |-- 切割字符串,返回存储字符串数组  split()
/* String[] split = s.split("l");
for(int i=0;i<split.length;i++){
// abc yzqw yz   我在每个切割的位置上 +"  "空格
System.out.print(split[i]+" ");
} */
//根据IP地址的点,对字符串进行切割
//ip切割时必须用转义字符,给转了,要不.(点)在正则表达式里代表全部,都给切成 稀泥
String ip="192.78.4.4"; 
String[] split1=ip.split("\\.");
for (int i = 0; i < split1.length; i++) {

System.out.print(split1[i]+" ");
}
//  |-- 替换字符串 replace()
//可以放自定义字符串,也可以放字符串变量引用
String replace = s.replace("qw", ip);
System.out.println(replace);
//  |-- 去掉字符串两端空格 trim()
// * 去掉字符串两端的空格
// * 是一种人性化设计
String trimDome="  lyzqw  ";
String trim = trimDome.trim();
System.out.println(trim);
//  |-- 字符串按照字典顺序比较  compareTo()
/*
* String类的比较方法
* int compareTo(String s)
* 做两个字符串的比较,比较后的结果不能用布尔值if表示

* 我和你比年龄,结果,三种
* 大,小,一样
* 字符串对象,调用者方法compareTo(参数)
* 调用者和参数之间进行比较
* this
* 调用者"小于"参数  负数 
* 调用者"大于"参数  正数
* 调用者"等于"参数  0
* 顺序,字符串的 自然顺序,字典顺序 编码表 a:97  A:65   1:48
*/
//第一个相同就比较第二了,第一个要是比较出大小了,后面不看
String s1="abc"; 
String s2="aBC";
int i = s1.compareTo(s2);
System.out.println(i);


}
//构造方法
public static void method5(String s){
/*
* String构造方法
* String(char[] ch)
* 将字符数组变成字符串
* 不会查询编码表
* 将字符数组,拼接成1个字符串
*/
char [] ch={'a','b','c'};
String ss=new String(ch);
System.out.println(ss);

/*
* String构造方法
* String(byte[] bytes,int offset,int length)
* 将字节数组中的一部分转成字符串
* int offset 开始索引
* int length 转几个
* 常见ASCII  a-z  97-122  A-Z 65-90  0-9 48-57
*/
char[] ch1 = {'a','b','1','2','含'};
String ss1=new String(ch1,0,5);
//ab12含,字符串打印出来的,直接连汉字都出来了
System.out.println(ss1);




/*
*  
*  String构造方法
*  String(byte[] bytes)传递字节数组
*  注意: byte 取值范围 -128  127
*  将字节数组变成字符串
*  会查询编码表
*  
*  如果字节数组中的数据是负数: 变成的字符是汉字
*  编码表中,汉字都是负数的,汉字在计算机中占用2个字节
*  
*  编码表,简体中文编码表 GBK
*/
//定义字节数组
byte[] bytes = {97,98,99,100};//abcd  自动ascii编码给数字转成对应的abcd
String ss2=new String(bytes);
System.out.println(ss2);


byte[] bytes1 = {-50,-61,-56,-45};//蚊扔 负数是汉字
String s1 = new String(bytes1);
System.out.println(s1);

//定义字节数组
byte[] bys1 = {97,98,99,100};
//创建String对象,传递字节数组,2个int值
String ss4 = new String(bys1,2,1);// c 从第二个开始 转1个数量
System.out.println(ss4);


}


}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值