Java重学疑问--string是引用数据类型吗?

答案是肯定的。⭐️8个基本类型是值类型,其他都是引用!!

在Java中,数组和String字符串都不是基本数据类型,它们被当作类来处理,是引用数据类型。
引用类型(reference type)指向一个对象不是原始值,指向对象的变量是引用变量。


在java里面除去基本数据类型的其它类型都是引用数据类型,自己定义的class类都是引用类型,可以像基本类型一样使用。
在java编程语言中,用类的一个类型声明的变量被指定为引用类型,这是因为它正在引用一个非原始类型,这对赋值具有重要的意义。如下代码:
int x = 5;
int y = x;
String s = "Hello";
String t = s;
四个变量被创建:两个原始类型 int 和两个引用类型String。x的值是5,而这个值被复制到y;x和y是两个独立的变量且其中任何一个的进一步的变化都不对另外一个构成影响。至于变量s和t,只有一个String对象存在,它包含了文本"Hello",s和t均引用这个单一个对象。如果将变量t重新定义为t="World";则新的对象World被创建,而t引用这个对象。

 

“在Java里面参数传递都是按值传递”这句话的意思是:按值传递是传递的值的拷贝,按引用传递其实传递的是引用的地址值,所以统称按值传递。

举例:

为什么String str="scce";
String str2="scce";
str==str2返回true而String str2=new String("scce"); str==str2返回false

String str="scce"; //这是在静态数据区创建了一个对象
String str2="scce"; //创建静态数据对象是先在静态数据区查,如果存在则不创建新的,保证静态数据区中的数据只有一份,

str==str2返回true //指向同一个对象
String str2=new String("scce"); str==str2返回false //在堆中创建一个对象,引用值当然不同

Stirng特殊在如果静态数据区中存在,那么不创建新的对象,而是指向这个对象。

你可能感兴趣的:(Java基础,java)