关于JAVA中包装类的是什么类型传递这个问题的笔记
背景知识:
如果参数类型是原始类型,那么传过来的就是这个参数的一个副本,也就是这个原始参数的值。如果在函数中改变了副本的值不会改变原始的值.
如果参数类型是引用类型,那么传过来的就是这个参数的引用,这个引用存放的是参数的对象地址。如果在函数中没有改变这个参数的引用地址,而是改变了地址中的 值,那么在函数内的改变会影响到传入的参数。
如果在函数中改变了参数的引用地址,如new一个,那么函数中的局部变量就指向了一个新的对象地址,此时传入的参数还是指向原来的地址,所以不会改变参数的值(如下图)。

/**
*
* @author ZHOUMI2
* 转自:http://blog.csdn.net/wuya814070935/article/details/49250773
*/ public class Test { public static void test1(Integer num){
num = new Integer(5);
} public static void test2(String str){
str.replace("1", "4");
} public static void main(String[] args) { Integer num = new Integer(1);
test1(num);
// 输出结果为1
System.out.println(num.intValue()); String str = new String("123");
test2(str);
// 输出结果为123
System.out.println(str);
} }
分析: 上述程序很容易让人误以为String类型和包装类型是值传递。
其实: String类型和包装类型都是对象类型,所以必然是引用传递。
但是由于String类和包装类都被设定成不可变的,没有提供value对应的setter方法,而且很多都是final的,我们无法改变其内容,所以导致我们看起来好像是值传递。
关于JAVA中包装类的是什么类型传递这个问题的笔记的更多相关文章
- 【转】java中byte数组与int类型的转换(两种方式)----不错
原文网址:http://blog.csdn.net/piaojun_pj/article/details/5903009 java中byte数组与int类型的转换,在网络编程中这个算法是最基本的算法, ...
- java中读取特殊文件的类型
java中读取特殊文件的类型: 第一种方法(字符拼接读取): public static String getType(String s){ String s1=s.substring(s.index ...
- Java中的基本类型和包装类型区别
首先看一下几个测试题,验证一下java中对基本类型和包装类型的理解,看看最后输出的答案对不对,答案在这篇博客中哦: // 第一题: 基本类型和包装类型 int a = 100; Integer b = ...
- Java中的两种异常类型及其区别?
Java中的两种异常类型是什么?他们有什么区别? Throwable包含了错误(Error)和异常(Excetion两类) Exception又包含了运行时异常(RuntimeException, 又 ...
- JAVA中如何获取变量的类型
JAVA中如何获取变量的类型? package xiya; public class Demo { public static void main(String[] args) { String ty ...
- java中如何理解:其他类型 + string 与 自增类型转换和赋值类型转换
java中如何理解:其他类型 + string 与 自增类型转换和赋值类型转换 一.字符串与其他类型连接 public class DemoString{ public static void mai ...
- Java中包装类型和基本类型的使用场景(什么时候使用包装类型)(转)
说明:最简单的理解,基本类型有默认值,而包装类型初始为null.然后再根据这两个特性进行分业务使用,在阿里巴巴的规范里所有的POJO类必须使用包装类型,而在本地变量推荐使用基本类型. Java语言提供 ...
- Java 中包装类wrapped type之间以及和primitive type的比较
注意, 包装类的实例之间比较, 是不能直接用 == 的 public static void main(String[] args) { // TODO Auto-generated method s ...
- 在java 中,数组与 List<T> 类型的相互转换
在java中,数组与List<T> 之前进行互相转换,转换方法可总结为以下几种: 一. 将 数组转换成List<T> 1. 使用 Collections 的addAll 方法 ...
随机推荐
- Linux下MySQL远程链接配置
配置步骤: 1).首先进入数据库,使用系统数据库mysql mysql -u root -p mysql 2).接着对系统数据库的root账户设置远程访问的密码,与本地的root访问密码并不冲突 gr ...
- input file accept类型
Valid Accept Types: For CSV files (.csv), use: <input type="file" accept=".csv&quo ...
- c#测试执行时间的方法
获取当前实例测量出来的总的运行时间 Stopwatch sp = new Stopwatch(); sp.Start(); //要测试的代码块 sp.Stop(); Console.WriteLine ...
- 如何获取STM32 MCU的唯一ID及应用(转)
源: 如何获取STM32 MCU的唯一ID
- mysql执行计划查看工具explain
在优化sql语句时,我们经常会用到explain语句,这里对explain语句做一个详细的总结说明. The EXPLAIN statement provides information about ...
- Greenplum5.16.0 安装教程
Greenplum5.16.0 安装教程 一.环境说明 1.1官方网站 Greenplum官方安装说明:https://gpdb.docs.pivotal.io/5160/install_guide/ ...
- jsxyhelu的GitHub使用方法
如果只是使用Clone不能称得上是完全使用了GitHub,必须完成PullRequest,而且最好是对大型.带自动构建项目进行PR(比如OpenCV),这样才叫完全掌握GitHub的使用方法,这里分享 ...
- Bugku-CTF之flag.php(点了login咋没反应)
Day2 flag.php(点了login咋没反应) 地址:http://123.206.87.240:8002/flagphp/
- USB通信基础知识
1 USB系统组成 主机:提供USB接口和接口管理功能的硬件.软件.固件的复合体.PC机或OTG设备,一个USB系统只能有一个主机 设备:1.集线器HUB:扩展主机接口,设备可以通过其接入主机 2. ...
- 牛客网数据库SQL实战(6-10)
6.查找所有员工入职时候的薪水情况,给出emp_no以及salary, 并按照emp_no进行逆序CREATE TABLE `employees` (`emp_no` int(11) NOT NULL ...