基本数据类型和引用数据类型的区别
※基本数据类型和引用数据类型的区别※
- 基本数据类型:byte、short、int、long、float、double、char、boolean
- 引用类型:类(class)、接口(interface)、数组(array)
基本类型保存的是值,引用类型保存的是对象的地址,所有基本类型赋值是按值传递(拷贝赋值),引用类型赋值是按引用传递。
一:基本类型和引用类型的不同之处
int num = 10;
String str = "hello";
如图所示,num是基本类型,值就直接保存在变量中。而str是引用类型,变量中保存的只是实际对象的地址。一般称这种变量为"引用",引用指向实际对象,实际对象中保存着内容。
二:赋值运算符(=)的作用
- 对于基本类型 num ,赋值运算符会直接改变变量的值,原来的值被覆盖掉。
- 对于引用类型 str,赋值运算符会改变引用中所保存的地址,原来的地址被覆盖掉。但是原来的对象不会被改变。如上图所示,"hello" 字符串对象没有被改变。(没有被任何引用所指向的对象是垃圾,会被垃圾回收器回收)
三:调用方法时发生了什么?参数传递基本上就是赋值操作
- 基本类型
void foo(int value){value = 100};
foo(num);
num没有被改变
- 没有提供改变自身方法的引用类型
void foo(String text){text = "Windows"};
foo(str);
str也没有被改变
- 提供了改变自身方法的引用类型
StringBuilder sb = new StringBuilder("iphone");
void foo(StringBuilder builder){builder.append("4");}
foo(sb);
sb被改变了,变成了“iphone4”
图解:
builder.append("4")
后:
- 提供了改变自身方法的引用类型,但是不使用,而是使用赋值运算符。
StringBuilder sb = new StringBuilder("iphone");
void foo(StringBuilder builder) { builder = new StringBuilder("ipad");}
foo(sb);
sb 没有被改变,还是 "iphone"
图解:
builder = new StringBuilder("ipad");
之后
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!