当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?

2023-05-16

答:是值传递。Java语言的方法调用只支持参数的值传递。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的属性可以在被调用过程中被改变,但对对象引用的改变是不会影响到调用者的。C++和C#中可以通过传引用或传输出参数来改变传入的参数的值。在C#中可以编写如下所示的代码,但是在Java中却做不到。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
using System;
 
namespace CS01 {
 
     class Program {
         public static void swap(ref int x, ref int y) {
             int temp = x;
             x = y;
             y = temp;
         }
 
         public static void Main (string[] args) {
             int a = 5 , b = 10 ;
             swap (ref a, ref b);
             // a = 10, b = 5;
             Console.WriteLine ( "a = {0}, b = {1}" , a, b);
         }
     }
}

说明:Java中没有传引用实在是非常的不方便,这一点在Java 8中仍然没有得到改进,正是如此在Java编写的代码中才会出现大量的Wrapper类(将需要通过方法调用修改的引用置于一个Wrapper类中,再将Wrapper对象传入方法),这样的做法只会让代码变得臃肿,尤其是让从C和C++转型为Java程序员的开发者无法容忍。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? 的相关文章

  • 一个字符串展现多种字体、字号、字体大小(NSAttributedString)

    NSAttributedString叫做富文本 xff0c 是一种带有属性的字符串 xff0c 通过它可以轻松的在一个字符串中表现出多种字体 字号 字体大小等各不相同的风格 xff0c 还可以对段落进行格式化 以下是实现代码 xff1a U
  • mybatis源码浅析①

    创建SqlSessionFactory 读取配置文件 Class getResource String path 1 path不以 39 开头时 xff0c 默认是从此类所在的包下取资源 xff1b 2 path 以 39 开头时 xff0
  • linux日志查看技巧

    版权声明 xff1a 本文为博主原创文章 xff0c 遵循 CC 4 0 BY SA 版权协议 xff0c 转载请附上原文出处链接和本声明 本文链接 xff1a https blog csdn net zw235345721 article
  • Ubuntu杀手锏命令

    常用命令 Ubuntu GNOME快捷键 Ctrl 43 Alt 43 T xff08 打开GNOME终端窗口 xff09 Alt 43 F1 显示所有应用窗口 类似Windows中 Alt 43 Tab Alt 43 F2 运行程序快捷键
  • 线程之我见(一)

    目录 概念线程状态NEW xff08 初始状态 xff09 定义实例 RUNNABLE xff08 就绪 执行中状态 xff09 定义实例 BLOCKED xff08 阻塞状态 xff09 定义实例 概念 是操作系统能够进行运算调度的最小单
  • 深入分析java对象克隆

    目录 1 什么是 34 克隆 34 xff1f 2 浅克隆与深克隆3 实现克隆的方法 1 什么是 34 克隆 34 xff1f 由一个现有对象A xff0c 复制生成一个新的对象B的过程 B的初始值是由A对象确定的 拷贝对象返回的是一个新对
  • 经典书刊推荐

    剑指offer 大话设计模式 mysql必知必会 程序员面试金典 java并发编程实战 计算机操作系统第三版 计算机网络 深入理解java虚拟机 java编程思想 Java数据结构和算法中文第二版 Spring技术内幕 xff1a 深入解析
  • 深入理解java序列化和反序列化

    目录 1 定义2 方法3 自定义的序列化和反序列化策略4 为什么必须实现Serializable4 使用场景5 总结 1 定义 Java序列化是指把Java对象转换为字节序列的过程 xff1b Java反序列化是指把字节序列恢复为Java对
  • 秒杀系统之超买问题详解

    目录 1 场景2 方法3 总结 1 场景 假设现在库存只有一个商品了 xff0c 多线程下如何保证最后库存是0而不是负数 2 方法 MySQL中的排他锁 update goods set num span class token opera
  • java乐观锁之CAS原理解析

    目录 含义原理分析CPU原语CAS缺陷ABA问题循环时间长开销大只能对单个共享变量保证原子性操作 含义 CAS CompareAndSwap 即比较并替换 xff0c 实现并发算法时常用到的一种技术 CAS操作包含三个操作数 内存位置 预期
  • 常用词汇

    deutsch 发音 xff1a d t 含义 xff1a adj lt 德 gt 德国的 实例 You know Deutsch is so rational it emphases whole structure and logics
  • 什么是MybatisPlus

    简介 MybatisPlus是一个用来简化Mybatis的持久层框架 xff0c 与其具有类似作用的框架还有JPA tk mapper 特性 无侵入 xff1a 只做增强不做改变 xff0c 引入它不会对现有工程产生影响损耗小 xff1a
  • 策略模式

    简介 策略模式就是把各个平等的具体实现进行抽象 封装成为独立的算法类 xff0c 然后通过上下文和具体的算法类来进行交互 各个策略算法都是平等的 xff0c 地位是一样的 xff0c 正是由于各个算法的平等性 xff0c 所以它们才是可以相
  • elasticsearch(一)

    倒排索引 又叫反向索引 生活场景 背诵诗词 普通索引是 key gt 诗歌名称 xff1b value gt 诗歌内容 倒排索引是 key gt 诗歌内容里面的字 value gt 诗歌内容 索引压缩 索引量暴增 xff1a 倒排索引一首诗
  • 智慧定律

    二八定律 抓住主要矛盾 xff1a 用20 的付出赢得80 的收益 管理学界所熟知的二八法则 即80 的公司利润来自20 的重要客户 xff0c 其余20 的利润则来自80 的普通客户 经济学 社会上20 的人占有80 的社会财富
  • worktree简单使用

    作用 git worktree 从一个仓库中可以创建多个工作目录 xff0c 方便多开编辑器并行开发 使用 创建worktree git worktree add b bugfix 100 tmpworktree jghctaskbugfi
  • 2020-11-12

    GC 算法 Java中的垃圾回收是根据可达性分析算法来判断对象是否存活的 这个算法的基本思路就是通过一系列的称为 34 GC Roots 34 的对象作为起始点 xff0c 从这些节点开始向下搜索 xff0c 搜索所走过的路径称为引用链 x
  • 2020-11-12

    WeakReferenceMonitor 源码位置 org springframework util WeakReferenceMonitor 解析 span class token comment Start to monitor giv
  • 面试题集锦-多线程

    多线程 1 并行和并发有什么区别 xff1f 2 线程和进程的区别 xff1f 3 守护线程是什么 xff1f 4 创建线程有哪几种方式 xff1f 5 说一下 runnable 和 callable 有什么区别 xff1f 6 线程有哪些
  • 面试题集锦-javaWeb

    javaWeb 1 JSP 和 servlet 有什么区别 xff1f 2 JSP 有哪些内置对象 xff1f 作用分别是什么 xff1f 3 说一下 JSP 的 4 种作用域 xff1f 4 session 和 cookie 有什么区别

