从概念上讲,Java字符串就是Unicode字符序列。Java没有内置的字符串类型,而是在标准Java类库中提供了一个预定义类,很自然的叫做String,每个双引号括起来的字符串都是String类的一个实例。
例如:
String e="";
String greeting="Hello";
一、下面通过代码展示Java中对于字符串操作的常用方法的实现:
String name="大拉崩坝般地背的普多";
String temp="大中华";
//截取固定参数下标位置以后的字符串
System.out.println(name.substring(4));//般地背的普多
//charAt():返回指定参数位置的值
System.out.println(name.charAt(3));//呗
//compare()方法按照字典顺序实现两个值或变量的比较,结果返回一个int类型的值。
System.out.println(name.compareTo("temp"));//22707
//equal()判断两个变量或值在数值方面是否相等,一般变量放在括号里面以防止发生位置的错误。
System.out.println("大拉崩坝般地背的普多".equals(name));//true
//equalsIgnoreCase():如果两个字符串相等(忽略大小写)返回true
System.out.println("大拉崩坝般地背的普多".equalsIgnoreCase(name));//true
//indexOf():实现返回第一个子串参数的开始位置,按索引从头开始
System.out.println(name.indexOf("地"));//5
//indexOf(string,int):实现返回第一个子串参数的开始位置,按索引参数位置开始
System.out.println(name.indexOf("地", 4));//5
//查找固定位置的代码点,如果没有找到,返回-1
System.out.println(name.indexOf(3));//-1
//返回字符串的长度
System.out.println(name.length());//10
//判断字符串是否以参数开始
System.out.println(name.startsWith("大"));//true
//判断字符串是否以参数结束
System.out.println(name.endsWith("多"));//true
String text=" zzzAAzzzA a asas";
//实现字符串中子串的替换
System.out.println(text.replace("A", "S"));// zzzSSzzzS a asas
//清空字符串开头和结尾的空格
System.out.println(text.trim());
/*
* 创建一个空的字符串构建器,并向其中添加相应的字符串。
* 采用字符串连接的方式效率很低,而且会造成内存空间的浪费
* */
StringBuilder sb =new StringBuilder();
sb.append("zz");
sb.append(2);
sb.append("dasdas");
sb.append("3243");
System.out.println(sb.toString());
sb.setCharAt(1, 'a');
System.out.println(sb);
//在指定参数位置插入字串
System.out.println(sb.insert(5, "你好"));
//格式化输出,在Java编程中最常用于对时间的输出。
System.out.printf("%tA",new Date());
String str=String.format("%tA",new Date());
System.out.println(str);
二、Java中的空串与Null串
空串""是长度为0的字符串,声明空串的同时,在内存中开辟空间用于存放该字符串。Null串并没有开辟相应的空间。可以使用以下方法判断字符串是否为空:
public boolean isNullOrEmpty(String str) {
if(str != null && str.length() != 0) {//顺序不允许颠倒,防止产生预期之外的错误!
return false;
}else if( str != null && str.length() == 0 ){
return true;
}else {
return true;
}
三、检测字符串是否相等
在实际情况下,在Java虚拟机中只有字符串常量是共享的,而+或substring等操作产生的结果是不共享的。因此,千万不要使用==运算符测试字符串的相等性,以免在程序中出现糟糕的错误。
各种字符串存放在存储池中,字符串变量存放在存储池中的相应位置,如果要复制一个字符串变量,原始字符串与复制的字符串共享相同的字符。==运算符在比较两个字符串相等性时,是比较两个字符串的存储地址是否相同,而equal()方法是比较两个字符串的值是否相等。