java中的值传递

1.概述

引用类型中,java中全部都是值传递,传递对象里的值,而不会传递对象本身。

2.代码示例


public class Main {public static void main(String[] args) {Student a = new Student();Student b = new Student();a.setName("zhangsan");b.setName("lisi");System.out.println(a);System.out.println(b);swap1(a,b);System.out.println(a);System.out.println(b);swap(a,b);System.out.println(a);System.out.println(b);int c =10;int d=20;Integer e =10;Integer f=20;swap(c,d);System.out.println(c);System.out.println(d);swap(e,f);System.out.println(e);System.out.println(f);}private static void swap1(Student e, Student f) {String name = e.getName();e.setName(f.getName());f.setName(name);}private static void swap(Student e, Student f) {Student a= e;e=f;f=a;}private static void swap(int a, int b) {int c =a;a=b;b=c;}private static void swap(Integer a, Integer b) {Integer c =a;a=b;b=c;}
}

输出

Student{name='zhangsan', School='null'}
Student{name='lisi', School='null'}
Student{name='lisi', School='null'}
Student{name='zhangsan', School='null'}
Student{name='lisi', School='null'}
Student{name='zhangsan', School='null'}
10
20
10
20

3.代码逻辑

初始化状态:(左边栈,右边堆)

 

 

swap1方法执行:

出栈前:

 

 

由于新调用了swap方法,所以在栈中引入了新栈针,记作a’,b',为方法参数。a'为a的值,b'为b的值。方法执行完后,e、f、name属性出栈,a.getName()、b.getName()值发生改变。

 swap方法执行:

初始化状态:

出栈:

 

a‘指向的是e这个对象,也就是a指向的对象,当e和f指向的对象交换时,并不影响a和b,方法执行完后,a‘、e、f出栈,a和b仍然指向之前的对象,所以a和b不会改变。

整型int的swap方法调用:

int类型的数据是整型值,所以直接在栈里分配。

同理 调用新方法、引入栈针,再声明方法参数c‘、d‘。

调用完方法后,c‘、d‘会出栈,并不会对原始的c、d值产生影响,所以值不变。

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/518795.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux 环境搭建 Sentinel 控制台

文章目录一、搭建Sentinel 控制台1. Sentine文档2. 下载稳定版本3. 启动sentinel4. 登录 sentinel一、搭建Sentinel 控制台 1. Sentine文档 https://github.com/alibaba/Sentinel/wiki/控制台 2. 下载稳定版本 https://github.com/alibaba/Sentinel/releases wget https:/…

2019阿里巴巴技术面试题集锦(含答案)

为帮助开发者们提升面试技能、有机会入职阿里,云栖社区特别制作了这个专辑——阿里巴巴资深技术专家们结合多年的工作、面试经验总结提炼而成的面试真题这一次整体放出。并通过这些笔试真题开放阿里巴巴工作机会,让更多的开发者加入到阿里这个大平台。 …

揭秘!闲鱼拉新投放系统如何设计

背景 闲鱼目前已经是国内最大的闲置物品交易平台。随着闲鱼体量的增长和用户规模不断扩大,闲鱼App上的一个普通banner抑或是feeds中的一张普通的卡片,每天都可能被数以千万计的人看到。 为了更好地服务好广大的用户群体,更加个性化的内容推…

Springboot/Cloud集成Sentinel 和 入门实战

文章目录一、Springboot/Cloud集成Sentinel1. spring-cloud-alibaba依赖2. 引入 Sentinel starter3. 配置application.yml3. 接入限流埋点4. 访问接口5. sentinel控制台二、入门实战2.1. 流控管理2.2. 快速访问请求一、Springboot/Cloud集成Sentinel 1. spring-cloud-alibaba依…

Java-变量、常量

