java中的对象类型与基本数据类型的区别?
发布网友
发布时间:2022-04-22 22:08
我来回答
共1个回答
热心网友
时间:2023-10-05 08:09
基本数据类型在栈中进行分配,而对象类型在堆中进行分配。
所有方法的参数都是在传递引用而非本身的值(基本类型例外)。
对象之间的赋值只是传递引用,基本类型之间的赋值是创建新的拷贝。
例如:
String
a
=
"china";
String
b
=a;
则a、b都指向常量池的"china"。
String
a
=
new
String("china");
String
b
=a;
则a、b都指向堆中的"china"。
String
a
=
new
String("china");
String
b
=a;
a
=
a.substring(0,1);
则b指向栈中的"china",a指向新的对象"c"。
对于基本类型,“==”和“!=”是在比较值。而对于对象来说,“==”和“!=”是在比较两个引用是否相同。
使用equals()方法有一点需要注意:equals()方法的默认行为是比较引用。如果是你自己写的类,你应该为它重写equals()来比较对象的内容。大多数Java类库都实现了比较对象内容的equals()方法。
字符串操作符的特性:如果表达式以一个字符串起头,那么后面的操作数都会被自动转换为字符串型。所以有时候看到一个空的String后面+一个基本类型变量,这是一种简单执行字符串转换的方式。