java中判断字符串一致的方法有两种,
* (1)调用equals()方法(区分大小写),比较的是值,equalsIgnoreCase()忽略大小写。
* (2)== 比较两个对象的引用是否相同。
* compareTo()判断字符串大小。返回的是数值。
* 字符串实例化方式:直接赋值方式,只开辟一块堆内存空间,而且保存的字符串内容可以自动入池,以供其他内容相同的字符串对象使用。
* 构造方法实例不能实现数据共享,开辟两块堆内存空间,字符串无法自动入池。但可以调用intern方法手工入池。
* 字符串的内容用户一旦定义,就表示开辟好了指定空间,那么字符串的内容就不能被改变。
* 字符串和字符数组可以相互转变,也可以实现从字符串中取出指定位置的字符。
* toCharArray()将字符串变为字符数组。String()将字符数组变成字符串,charAt返回指定索引上的字符内容。
* 字符串和字节数组也可以相互转变,与字符数组类似。
* 字符串的查找方法。课参考String类
* 字符串替换。replaceAll()替换所有,replaceFirst(),替换第一次出现字符字串。
* 字符串截取 subString()
* 字符产拆分:split();
*
* 其他方法:concat()字符串连接,intern()入池,length()字符串长度,isEmpty()判断字符串是否为空,
* toLowerCase()和toUpperCase()转换大小写。trim()去掉字符产前后空格。
*
* String s=new String(“java”);创建String对象的个数是两个对象,一个是“java”,一个是指向“java”的引用s
* 堆和栈的区别:
* 堆内容是栈内存的一个子集。
* 栈速度快,数据可共享,但其数据大小和生存期必须在运行前确定。
* 堆内容是运行时可动态分配的数据区,堆内存不共享,内容和大小运行时确定。
例:
public class StringEquals {
public static void main(String[] args) {
// TODO Auto-generated method stub
/* 比较部分 == 和 equals()方法。
String str1 = "Hello";
String str2 = new String("Hello");
String str3 = str2;
System.out.println(str1==str2);
System.out.println(str1==str3);
System.out.println(str3==str2);
System.out.println(str1.equals(str2));
System.out.println(str1.equals(str3));
System.out.println(str2.equals(str3));*/
/* 字符与字符数组 String() charAt() toCharArray()
String str = "hellojava";
char data[] = str.toCharArray();
for(int i =0;i<data.length;i++){
System.out.print(data[i]+",");
data[i]-=32;
}
System.out.println();
System.out.println("将字符数组变成字符串"+new String(data));
System.out.println("将部分字符数组变为字符串:"+new String(data,5,4));*/
String str = "**hello$$world##";
if(str.contains("hello")){
System.out.println("内容存在,已经找到");
}
if(str.indexOf("r")!=-1){
System.out.println("内容存在,字符串位置:"+str.indexOf("r"));
}
if(str.indexOf("o",6)!=-1){
System.out.println("内容存在,字符串位置:"+str.indexOf("o",6));
}
if(str.lastIndexOf("w",12)!=-1){
System.out.println("内容存在,字符串位置:"+str.lastIndexOf("w",12));
}
System.out.println(str.startsWith("**"));
System.out.println(str.startsWith("$$",7));
System.out.println(str.endsWith("##"));
}
}