字符串 String类引用类型默认值null 声明创建字符串 Stringstr="abd123您好!" str=newString(); str=newString("456"); 将数组添加到字符串中 char[]arr={'a','v','y',97}; str=newString(arr); System.out.println(str);// avy97
字符串的拼接 加号+ 在拼接字符串和数学运算时优先级是一样的 System.out.println("123"+123+123);//123123123 System.out.println(123+123+"123");//246123
字符串 和 所有类型 相加 + 后得到的都是字符串 str="123"+"abc";//123abc str="123"+45;//12345 str="123"+new Object();//123+Object对象的toString的结果 str="123"+new int[]{1,2,3};//123 + 数组第一个元素的地址 数组是引用类型 String----类型中的常用方法
System.out.println(String.valueOf("c"));//c System.out.println(String.valueOf(43));//43 System.out.println(String.valueOf(""));//一个空格 System.out.println(test(123)); //123 System.out.println(test(null)); //空值默认类型是String
boolean b="123".equals("123"); System.out.println(b); //true String strA=new String("123"); String strB=new String("123"); boolean bb=strA.equals(strB); System.out.println(bb); //true
int index="12343456".indexOf("34"); int indexA="12343456".indexOf("0"); int indexB="12343456".lastIndexOf("34"); System.out.println(index); //2 System.out.println(indexA); //-1 System.out.println(indexB); //4
charitem="12343456".charAt(4); //可能会出现越界情况 System.out.println(item); //3
StringstrS="12343456".substring(4); System.out.println(strS); //3456 strS="12343456".substring(0,4); System.out.println(strS); //1234
str="12343456".replace("34","AaA"); System.out.println(str); //12AaAAaA56 str="12343456".replaceAll(".","A"); //正则表达式替换.代表任意字符 System.out.println(str); //AAAAAAAA str="1234345634".replaceAll("34","AaA"); //正则表达式替换 System.out.println(str); //12AaAAaA56AaA
String[]strArr="12343456".split("3"); System.out.println(Arrays.toString(strArr)); // [12, 4, 456]
intl="123123".length(); System.out.println(l); //6
str="\n\r\n 1 2 3 \t"; System.out.println(str);//换行加上空格1 2 3空格 System.out.println(str.trim());//1 2 3
str="123abcABC".toUpperCase();//转换成大写 System.out.println(str);//123ABCABC str="123abcABC".toLowerCase();//转换成小写 System.out.println(str);//123abcabc isEmpty判断是否是空串 booleanbool="123".isEmpty();//空串返回true System.out.println(bool); if(!str.isEmpty()){ //str有内容执行 }
bool="123456".startsWith("12"); //是否以字符串开始 System.out.println(bool); //true bool="123456".endsWith("56"); //是否以字符串结束 System.out.println(bool); //true
System.out.println("abc".equalsIgnoreCase("abc"));//true | 字符串常量池 池 容量 字符串怎样加入常量池中-----使用量的方式声明的字符串就会加入到常量池中 程序中第一次使用量的形式定义“123”,会将这个字符串对象存入到<字符串常量池中> 之后使用量的形式使用该对象,就执行使用常量池中的对象 char[] arr={'a','b','c'}; str=new String(arr); String strA="123"; String strB="123"; System.out.println(strA==strB); //true 常量优化解析文件时 常量和常量相加不可变量相加都是进行常量优化 函数方法调用需要运行的则不不执行常量池中的对象 常量优化 明确了值 String 常量+字符串 String strE="12"+"3"; String strF="1"+"2"+"3"; String strG="12"+3; System.out.println(strA==strE); //true System.out.println(strA==strF); //true System.out.println(strA==strG); //true final String aa="12";//final定义完后变成常量 String strI=aa+"3"; System.out.println(strA==strI); //true
需要运行的 String常量+String变量 String strC=new String("123"); String strD=new String("123"); System.out.println(strA==strC); //false System.out.println(strC==strD); //false
String item="12"; // 相当于方法返回值“12”+“3” String strH=item+"3"; // 需要运行的 String strHH=item+3; // 需要运行的 System.out.println(strH==strHH); //false System.out.println(strA==strH); //false System.out.println(strC==strH); //false intern str.intern(); 返回 str对象在字符串常量池中的副本对象 当调用intern方法时, 此String对象通过equals(Object)方法判断为相等的字符串, 如果池中有相等的字符串则返回池中的字符串。 否则,将此String对象添加到池中,并返回对此String对象的引用。 作用: strA=newString("123123"); strB=newString("123123"); System.out.println(strA.equals(strB)); //true System.out.println(strA==strB); //false System.out.println(strA.intern()==strB.intern()); //true newString("abc"+"12")创建了几个对象 一个或两个abc12是否在常量池中有的话则new一个新对象没有就加入到常量池中再new一个新对象 String s = new String("二哥"); 两行代码会创建三个对象,字符串常量池中一个,堆上两个。 String s = "三妹"; 这两行代码只会创建一个对象,就是字符串常量池中的那个。 String字符串定义后就不可以改变存在常量池中 | ||||||||||||||||||||||||||||||||||||