怎么查看java中字符串的内存地址

Python016

怎么查看java中字符串的内存地址,第1张

java中不建议直接获取字符串内存地址,因为java不像c语言,获取内存地址是C语言的强项,java的弱项。但是java内存地址还是有一个应用场景,就是判断两个字符串内存地址是否相等来判断是否是同一个对象,用双等号“==”来比较的。参考代码如下:

public class Test01 {

/**

 * @param args

 */

public static void main(String[] args) {

// TODO Auto-generated method stub

String str1="abc"

String str2=new String("abc")

System.out.println(str1 == str2)//输出false

}

}

String s1 = new String("I am a student") 这里 你声明了一个引用 s1\x0d\x0a指向的是 new String("I am a student") 这个字符串\x0d\x0aString s4 = s1 这里 你又声明一个引用 指向s1的引用 也就是new String("I am a student")\x0d\x0aif(s1 == s4) {\x0d\x0aSystem.out.println("这两个字符串的内存位置相同")\x0d\x0a}\x0d\x0a上面还是相等的\x0d\x0a但是 s4 = s4.replace('a', 'A')\x0d\x0as4.replace('a', 'A') 生成了另一个 字符串 你要知道 String 是final类型的 所以\x0d\x0a这个时候 即原来已经开辟了内存空间的 new String("I am a student")是不可能改变内容了的\x0d\x0a这个时候 s4.replace('a', 'A') 就另开辟了一个内存空间\x0d\x0a 而这个时候 你的S4指向s4.replace('a', 'A')而原来的s1还是指向 new String("I am a student")\x0d\x0a他们肯定不一样的呢

Java中String提供的常用操作函数:char charAt(int index)。返回指定索引处的 char 值。

具体操作:

条件是:

(index = str1.indexOf(str2, index + 1)) >= 0 str1.indexOf(str2, index + 1) 查出str2从左到右第一次出现的位置, index = str1.indexOf(str2, index + 1) 将位置赋值给index变量。

下次循环开始时,因为str1.indexOf(str2, index + 1)第二个参数是index+1,所以从str2第一次出现的位置的下一位开始再找出匹配的字符串。

Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程 。