随机推荐

  • 面试题集锦-网络

    目录 1 http 响应码2 forward 和 redirect 的区别 xff1f 3 简述 tcp 和 udp的区别 xff1f 4 说一下 tcp 粘包是怎么产生的 xff1f 5 OSI 的七层模型都有哪些 xff1f 6 get
  • 面试题集锦-设计模式

    设计模式 1 说一下你熟悉的设计模式 xff1f 2 简单工厂和抽象工厂有什么区别 xff1f 1 说一下你熟悉的设计模式 xff1f 单例模式 xff1a 保证被创建一次 xff0c 节省系统开销 工厂模式 xff08 简单工厂 抽象工厂
  • 服务器配置ssh(centos7)

    服务器配置 centos7 span class hljs title vim etc ssh sshd config span span class hljs comment br 禁用root账户登录 xff0c 如果是用root用户登
  • 面试题集锦-Spring/SpringMVC

    Spring SpringMVC 1 为什么要使用 spring xff1f 2 解释一下什么是 aop xff1f 3 解释一下什么是 ioc xff1f 4 spring 有哪些主要模块 xff1f 5 spring 常用的注入方式有哪
  • 面试题集锦-SpringBoot

    spring boot 1 什么是 spring boot xff1f 2 为什么要用 spring boot xff1f 3 spring boot 核心配置文件是什么 xff1f 4 spring boot 配置文件有哪几种类型 xff
  • 面试题集锦-hibernate

    hibernate 1 什么是 ORM 框架 xff1f 2 为什么要使用 hibernate xff1f 3 hibernate 中如何在控制台查看打印的 SQL 语句 xff1f 4 hibernate 有几种查询方式 xff1f 5
  • 面试题集锦- spring cloud

    spring cloud 1 什么是 spring cloud xff1f 2 spring cloud 断路器的作用是什么 xff1f 3 spring cloud 的核心组件有哪些 xff1f 1 什么是 spring cloud xf
  • 面试题集锦-Mybatis

    Mybatis 1 MyBatis 中 和 的区别是什么 xff1f 2 MyBatis 有几种分页方式 xff1f 3 RowBounds 是一次性查询全部结果吗 xff1f 为什么 xff1f 4 MyBatis 逻辑分页和物理分页的区
  • 面试题集锦-RabbitMQ

    RabbitMQ 1 RabbitMQ 的使用场景有哪些 xff1f 2 RabbitMQ 有哪些重要的角色 xff1f 3 RabbitMQ 有哪些重要的组件 xff1f 4 RabbitMQ 中 vhost 的作用是什么 xff1f 5
  • 面试题集锦-kafka

    kafka 1 kafka 可以脱离 zookeeper 单独使用吗 xff1f 为什么 xff1f 2 kafka 有几种数据保留的策略 xff1f 3 kafka 同时设置了 7 天和 10G 清除数据 xff0c 到第五天的时候消息达
  • 面试题集锦-Zookeeper

    Zookeeper 1 zookeeper 是什么 xff1f 2 zookeeper 都有哪些功能 xff1f 3 zookeeper 有几种部署模式 xff1f 4 zookeeper 怎么保证主从节点的状态同步 xff1f 5 集群中
  • 面试题集锦-MySQL

    MySQL 模式主备切换方式方式 主从概述原理主节点从节点 方式 读写分离分库分表索引页页目录目录页B 43 树聚簇索引和非聚簇索引为什么InnoDB只有一个聚簇索引 xff0c 而不将所有索引都使用聚簇索引 xff1f 联合索引的最左前缀
  • 面试题集锦-Redis

    Redis 1 Redis 是什么 xff1f 都有哪些使用场景 xff1f 2 Redis 和 memcache 有什么区别 xff1f 3 Redis 为什么是单线程的 xff1f 4 什么是缓存穿透 xff1f 怎么解决 xff1f
  • Ubuntu18.04 qt5.14安装

    1 下载qt5 14 2 链接Index of archive qt 2 安装 打开终端 xff0c 进入安装包目录 xff0c 给安装包rwx权限 chmod 777 qt opensource linux x64 5 14 2 run
  • 面试题集锦-JVM

    JVM 1 说一下 JVM 的主要组成部分 xff1f 及其作用 xff1f 2 说一下 JVM 运行时数据区 xff1f 3 说一下堆栈的区别 xff1f 4 队列和栈是什么 xff1f 有什么区别 xff1f 5 什么是双亲委派模型 x
  • eclipse快捷键

    ctrl 43 t 查看接口实现类 ctrl 43 shif 43 t 快速查找某个类 包括jar中类 ctrl 43 shift 43 r 快速查找工作空间中项目的类
  • short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗?

    答 xff1a 对于short s1 61 1 s1 61 s1 43 1 由于1是int类型 xff0c 因此s1 43 1运算结果也是int 型 xff0c 需要强制转换类型才能赋值给short型 而short s1 61 1 s1 4
  • int和Integer有什么区别

    答 xff1a Java是一个近乎纯洁的面向对象编程语言 xff0c 但是为了编程的方便还是引入了基本数据类型 xff0c 但是为了能够将这些基本数据类型当成对象操作 xff0c Java为每一个基本数据类型都引入了对应的包装类型 xff0
  • Java 中 Equals和==的区别

    在谈论equals和 61 61 的区别前 xff0c 我们先简单介绍一下JVM中内存分配的问题 在JVM中 内存分为栈内存和堆内存 二者有什么区别呢 xff1f 当我们创建一个对象 xff08 new Object xff09 时 xff
  • 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?

    答 xff1a 是值传递 Java语言的方法调用只支持参数的值传递 当一个对象实例作为一个参数被传递到方法中时 xff0c 参数的值就是对该对象的引用 对象的属性可以在被调用过程中被改变 xff0c 但对对象引用的改变是不会影响到调用者的