概念
String是引用数据类型,表示字符串(其实是由多个字符组成的
特点
String是final修饰的,所以是最终类,最终类是不能被继承的,既然不能被继承也就意味着里面的方法不能被重写
String中的构造方法
public static void constructorMethod() {
String str = new String();
System.out.println(str+"--"+null);
String str2 = new String("wuhu");
System.out.println(str2);
String str3 = "qifei";
System.out.println(str3);
byte[] byteArr = {97,98,103,100};
String str4 = new String(byteArr);
System.out.println(str4);
char[] charArr = {'a','b','c'};
String str5 = new String(charArr);
System.out.println(str5);
//源码的写法
String result = "";
for(int i=0;i<charArr.length;i++) {
result = result + charArr[i];
}
System.out.println(result);
}
运行结果
--null
wuhu
qifei
abgd
abc
abc
string中有用但不是很常用的方法
* 1.指定所引出的char值(str.charAt())
* 2.指定char值对应的索引(str.indexOf())(str.lastIndexOf())
* 3.比较(compareTo)
* 4.链接(concat())
* 5.结尾字符(endsWith())
* 6.开始字符(startsWith())
* 7.将字符串转换为字节数组byte[] bts = str.getBytes();
* 8.判断字符串是否为空.isEmpty()
具体实例代码
String str = "Hello Word";
System.out.println("指定索引出的char值:"+str.charAt(1));
System.out.println("指定char值对应的索引:"+str.indexOf('i'));
System.out.println("指定char值对应的索引:"+str.lastIndexOf('i'));
String compare1 = "adc";
String compare2 = "aac";
System.out.println(compare2.compareTo(compare1));
System.out.println(compare2.concat(compare1));
System.out.println("是否包含指定的字符串:"+str.contains("hello"));
String url = "https://www.baidu.com";
System.out.println(url.endsWith("cn"));
System.out.println(url.startsWith("http"));
//将字符串转换为字节数组
byte[] bts = str.getBytes();
//print(bts);
System.out.println("判断字符串是否为空字符:"+"".isEmpty());
运行结果
指定索引出的char值:e
指定char值对应的索引:-1
指定char值对应的索引:-1
-3
aacadc
是否包含指定的字符串:false
false
true
判断字符串是否为空字符:true
String中有用的且常用的方法
* 1.替换(replace())
* 2.截取(substring())如果只有一个参数,代表开始,直到末尾结束,如果有两个参数,参数一代表开始,参数二代表结束位置(不包含)
* 3.分割(split())参数代表要拆分的依据
* 4.转换为纯大写(toUpperCase()),纯小写(toLowercase())
具体实例代码
String url = "http://www.shipin.douyu.com";
String newUrl = url.replace("douyu", "huya");
System.out.println(newUrl);
System.out.println(url.substring(5));
System.out.println(url.substring(8, url.length()));
String[] urlArr = url.split("\\.");
System.out.println(urlArr[urlArr.length-2]);
System.out.println("转换为纯大写:"+url.toUpperCase());
}
运行结果
http://www.shipin.huya.com
//www.shipin.douyu.com
ww.shipin.douyu.com
douyu
转换为纯大写:HTTP://WWW.SHIPIN.DOUYU.COM
字符串的创建
字符串有两种创建方式,一种是通过new关键字进行对象的创建,还有一种通过直接赋值的形式进行字符串对象的创建,两种创建方式的区别在哪?
字符常量都在常量池(方法区)中存储,是有自己的地址的,而通过new关键字创建出来的对象在堆内存中