java值和地址值传递、字符串常量池的理解
#java值和地址值传递的理解:
- 基本数据类型和基本数据类型的封装类都是:值传递
* 形式参数的改变不会影响实际参数的改变(相当于将值复制一份传递给形参,自身没做任何改变)
- 引用数据类型都是 地址值传递
* 形式参数的改变会影响实际参数的改变(将地址值赋值给形参,形参就可以指向实参所指向的地址,
即形参也可以操作实参指向地址的数据了)
#注意:String是个特例(当作基本类型处理)
- 分析:从String类的源码可以知道,String相当于是char[]的封装类,即具有char类型的性质。
String str1="abc";//直接新建的字符串(引用值在常量池中)
String str2=new String("a");//通过new产生的字符串
// 以上两种方式都是属于值传递,而不是地址值传递
#常量池技术:
- 方便快捷的创建某些对象为出现的,常量池技术其实就是一个内存空间,
*
//就是在常量池中创建的,
String str="ab";
//在堆内存中创建的
String str=new String("ab");--2
其中第二句代码分为两种情况
1.常量池如果有"ab",就直接从常量池中获取"ab",就只需要创建一次对象
2.常量池若没有"ab",首先在常量池创建"ab",然后在堆内存再创建一次对象
#8基本类型的包装类和对象池
- Byte,Short,Integer,Long,Character,Boolean实现了常量池技术,
- Float,Double浮点型没有实现常量池技术。
- Byte,Short,Integer,Long,Character这5种包装类也只是在对应值
小于127时(存在缓存)才可以使用对象池。
最新文章
- Oracle学习笔记四 SQL命令(二):SQL操作语言类别
- Xamarin Error cannot find ‘aapt.exe’
- 史上最全的Linux常用命令
- nginx内置全局变量及含义
- Linux常用命令_(备份压缩)
- oracle数据字典-权限-角色
- 【Asp.Net MVC--资料汇总】杂七杂八
- Selenium Tutorial (1) - Starting with Selenium WebDriver
- #Leet Code# Gray Code
- Shortest Word Distance 解答
- Material风格的Quick组件,妈妈再也不用担心我的界面不好看了
- c语言 列出-终止系统进程
- HTML DOM 改变 HTML 内容
- eclipse中将一个项目作为library导入另一个项目中
- Java读取键盘输入
- string流
- 4556: [Tjoi2016&;Heoi2016]字符串
- The import XXX cannot be resolved
- Flyway学习笔记
- Console 窗口
热门文章
- asp.net 获取音视频时长 的方法
- 使用PyMongo访问需要认证的MongoDB
- js 去除字符串所有空格
- 嵌入式 探讨父子线程、进程终止顺序不同产生的结果_skdkjxy_新浪博客
- Linux学习笔记之一及虚拟机的安装
- HBase混布MapReduce集群学习记录
- Oracle与Sqlserver数据共享
- TypeScript学习笔记(一) - 环境搭建
- spring boot配置文件中 spring.mvc.static-path-pattern 配置项
- 【51nod】1559 车和矩形