一、
在Java内编写代码如下:
1 String str="字符串常量"; 2 String str1=new String("字符串常量");//构造方法 3 String str2=new String("字符串常量"); 4 System.out.println("str="+str); 5 System.out.println("str2="+str2); 6 System.out.println("str1="+str1); 7 System.out.println("str1和str2是否相等:"+(str1==str2)); 8 System.out.println("str和str1是否相等:"+(str==str1)); 9 System.out.println("str和str2是否相等:"+(str==str2));
则运行结果为:
发现尽管都是定义的"字符串常量",但是str、str1和str2之间并不相等。
继续在Java内编写代码如下:
1 String str="字符串常量"; 2 String str3="字符串常量"; 3 System.out.println("str和str3是否相等:"+(str==str3));
则运行结果为:
这是为什么呢?
解释:
"==" 这种运算,比较的是内存地址是否相等。
即str和str3引用的是同一个内存地址,而new是开辟新的内存空间,所以str、str1和str2之间并不相等
若想要str、str1和str2之间相等该如何编写?
在Java内编写代码如下:
1 String str1=new String("字符串常量"); 2 String str2=new String("字符串常量"); 3 System.out.println("str1和str2是否相同:"+str1.equals(str2));
则运行结果为:
由此可见需要使用:equals(变量)
二、
1 //字符串信息 2 String str="字符串常量字符串常量"; 3 System.out.println("字符串长度="+str.length()); 4 //从前往后查找字符串中子字符串的位置,返回找到之后的首字的索引值 5 System.out.println("常字的位置="+str.indexOf("常")); 6 System.out.println("常量的位置="+str.indexOf("常量")); 7 //查找不到,返回-1 8 System.out.println("我的位置="+str.indexOf("我")); 9 10 System.out.println("最后常字的位置="+str.lastIndexOf("常")); 11 12 //获取字符 13 char c1=str.charAt(0); //charAt(索引) 14 System.out.println("c1="+c1);
则运行结果依次为:
附今天的思维导图: