在我们刚开始接触java时,像“abc”,“java你好”,这种类型都是String类型的一个实例,string是字符串类型,不属于八大基本数据类型,String是工具类,位于java.lang包下,提供了很多快捷,迅速操作字符串的功能。
从这里看出string类被final修饰这也就是为什么string字符串不能被更改,当然了这个类更不能被继承。下面就来了解了解string吧。
一,简单了解一下String
1,字符串的创建方式:
赋值式创建 String str = “avd”; 在这里要说一下,string的在创建后,就会被存储到jvm里面的字符串常量池当中,以后如果再有字符串被创建就会在字符串常量池当中看看是否已经有了,如果没有则会被创建 ,也就是说支付好吃常量池当中只有一份相同的字符串。
2,String str = new String(“abc”);new的对象会在堆上开辟内存 ,但是存放的是字符串常量池里面的字符串的地址。
3char [ ] ch = {‘a’,‘b’,‘c’}; String str = new String(ch)
二,string的基本方法
直接上代码;
public class TestDemo3 {
public static void main8(String[] args) {
String str1 = " abc bcabcd";
//去掉头尾的空格
String ret = str1.trim();
System.out.println(ret);
}
public static void main(String[] args) {
String str1 = "ababcabcd";//提取字符串
String ret = str1.substring(1);
System.out.println(ret);
String ret2 = str1.substring(1,4);
System.out.println(ret2);
}
public static void main6(String[] args) {
String str1 = "ababcabcd";
String ret = str1.replace("ab","pp");
System.out.println(ret);
//替换某个字符串
System.out.println(str1.contains("a"));
String tem = str1.replaceFirst("a","ydd");
System.out.println(tem);
}
public static void main7(String[] args) {
String str1 = "ABCDef";
String str2 = "abcdef";
//判断是否相等
System.out.println(str1.equals(str2));
System.out.println(str1.equalsIgnoreCase(str2));
System.out.println(str1.compareTo(str2));
}
public static void main4(String[] args) {
byte [] bytes = {97,98,99,100};
String str = new String(bytes);
//转为byte
System.out.println(str);
String str2 = "abcde";
byte [] bytes1 = str2.getBytes();
System.out.println(Arrays.toString(bytes1));
}
public static boolean func(String str) {
char [] val = str.toCharArray();
for(int i = 0; i < val.length;i++) {
if(val[i] < '0' || val[i] > '9') {
return false;
}
}
return true;
}
public static void main2(String[] args) {
String str = "123456a7";
boolean flg = func(str);
System.out.println(flg);
}
public static void main1(String[] args) {
char [] val = {'a','b','c','d','e','f'};
String str = new String (val,1,3);
System.out.println(str);
String str2 = "hello";
char ch = str2.charAt(2);
System.out.println(ch);
char[] val2 = str2.toCharArray();
System.out.println(Arrays.toString(val2));
String st = "helloword";
//将字符串变成字符数组
char [] data = st.toCharArray();
for(int i = 0;i < data.length;i++) {
System.out.print(data[i] + " ");
}
}
}
三,字符串的拼接
String是字符字符串常量的引用,String += String的本质是new了新的临时对象StringBuild,拼接后再把StringBuild.toString赋给原String。
但是这有很大的缺点,在拼接时会产生大量的临时对象,严重影响性能。
四,String,StringBuffer,StringBuilder的比较
1,String是字符串常量,StringBuffer和StringBuilder是字符串变量。
2,StringBuffer是线程安全的,而StringBuilder是非线程安全的。