Java基础笔记15-String类
1.String类概念
-
String是引用数据类型,表示字符串(其实是由多个字符组成的)
-
public static void main(String[] args) { //String()类的定义 //直接定义一个新字符对象 String str1 = new String(); //在创建对象的时候直接初始化赋值 String str2 = new String("cat"); //直接赋值 String str3 = "cats"; }
-
String类特点
- String是final修饰的,所以是最终类,最终类是不能被继承的,既然不能被继承也就意味着里面的方法不能被重写
-
字符串常量池
- 字符串是常量,所有的字符串常量都是存储在常量池中的,每个常量在常量池中都有地址;在常量池中,如果定义的常量在常量池中已经存在,则不会再进行创建,而是直接拿来用,如果不存在就创建一个常量扔进常量池中
2.String()类中常用的方法
- indexOf() 正向查询,
- 从第一个字符开始查询,返回指定字符的下标,只返回查询到的第一个符合的字符下标。
- lastIndexOf() 反向查询,
- 从最后一个开始查询,返回指定字符的下标,只返回查询到的第一个符合的字符下标。
- contains() 确认作为参数的一段字符串是否包含在对象字符串中,返回布尔值
- split() 将字符串在指定位置进行切割,结果中会去掉作为参数的符号
- startsWith() 判断字符串是否以指定字符串开头,返回布尔值
- endsWith() 判断字符串是否以指定字符串结尾,返回布尔值
- substring() 截取字符串片段
- 参数只输入一个数字,作用是截取从这个下标开始(包含开始)到结束的所有字符串,并返回
- 参数输入两个数字,作用是返回截取的从第一个数字下标开始(包含),到第二个下标结束(不包含)之间的所有字符串
- equals() 比较两个对象是否相同
- 在String()中先比较地址, == 地址相同直接输出true,地址不同,则比较值,值相同则输出true,值不同则输出false
public static void main(String[] args) {
String str = "hello jim";
//indexOf()正向查询,从第一个字符开始查询,返回指定字符的下标,只返回查询到的第一个符合的字符下标。
System.out.println(str.indexOf("j")); //6
//若是个字符串,则返回符合的第一个字符的下标
System.out.println(str.indexOf("jim"));//6
//lastIndexOf()反向查询,从最后一个开始查询,返回指定字符的下标,只返回查询到的第一个符合的字符下标。
System.out.println(str.lastIndexOf("h")); //0
System.out.println(str.lastIndexOf("el"));//1
//如果不存在的字符或字符串,则返回-1
System.out.println(str.indexOf("a"));//-1
System.out.println(str.lastIndexOf("a"));//-1
//contains() 确认一段字符串是否包含另一段字符串,返回布尔值
System.out.println(str.contains("hello")); //true
System.out.println("hello".contains(str)); //false
//split()将对象在指定位置进行切割
String url = "http.www.baidu.com";
String urlArr[] = url.split("\\.");//在 . 的位置进行切割,结果中会去掉作为标记的符号
//遍历输出切割后的结果
for(int i=0;i<urlArr.length;i++) {
System.out.print(urlArr[i]+" ");//http www baidu com
}
System.out.println();
//startsWith() 判断字符串是否以指定字符串开头,返回布尔值
System.out.println(url.startsWith("http")); //true
System.out.println(url.startsWith("https")); //false
//endsWith() 判断字符串是否以指定字符串结尾,返回布尔值
System.out.println(url.endsWith("com")); //true
System.out.println(url.endsWith("cn")); //false
//substring()截取字符串片段
String str7 = "abcdefgh";
//只输入一个数字,作用是截取从这个下标开始(包含开始)到结束的所有字符串,并返回
System.out.println(str7.substring(3)); //defgh
//输入两个数字,作用是返回截取的从第一个数字下标开始(包含),到第二个下标结束(不包含)之间的所有字符串
System.out.println(str7.substring(3,str7.length()-2)); //def
}
3.在String()中 == 与equals()的对比
public static void main(String[] args) {
//字符串的对比
String str1 = new String("cat");
String str2 = new String("cat");
String str3 = new String("cats");
//== 在引用数据类型中比较的是对象的地址
System.out.println(str1 == str2);//false
//equals()在String()中先比较地址,地址相同直接输出true,地址不同,则比较值,值相同则输出true,值不同则输出false
System.out.println(str1.equals(str2)); //true
System.out.println(str1.equals(str3)); //false
}