一、字符串:存储多个字符(字母、数字、汉字)
二、String 引用数据类型,是最终类,不能被继承;
定义的两种方式:
1、String s1="admin"; 存放在内存的常量池中;
2、String s2=new String("admin"); 存放在堆栈中;
例:
String s1="admin";
String s2="admin";
System.out.println(s1.hashCode());
System.out.println(s2.hashCode());
System.out.println(s1==s2);
String s3=new String("admin");
String s4=new String("admin");
System.out.println(s3.hashCode());
System.out.println(s4.hashCode());
System.out.println(s3==s4);
//输出结果:
92668751
92668751
true
92668751
92668751
false
三、注意:
(一)对String反复进行操作时,会在内存中开辟大量的空间,浪费内存;
(二)字符串中的常用方法:
1、equals()方法:比较两个字符串的值是否一致。一致返回true,不一致返回false;
2、equalsIgnoreCase()方法:不区分大小写比较两个字符串;
例:
String s="admin";
System.out.println(s.equals("Admin")); //false
System.out.println(s.equalsIgnoreCase("Admin")); //true
3、charAt(下标):得到指定下标的字符,下标从0开始;
例:
String s="admin";
System.out.println(s.charAt(2)); //输出结果:m
4、concat("字符串"):将两个字符串连接到一起;和“+”功能一样
例:
String s1="admin";
String s2=s1+"s";
System.out.println(s2);
System.out.println(s1.concat("s"));
//输出结果:
admins
admins
5、boolean endsWith("字符串"):返回布尔值,判断是否以参数字符串结束;
例:
String s="admin";
System.out.println(s.endsWith("in")); //true
6、boolean startsWith("字符串"):返回布尔值,判断是否以参数字符串开头;
例:
String s="admin";
System.out.println(s.startsWith("Ad")); //false
7、substring(开始下标,结束下标):截取字符串,如果只有开始下标,会一直截取到字符串的结尾;如果两个参数都有,结束下标位置上的字符不包含在截取范围内;即>=开始下标,<结束下标;
例:
String s="admin";
System.out.println(s.substring(1)); //dmin
System.out.println(s.substring(1,4)); //dmi
8、int indexOf("字符串"):得到参数字符串在总字符串中的第一次出现的位置,如果没有出现,返回-1;
例:
String s="adminin";
System.out.println(s.indexOf("in")); //3
System.out.println(s.indexOf("ins")); //-1
9、int lastIndexOf("字符串"):从后到前搜索位置,当前位置下标还是正向的,如果没有出现,返回-1
例:
String s="adminin";
System.out.println(s.lastIndexOf("in")); //5
System.out.println(s.lastIndexOf("ins")); //-1
10、boolean isEmpty():判断字符串是否有内容;
例:
String s="adminin";
System.out.println(s.isEmpty()); //false
11、int length():获得字符串中字符的个数;
例:
String s="adminin";
System.out.println(s.length()); //7
12、String replace("旧的字符串","新的字符串"):用新字符串替换所有的旧字符串;
例:
String s="adminin";
System.out.println(s.replace("in","on")); //admonon
13、String[] split("分割符"):将一个字符串以固定的分隔符拆分成字符串数组;
例:
String s="ad-m-in-in";
String[] strs=s.split("-");
System.out.println(Arrays.toString(strs)); //[ad, m, in, in]
四、StringBuffer和StringBuilder类
1、目的:解决反复对字符串操作开辟大量内存空间的问题;
2、StringBuffer和StringBuilder和String的区别:
String类中的内容不能改变, StringBuffer和StringBuilder中的内容可以改变;
例:
String s="admin";
String str=s+"new";
System.out.println(str);
System.out.println(s);
StringBuffer sBuffer=new StringBuffer(s);
System.out.println(sBuffer.toString());
System.out.println(sBuffer.append("on"));
System.out.println(sBuffer);
StringBuilder sBuilder=new StringBuilder(s);
System.out.println(sBuilder);
//输出结果:
adminnew
admin
admin
adminon
adminon
admin