java 中的String类型
(1)String类型的数据可以表示所有的数据类型。
(2)String中的字符串常量与一般的字符串:
String str0 = "hello";//字符串常量“hello”被预先放到了数据段的字符串常量池中
String str1 = "hello";//直接从常量池中寻找已有的字符串常量
String str2 = new String("hello");//new出一个新的字符串对象,在堆中
String str3 = new String("hello");//new出一个新的字符串对象,在堆中
System.out.println(str0 == str1);//打印true
System.out.println(str2 == str3);//打印false
System.out.println(str2.equals(str3));//打印true
//String类型对象(不管是常量池对象还是在堆中对象,其内容都不可变)
str3 = str2;
str2 = "world";
System.out.println(str3);//打印的依然是字符串hello
(3)对于String str2 = new String("hello");产生了两个字符串对象(hello与str),产生了三个对象(两个字符串对象,一个Class对象)。
(4)字符串中常用的方法:
//字符串比较equals、equalsIgnoreCase、compareTo、compareToIgnoreCase
System.out.println("hello".equals("hello"));//判断两个字符串是否相等-----打印true
System.out.println(“hello”.equalsIgnoreCase("HeLLo"));//忽略大小写比较相等---打印true
System.out.println("hello".compareTo("world"));//字符串比较:先依次比较第一个不同字母的Ascii码差值, //如果全部相同再比字符串长度----打印-15
System.out.println("hello".compareToIgnoreCase("helloworld"));
//字符串中与字符数组有关的方法
System.out.println(str0.length());//字符串长度
System.out.println(str0.charAt(0));//字符串第几个位置是什么字符
char[] strArray = str0.toCharArray();//把一个字符串转换为字符数组
for(char tmp : strArray){
System.out.println(tmp);
}
byte[] b = str0.getBytes();//把一个字符串转换为字节数组
System.out.println(str0.indexOf(‘l‘));//某个字符在字符串中首次出现的下标
System.out.println(str0.indexOf(‘l‘,3));//某个字符串从指定下标开始查看某个字符首次出现的下标。
System.out.println(str0.lastIndexOf(‘l‘));//某个字符在字符串中最后一次出现的下标
//字符串内容相关的方法
System.out.println(str0.toUpperCase());//转换为全大写
System.out.println(str0.toLowerCase());//转换为全小写
System.out.println(str0.startsWith("wor"));//判断字符串以什么开头
System.out.println(str0.endsWith("lo"));//判断字符串以什么结尾
System.out.println(str0.contains("ell"));//判断一个字符串是否在另一个字符串中--包含
System.out.println(str0.concat("world"));//将一个字符串加到另一个字符串尾部
System.out.println(str0.replace(‘l‘,‘L‘));//将字符串中的某个字符替换成新字符
System.out.println(str0.replace("l","fuck"));//将字符串中的某个子串替换成新的子串
System.out.println(str0.substring(1,3));//字符串按位置进行截取,前闭后开的区间
System.out.println(str0.substring(2));//字符串从这个位置开始截取。
//字符串中的trim()方法:
System.out.println(" hello world ".trim());//去掉前后的空格————-打印结果:hello world
//字符串中的split()方法:
String date = "2016-03-02";
String[] result = date.split("-");//split内的参数为正则表达式。单纯的?应该写为“\\?”
for(String a : result){
System.out.println(a);
}
运行结果:
2016
03
02
若date = “-03-02”;打印的结果为:
03
02
此时的result的长度依然是3,不过一个是空串。String a = "";(空串) String a = null;(为空)
所以判断字符串是否有效:if(str != null && !(str.trim().equals("")))----两个的位置还不能调换,否则会报空指针异常。