java----String解析
String在内存中的分析:
public class Demo { public static void main(String[] args){ String a = new String("xx"); //1、首先解释器在堆中的常量池中查找是否有xx变量,没有则创建。有就不在常量池中创建 //2、在堆中再创建一个对象xx;a中的地址指向它; //所以,new一个字符串。至少会创建一个对象。最多创建两个 String b = "xx"; //直接赋值。最多创建一个对象,如果常量池中有,就不会在创建对象; //---------------------------------------------------------------- String c = "a"; String e = "a1"; String d = c+1; //在编译的是由,c为变量,并不能确定c的最终只为多少,所以d在运行期才被赋值.会创建新的对象,d指向的是堆中的变量,不会是指向常量池 System.out.println(d==e);//false; final String f = "a"; String g = f+1; //在编译的时候,由于f为常量,不可以被修改.所以g肯定是确定的,为a1; String h = "a1";//此时h使用已有的字符串a1; System.out.println(g==h);//true String i = getA(); String j = i+1; String k = "A1"; System.out.println(j==k);//false,getA()方法只能在运行期才能加载。所以i不可知; final String i2 = getD(); String j2 = i+1; String k2 = "A1"; System.out.println(j2==k2);//false,getA()方法只能在运行期才能加载。所以i不可知; } public static String getA(){ return "A"; } public static String getD(){ return "A"; } }
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。
字符串的方法:
通过索引找字符串:charAt()
String x = "sdfdsfsd"; char a = x.charAt(2); System.out.println(a);
将字符串变成数组:toCharArray()
String x = "sdfdsfsd"; System.out.println(Arrays.toString(x.toCharArray()));
将字符数组转换成字符串
char[] arr = {'a','b','c'}; String s1 = new String(arr); System.out.println(s1); //abc String s2 = new String(arr,0,2);//不包括2 System.out.println(s2); //ab
获取每一个字符串的字节:getBytes()
String s = "sdfds"; System.out.println(Arrays.toString(s.getBytes()));//[115, 100, 102, 100, 115]
字符串替代:replace() replaceAll()
String s = "sdf33d33s"; System.out.println(s.replace("d","w")); System.out.println(s.replaceAll("\\d", "*")); //使用正则
字符串截取 substring()
String s = "sdf33d33s"; System.out.println(s.substring(2,4));
字符串切割 split()
String s = "sdf33d33s"; System.out.println(Arrays.toString(s.split("d")));
字符串包含字符串 contains()
String s = "sdf33d33s"; System.out.println(s.contains("df"));
查找 indexOf() lastindexOf()
String s = "sdf33d33s"; System.out.println(s.indexOf("df")); //返回字符串所在的索引
判断字符串是否为空 isEmpty()
String s = "sdf33d33s"; System.out.println(s.isEmpty());//为空不代表为null
去掉字符串前后的空格 trim()
String s = "sdf33d33s"; System.out.println(s.trim());

更多精彩