java当中只有对象是地址的引用,其它都是值 的引用。 例如: 1、当声明两个基本数据类型的变量String str="aa"和String ss="bb"时,在内存中就会为str和ss这两个变量各自开辟一个地址空间,值分别是aa和bb。 此时如果把ss赋给str,此时str的值和ss的值是相同的,虽然str的值改变了,但是str和ss在内存中还是两个不同的地址。2、如下: public class B { static String str="s"; } public class A { public static void main(String[] args) { B aa = new B(); B bb= new B(); System.out.println(aa.str); bb.str="ss"; System.out.println(aa.str); } } 通过上面的程序可以看出,第一个输出语句的结果和第二个输出语句的结果是截然不同的。这是应为对象是地址的引用。对象aa和bb在内存中指向的是同一个地址空间。
如果String aa = new String("AA");这样定义,aa就是一个引用我刚学没几天,希望高手指点
Java会自动为字符串常量生成一个String类的对象,所以可以直接初始化String对象,如:String s = “Hello world!”我看到上面的说法,这样的话应该都是对象了。
String bb = "BB";
“BB”这个字符串是放在字符串常量池中的,而不是放在栈里的。
例如:
1、当声明两个基本数据类型的变量String str="aa"和String ss="bb"时,在内存中就会为str和ss这两个变量各自开辟一个地址空间,值分别是aa和bb。
此时如果把ss赋给str,此时str的值和ss的值是相同的,虽然str的值改变了,但是str和ss在内存中还是两个不同的地址。2、如下:
public class B {
static String str="s";
}
public class A {
public static void main(String[] args) {
B aa = new B();
B bb= new B();
System.out.println(aa.str);
bb.str="ss";
System.out.println(aa.str);
}
}
通过上面的程序可以看出,第一个输出语句的结果和第二个输出语句的结果是截然不同的。这是应为对象是地址的引用。对象aa和bb在内存中指向的是同一个地址空间。
StringBuffer 是 引用类型,我记得 String 和 StringBuffer 是不同的
String 类中的对象是不可改变的.
值不能改变是因为String是final类
String 对一串字符进行操作。不可变类。
StringBuffer 也是对一串字符进行操作,但是可变类。
public static void stringReplace (String text) {
text = text.replace (‘j' , ‘i');
}
public static void bufferReplace (StringBuffer text) {
text = text.append (“C”)
}
public static void main (String args[]} (
String textString = new String (“java”);
StringBuffer text BufferString = new StringBuffer (“java”);
stringReplace (textString);
BufferReplace (textBuffer);
System.out.printIn (textString + textBuffer);
}
}
String 是传递引用的.请写出上面的结果,并解释一下!谢谢了.scjp的题目.