Java字符串String相关

一、

在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);

则运行结果依次为:

附今天的思维导图:

原文地址:https://www.cnblogs.com/hanazawalove/p/5228722.html