变量 public class Demo06 {// 类变量 staticstatic double salary 888;// 实例变量: 从属于对象; 如果不自行初始化,这个类型的默认值是 0 0.0// 布尔值 : 默认是false// 除了基本类型,其余都是nullString name;int age;public …

为什么kill进程后socket一直处于FIN_WAIT_1状态

本文介绍一个因为conntrack内核参数设置和iptables规则设置的原因导致TCP连接不能正常关闭(socket一直处于FIN_WAIT_1状态)的案例,并介绍conntrack相关代码在conntrack表项超时后对新报文的处理逻辑。 案例现象 问题的现象: ECS上有一个进程&#xff0…

Docker 开发环境的滑坡

作者 | Micah Adams责编 | 徐威龙封图| CSDN 下载于视觉中国最近,我构建了一个本地开发环境,该环境使用 Docker 进行一些关键的集成测试。 在我要完成这项工作时,我意识到在开始这项工作之前,我没有考虑到这么做的一些意义深远影响…

Springboot全局异常统一处理返回json

文章目录1. 创建一个枚举、封装异常的错误码等信息2. 创建一个自定义异常类继承RuntimeException。3. 自定义异常4. 抛出异常5. 测试1. 创建一个枚举、封装异常的错误码等信息 package com.gblfy.distributedlimiter.enums;public enum ServiceErrCode {REQ_PARAM_ERR(10001, …

TableStore: 海量结构化数据分层存储方案

前言 表格存储是阿里云自研分布式存储系统,可以用来存储海量结构化、半结构化的数据。表格存储支持高性能和容量型两种实例类型。高性能使用SSD的存储介质,针对读多写多的场景都有较好的访问延时。容量型使用的是SSD和SATA混合的存储介质。对写多的场景…

Java-基本运算符

运算符 public class Demo01 {public static void main(String[] args) {// 二元运算符// Ctrl D : 复制当前行到下一行int a 10;int b 20;int c 25;int d 25;System.out.println(ab);System.out.println(a-b);System.out.println(a*b);System.out.println(a/(double)b); …

蚂蚁金服终端实验室演进之路

0. 背景 作为国民级 App,支付宝客户端需要为亿级用户提供多元化的服务,因此应用的稳定性与可靠性面临巨大的挑战,需要不断地完善和优化。 今天,让我们站在服务质量的全方位监控与优化的角度,从蚂蚁终端实验室的演进之…

2020年边缘计算最新前沿报告:如何与核心云、5G、AI协同?如何打造新业态和部署运营?...

作者 | 唐汝林、陈琪责编 | 屠敏头图 | CSDN 下载自东方 IC数据来源 | 华信咨询设计研究院有限公司在数字经济的时代浪潮中,作为关键生产要素的数字技术的快速变革已成为新常态。正当人工智能开始崭露头角时,云计算的边缘化延伸趋势又成为了另一个新焦点…

Springboot/Cloud集成Sentinel进阶实战

文章目录一、自定义限流处理1. 自定义处理类2. 请求一次测试3. 重新配置流控规则4. 重新测试5. controller二、方法限流处理2.1. 创建接口2.2. 创建接口实现类2.3. 接口调用2.4. 请求2.5. 设置流控规则一、自定义限流处理 自定义限流文档 1. 自定义处理类 package com.gblfy…

若依SQL Server开发使用教程

1. sys_menu表中的将菜单ID修改为自动ID,解决不能增加菜单的问题,操作流程如下: 解决方案如下 菜单栏->工具->选项 点击设计器,去掉阻止保存要求更新创建表的更改选项,点确认既可以保存了 2 自动生成代码找不表的解决方案…

java基础 代理

1.代理是什么? 代理(Proxy)是一种设计模式。提供了对目标对象另外的访问方式,即通过代理对象访问目标对象。 有一个类我们无法更改,但我们希望在原有类上加上我们自己的逻辑(增强),这时就可以…

使用EMR Spark Relational Cache跨集群同步数据

背景 Relational Cache是EMR Spark支持的一个重要特性,主要通过对数据进行预组织和预计算加速数据分析,提供了类似传统数据仓库物化视图的功能。除了用于提升数据处理速度,Relational Cache还可以应用于其他很多场景,本文主要介绍…

异构计算黄金时代下,超强异构计算服务器FP5468G2将会带来哪些变革?

就在几年前,计算领域还是通用计算的天下。此一时,彼一时,随着计算密集型领域的快速崛起,面对移动互联网、大数据和云计算需求的爆炸式增长,传统的单一CPU方案越来越力不从心。另一方面,半导体技术在纵向提速…

基于External-DNS的多集群Ingress DNS实践

概要 External-DNS提供了编程方式管理Kubernetes Ingress资源的DNS的功能,方便用户从Ingress管理DNS解析记录。而在kubernetes federation v2环境中,使用External-DNS可以快速的管理多个联邦集群的Ingress DNS解析,降低用户的操作成本。下面…

在执行Dockerfile时出现Get https://registry-1.docker.io/v2/错误的解决方案

文章目录1. 登录阿里云2. 找到镜像加速3. 使用阿里云镜像1. 登录阿里云 没有就注册,不要文为什么要用阿里云镜像,没办法,就是快! https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 2. 找到镜像加速 复制内容: {&qu…

Java基础--反射

1.概念 什么是反射? (1)Java反射机制的核心是在程序运行时动态加载类并获取类的详细信息,从而操作类或对象的属性和方法。 本质是JVM得到class对象之后,再通过class对象进行反编译,从而获取对象的各种信息…