1.基本类型和引用类型在内存中的保存

Java中只有按值传递 。不管是基本类型还是引用类型, 形参都是实参的一个拷贝 。基本类型copy值,引用类型copy引用--地址;

基本类型的变量保存原始值,即它代表的值就是数值本身;
        引用类型的变量保存引用值,"引用值"指向内存空间的地址,代表了某个对象的引用,而不是对象本身,对象本身存放在这个引用值所表示的地址的位置。


2.值传递,引用传递

  值传递:是指在调用方法时将实际参数复制一份传递到方法中,这样在方法中如对                                参数进行修改,将不会影响到实际参数本身。

引用传递:是指在调用方法时将实际参数的地址直接传递给方法体中,那么在方法体中                            对参数所进行的修改,将会印象到实际参数

3.执行

import com.company.desgine.SingleInstance;
import com.company.forTest.Student;import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;public class Main {public static void main(String[] args) {SingleInstance instance = SingleInstance.getInstance();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'}
Student{name='lisi'}
Student{name='lisi'}
Student{name='zhangsan'}
Student{name='lisi'}
Student{name='zhangsan'}
10
20
10
20

可以发现输出的结果:age值没有因为方法的操作而发生变化,无论是基本的int类型,还是                                     封装好的Integer类型,都没有改变实际的值。

而执行swp1方法后堆中构造方法所指的值进行了交换,执行完后a和b所指向的地址没有改变,改变的是a和b指向地址所指向的getNama发生了交换。

而三个swp方法无论是引用类型还是基本类型,在其执行期间创建了a和b的形参a‘和b’,他们的值或者所指地址确实发生了交换,但是在方法执行完后,a'和b'出栈,并没有影响到实际a和b的值。因此java是值传递无引用传递

swp1方法前:

                      栈                                                                     堆

swp1方法中:

swp1方法后:


第一个swp方法前:

第一个swp方法中:

第一个swp方法后:


解释java是值传递相关推荐

  1. 我要彻底给你讲清楚,Java就是值传递,不接受争辩的那种!

    作者 l Hollis 来源 l Java之道(ID:javaways) 关于Java中方法间的参数传递到底是怎样的.为什么很多人说Java只有值传递等问题,一直困惑着很多人,甚至我在面试的时候问过很 ...

  2. java引用传递106_(转载)java的值传递与引用传递

    1 说明:本文的适用对象为java初学者.如果有读者发现文章中有叙述不妥之处,请指正.2 3 今天在论坛上有人提了一个关于java中调用函数时有没有引用传递的问题,可谓是吵的不可开交.有人说java只 ...

  3. java对象引用出错_“Java有值传递和引用传递”为什么错了?

    前言 初学Java的时候,老师在课堂上说"Java有值传递和引用传递",但网上"Java只有值传递"的呼声很高. 本人在查找资料的过程中,在这两个说法之间反复横 ...

  4. 当面试官问我————Java是值传递还是引用传递?

    面试官:你好,你能说出下面个程序的执行结果吗? public class Test {public static void main(String[] args) {String name = &qu ...

  5. 这一次,彻底解决Java的值传递和引用传递

    本文旨在用最通俗的语言讲述最枯燥的基本知识 学过Java基础的人都知道:值传递和引用传递是初次接触Java时的一个难点,有时候记得了语法却记不得怎么实际运用,有时候会的了运用却解释不出原理,而且坊间讨 ...

  6. Java is Pass-by-Value, Dammit! 我靠!Java就是值传递!

    Java is Pass-by-Value, Dammit! 我靠!Java就是值传递! 原文地址:http://javadude.com/articles/passbyvalue.htm 关键点 形 ...

  7. Java 是值传递还是引用传递

    最近整理面试题,整理到值传递.引用传递,到网上搜了一圈,争议很大.带着一脸蒙圈,线上线下查了好多资料.最终有所收获,所以分享给大家,希望能对你有所帮助.     首先说下我的感受,这个题目出的很好,但 ...

  8. java包装和引用_回顾值传递和引用传递关于Java是值传递还是引用传递,网上有不一样的说法。1、基本类型或基本类型的包装类以及String是值传递,引用类型是引用传递。2...

    回顾值传递和引用传递 关于Java是值传递还是引用传递,网上有不一样的说法. 1.基本类型或基本类型的包装类以及String是值传递,引用类型是引用传递. 2.Java中只有值传递. 关于这个问题应该 ...

  9. java 引用传递_详解java的值传递、地址传递、引用传递

    详解java的值传递.地址传递.引用传递 一直来觉得对值传递和地址传递了解的很清楚,刚才在开源中国上看到一篇帖子介绍了java中的值传递和地址传递,看完后感受颇深.下边总结下以便更容易理解. 按照以前 ...

最新文章

  1. 分享一个SQLite 性能优化实例
  2. C 语言编程 — 结构体的数据类型转换
  3. 通过spark-submit,本地测试SparkStreaming
  4. AI Boot Camp 分享之 ML.NET 机器学习指南
  5. php 获取对象所有成员变量,PHP成员变量获取对比
  6. Mac Redis安装入门教程
  7. Java基础---方法的重载(overload)+ 优先向上匹配原则
  8. 多线程十 Timer
  9. 文字阴影(HTML、CSS)
  10. 个别省通知!研究生推迟开学不停学!毕业答辩可采用远程视频方式
  11. C#设计模式之十八状态模式(State Pattern)【行为型】
  12. FT5X06 如何应用在10寸电容屏
  13. python for a,b in c
  14. 读书笔记-Java完全自学手册
  15. 全迹科技化工人员定位系统助推裕泰化工集团安全管理智能升级
  16. mysql数据库工资管理系统_数据库课程设计—企业工资管理系统(java版完整代码).doc...
  17. 小程序云开发实战一:小程序扫一扫获取到图书ISBN码(图书条形码)
  18. 自定义ViewGroup——自定义布局
  19. HR模块-组织信息类型创建-PP01
  20. java 构造方法 继承_java-继承/构造方法?

热门文章

  1. 东北石油大学计算机与信息技术学院 马瑞民 联系方式,东北石油大学教学名师...
  2. 时区 java 巴黎_java中的时区陷阱 - iasuna
  3. 深圳3d可视化建模,数字孪生智慧工厂3D模型开发,智慧城市园区三维模型
  4. zabbix-4.0.3添加监控主机
  5. kline graph
  6. KBEngine服务端源码分析笔记
  7. (2)ARC之@property使用 转自易飞扬 内容有改动
  8. 27.蓝桥杯之漏掉的账目明细
  9. 在超算平台运行matlab程序
  10. instagram akp_如何从您的Instagram帐户中删除帖子