java的引用和c里面的指针有何不同?String直接赋值和String new出来的有何区别?

发布网友

我来回答

3个回答

热心网友

你好!你的问题太长了,而且,我没有抓住重点。
所以就你题目来进行部分解答,希望对你有所帮助。

java的引用和c里面的指针有何不同?
这个我也说不好,java的引用 想当于C的指针,是在JVM堆中的一个地址指向。
如果要说不同,的话,就是我们不能对JVM做什么,只能对它存储的值进行操作。
而C是可以对内存进行操作的。

String直接赋值和String new出来的有何区别?
String str = "hello";
String str = new String("hello");

这两个,在结果上没有区别。
细微的区别就是 java重写了“” 这个符号 "" 与 new String();这是等同的。
"hello" 是在 堆 中创建了一个对象,并直接赋值。
new String("hello"); 是创建了两个对象。
"hello" 创建 了第一个对象。 new String(str) 利用第一个对象的值,创建了第二个对象。

热心网友

String a="你好" //直接赋值    放在缓冲区了。你自己看看吧。不一样。今天看书看到的。
String b=new String("你好") //在堆中新建一个对象

热心网友

你说的东西过于复杂了,有些时候没必要这样子理解,给你一种简单的理解方法:


String a="你好";
String b=new String("你好");


String c = "Hello";

String d=new String("Hello")


你用 Eclipse 写一个简单的 Test 类,在 main 方法里面测试一下以下判断就可以了:


public static void main(String[] args) {
       boolean b1 = (a == b);
       boolean b2 = (a == c);
       boolean b3 = (a == d);
       boolean b4 = (b == c);
       boolean b4 = (b == d);
       
       boolean b5 = a.equals(b);
       boolean b6 = a.equals(c);
       boolean b7 = a.equals(d);
       boolean b8 = b.equals(c);
       boolean b9 = b.equals(d);
       
       System.out.println("b1 = " + b1);
       System.out.println("b2 = " + b2);
       System.out.println("b3 = " + b3);
       System.out.println("b4 = " + b4);
       System.out.println("b5 = " + b5);
       System.out.println("b6 = " + b6);
       System.out.println("b7 = " + b7);
       System.out.println("b8 = " + b8);
       System.out.println("b9 = " + b9);
}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com