首页 > 编程语言 >错题一:java中的值传递与引用传递

错题一:java中的值传递与引用传递

时间:2023-03-31 15:56:14浏览次数:39  
标签:java 形参 Value 15 传递 错题 20 实参

考察的知识点:在java中,原始数据类型的传递都是值传递,传递的是值的副本,形参改变对实参没有影响;引用传递传递的是引用类型数据(传递的是内存地址),如String、Map、类对象等,因此形参发生变化实参也会随之变化。

原始题目:

class Value{
    public int i=15;
}
public class Test{
    public static void main(String argv[]){
        Test t=new Test( );
        t.first( );
    }

public void first( ){
    int i=5;
    Value v=new Value( );
    v.i=25;
    second(v,i);
    System.out.println(v.i);
}

public void second(Value v,int i){
    i = 0;
    v.i = 20;
    Value val = new Value( );
    v = val;
    System.out.println(v.i+" "+i);
   }
}
  • A 15 0 20
  • B 15 0 15
  • C 20 0 20
  • D 0 15 20

答案是选A。

我当时的选择是B,当时想的是v不是指向val了吗,那它的i值不应该是15吗,怎么会是20?然而当我又仔细看了一下时,我瞬间就明白了。这里我犯错误的原因是形参v跟实参v同名导致我有些混乱了。当时把形参v当成了实参v,实际上形参v跟实参v指向的是同一个内存地址,当(形参)v.i=20时,实参v的i也变成了20,但是(形参)v = val,是让形参v指向了一个新的内存地址(val指向的内存地址),然而对实参v没有任何影响。

 

标签:java,形参,Value,15,传递,错题,20,实参
From: https://www.cnblogs.com/jmsstudy/p/17276466.html

相关文章

  • Mac 上启动nacos 出现异常java.lang.IllegalArgumentException: the length of secret
    这个异常提示是因为Nacos的配置中加密相关的参数未正确填写所导致的。我们只需要找到nacos/conf/application.properties文件,然后给nacos.core.auth.plugin.nacos.token.secret.key这个属性配置一个大于32位的随机字符串即可这个字符串大家可以在jwt的官网去生成:https://jwt.......
  • 用jvisualvm监控远程java程序
    jvisualvm是一个JDK自带的java性能监控程序。对于本地监控,直接启动jvisualvm,在它面板里面就可以看到所有在运行的java程序。但是如果要监控在别的机器上运行的java程序,那么运行的时候要多加几个参数(假设我们的类名字叫Hello):java-Dcom.sun.management.jmxremote-Dcom.sun.man......
  • JAVA封装Mongodb操作之一:MongoRepository
    MongoRepository与HibernateTemplete相似,提供一些基本的方法,实现的方法有findone(),save(),count(),findAll(),findAll(Pageable),delete(),deleteAll(),基本就这几个,但是: 与HibernateRepository类似,通过继承MongoRepository接口,我们可以非常方便地实现对一个对象的增删改查,要使用R......
  • Java中transient关键字
    一、概要介绍本文要介绍的是Java中的transient关键字,transient是短暂的意思。对于transient修饰的成员变量,在类的实例对象的序列化处理过程中会被忽略。因此,transient变量不会贯穿对象的序列化和反序列化,生命周期仅存于调用者的内存中而不会写到磁盘里进行持久化。1.序列化J......
  • 感受JavaLambda之美
    1Stream概述2Stream的创建3Stream的使用4Stream源码解读先贴上几个案例,水平高超的同学可以挑战一下:从员工集合中筛选出salary大于8000的员工,并放置到新的集合里。统计员工的最高薪资、平均薪资、薪资之和。将员工按薪资从高到低排序,同样薪资者年龄小者在前。将员......
  • java.sql.SQLException: sql injection violation, multi-statement not allow?已解决
    今天在使用mybatis-oracle时有需求需要同时更新多个字段,在跑完接口后我发现有如下异常sqlinjectionviolation,multi-statementnotallow原因是没有配置allowMultiQueries=truespringboot项目直接在配置文件写上如下配置即可还有用config类来解决的在配置类中添加如下两......
  • 网页编辑器粘贴图片自动上传到服务器(Java版)
    ​如何做到ueditor批量上传word图片?1、前端引用代码<!DOCTYPE html PUBLIC "-//W3C//DTDXHTML1.0Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head>......
  • Java中使用EasyExcel生成Excel文件
    使用Spring框架中的@ExcelProperty注解生成Excel文件需要借助于第三方库,比如EasyExcel或ApachePOI等。首先定义实体类,例如publicclassUser{@ExcelProperty(value="姓名",index=0)privateStringname;@ExcelProperty(value="年龄",index=1)priva......
  • MyBatis参数传递
    MyBatis接口方法中可以接受各种各样的参数,MyBatis底层对于这些参数进行不同的封装处理方式**单个参数:1.POJO类型:2.Map集合:3.Collection:4.List:5.Array:6.其他类型:*多个参数:封装为map集合map.put("arg0",参数......
  • java两个不同类的对象相同属性赋值
    一、外部工具包Java中有很多工具包可以用来实现对象属性复制,其中比较常用的有以下几个:ApacheCommonsBeanUtils:提供了一组简单易用的API,可以实现对象属性的复制、获取、设置等操作。SpringFrameworkBeanUtils:与ApacheCommonsBeanUtils类似,提供了一组API,可以实现对......