Java的值传递和引用传递

这篇具有很好参考价值的文章主要介绍了Java的值传递和引用传递。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

值传递不会改变本身,引用传递(如果传递的值需要实例化到堆里)如果发生修改了会改变本身。

1.基本数据类型都是值传递

package com.example.basic;

public class Test {
    public static void main(String[] args) {
        int a=10;
        modify(a);
        System.out.printf("\n方法main中的a等于%d",a);输出:方法main中的a等于10
    }

    public static void modify(int a){
        a=20;
        System.out.printf("方法modify中的a等于%d",a);输出:方法modify中的a等于20
    }
}

 栈里保存的是变量和方法,堆里保存的是具体实例化的对象

原理:

两个a都保存在栈中,没有交集,互不影响,所以不会发生改变

Java的值传递和引用传递

 文章来源地址https://www.toymoban.com/news/detail-418857.html

 

2.如果传递的是一个需要实例化的对象,就是引用传递

package com.example.basic;

public class Test {
    public static void main(String[] args) {
        int[] a={1,2,3};
        modify(a);
        System.out.println("方法main中的a[1]:"+a[1]);输出:方法main中的a[1]:88
    }

    public static void modify(int[] a){
        a[1]=88;
        System.out.println("方法modify中的a[1]:"+a[1]);输出:方法modify中的a[1]:88
    }
}

原理

数组在栈里申明了,但具体数据是保存在堆中,栈中保存的是具体数据的内存引用地址,a和a[1]是同一个内存地址,所以了修改a[1]了,会改动到a。

Java的值传递和引用传递

面试时怎么回答:

值传递不会改变本身,基本数据类型都是值传递(String也这样,括号里不用说)。当发生引用传递,并且传递的值会实例化到JVM的堆中,如果在传递的过程中,改动到了传递的值,由于传递的值和本身,指向同一个内存地址,所以它本身会被修改到。

 

到了这里,关于Java的值传递和引用传递的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Java】引用传递?值传递?

    引用传递和值传递,从上学那会儿就开始强调的概念,不管你是计算机相关专业还是自学Java,一定听过这么一句话: 方法调用参数如果是对象,那就是引用传递,如果是基本数据类型,就是值传递。 比如:function(Object o)就是引用传递,function(int i)就是值传递。这两个概念似

    2024年02月05日
    浏览(27)
  • React三种通过属性传递组件本身的方法

    直接传递 JSX 创建好的元素 把要传递的组件作为 JSX 元素写在属性值里,然后在接收的组件里用 {this.props.xxx} 来渲染。这种方法的优点是直观和灵活,缺点是可能造成不必要的重复渲染。 直接传递 JSX 创建好的元素的方法会造成不必要的渲染,是因为每次父组件重新渲染时,

    2024年02月12日
    浏览(29)
  • java是值传递还是引用传递

    java是值传递;值传递是指在调用方法时将实际参数拷贝一份传递到方法中,这样在方法中如果对参数进行修改,将不会影响到实际参数;当传的是基本类型时,传的是值的拷贝,对拷贝变量的修改不影响原变量;当传的是引用类型时,传的是引用地址的拷贝,但是拷贝的地址

    2024年02月09日
    浏览(29)
  • Java 引用传递

    引用传递是 Java 中一个重要的概念,它与值传递不同,可以使得函数或方法可以修改传入的对象。本文将介绍 Java 中的引用传递,包括其定义、实现方式、与值传递的区别以及示例代码。 在 Java 中,变量可以存储基本类型的值或对象的引用。当一个对象的引用被传递给一个方

    2024年02月09日
    浏览(28)
  • JavaScript--改变 HTML 的值

    要改变 HTML 元素的值,可以使用以下方法: 1.使用元素节点的 innerText 属性来改变元素的文本内容。 例如:element.innerText = \\\'新的文本内容\\\'; 2.使用元素节点的 innerHTML 属性来改变元素的 HTML 内容。 例如:element.innerHTML = \\\'新的HTML内容\\\'; 3.使用元素节点的属性来改变 HTML 元素的属

    2024年02月16日
    浏览(30)
  • 改变C++中私有变量成员的值

    1、没有引用的情况: 实际上p.getQueue()返回的是一个副本,并不是返回成员变量 输出如下:   2、采用引用: 输出如下:  

    2024年02月12日
    浏览(33)
  • [脚本] 如果电脑不会自己看网氪,就应该用Python教会它

    很多时候需要看网课完成一下学习任务,但在某些平台在播完一条视频后并不会自动切播到下一条。所以这里简单用python写了一个脚本,利用PyAutoGui库自动完成一些如鼠标移动点击来快速切换的操作。 现已将代码上传至GitHub仓库(其中包含一些其它帮助 学习 的程序): http

    2024年02月04日
    浏览(32)
  • 如果还不会Elasticsearch这七个问题 那么你的Elasticsearch白学

    答:提高查询效率 答:elasticsearch-6.8.15binelasticsearch.bat 答:es图形化工具 更方便查询数据 答:elasticsearch-6.8.15headheadapache-tomcat-8.0.32binstartup.bat 答:1.没有配置跨域 2.没有开启elasticsearch 答:使用中文分词器 中文分词器就像一个词库 可以把一句话分成多个部分 只要词库里

    2023年04月08日
    浏览(34)
  • C#的值类型和引用类型

    在C#中,数据类型可以分为值类型(Value Types)和引用类型(Reference Types)两种。下面是对它们的详细解释和示例说明: 值类型(Value Types): 值类型变量直接包含它们的数据,存储在栈上。 值类型包括整数类型(如int、byte、char)、浮点类型(如float、double)、布尔类型(如

    2024年02月15日
    浏览(34)
  • 【C++】C++引用 (引用不会?详细解决引用诸多细节!)

    C++引用目录: 一、引用的概念 二、引用的特性 2.1引用在定义的时候必须初始化 2.2一个变量可以有多个引用 2.3引用一旦引用了一个实体,就不可以再引用其他实体 三、常引用(带const的引用) 3.1临时变量有常性不能修改(传值返回,隐式/强制类型转换时产生) 3.2指针/引用

    2024年02月09日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包