Java类的结构的内存解析

内存分为4部分:栈、堆、方法区、静态域

栈:对象的引用名,数组的引用名,局部变量(方法的形参,方法内定义的变量,代码块中定义的变量)

堆:new 出来的”东西”(包括类的成员变量)

方法区:(含字符串常量池)

静态域:静态的field

Java的参数传递机制

方法,必须有其所在类或对象调用才有意义。若方法含有参数:

形参:方法声明时的参数

实参:方法调用时实际传给形参的参数值

Java的实参值如何传入方法呢?

Java里方法的参数传递方式只有一种:值传递。

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

public class Test{public static void main(String[] args){int x = 5;change1(x);Integer obj = 5;change2(obj);System.out.println(x); // 5System.out.println(obj); //5}public static void change1(int x){x = 3; }public static void change2(Integer obj){obj = 3 ;}} 

无论是基本数据类型的参数传递还是引用数据类型的参数传递,都不会影响原来方法内的值。即将实际参数值的副本(复制品)传入方法内,而参数本身不受影响。

注意:但我们要注意的是,虽然是值传递,但是引用数据类型指向的是同一块地址,如下中所示,changeName()中的cat同样是可以操作“小白”这块地址空间的。

public class Main2 {public static void main(String args[]) {Cat cat = new Cat();cat.name="小白";System.out.println(cat.name); //小白changeName(cat);System.out.println(cat.name); //小黑}private static void changeName(Cat cat){cat.name="小黑";}
}class Cat{String name;
}

Java基础篇:什么是值传递相关推荐

  1. Java基础篇之返回值

    执行volume()方法确实将计算盒子体积的值返回到Box类,但这并不是最好的方法.例如,你的程序的其他部分如何知道一个盒子的体积,而不显示它的值?一个更好地实现volume()的方法是将它计算的盒子 ...

  2. 菜鸟学习笔记:Java基础篇4(面向对象三大特征)

    菜鸟学习笔记:Java面向对象篇中 继承 概念 方法重写(override) Object类 Super关键字 组合 final关键字补充 封装 访问控制符 多态 继承 概念 继续上一篇的例子: #m ...

  3. 菜鸟学习笔记:Java基础篇2(变量、运算符、流程控制语句、方法)

    菜鸟学习笔记:Java基础篇2 变量 基本概念 变量作用域 final关键字 运算符 算术运算符 比较运算符 逻辑运算符 位运算符 赋值运算符 条件运算符 运算符优先级 Java三种流程控制语句 顺序 ...

  4. Java基础篇--设计模式

    目录 前言 设计模式 创建型模式 单例模式 工厂方法模式 抽象工厂模式 建造者模式 原型模式 结构型模式 适配器模式 桥接模式 组合模式 装饰模式 外观模式 亨元模式 代理模式 行为型模式: 访问者模 ...

  5. Android面试题Java基础篇

    Android面试题Java基础篇,由本人整理汇总,后续将继续推出系列篇,如果喜欢请持续关注和推荐,更多精彩内容可以关注微信公众号(Android高级编程):android-tech 系列文章目录: ...

  6. 《Java 后端面试经》Java 基础篇

    <Java 后端面试经>专栏文章索引: <Java 后端面试经>Java 基础篇 <Java 后端面试经>Java EE 篇 <Java 后端面试经>数 ...

  7. Java基础篇--面向对象(Object Oriented)

    Java基础篇--面向对象(Object Oriented) 1. 面向对象概念 1.1 什么事面向对象 1.2 理解面向对象 1.3 面向对象的特点 1.4 面向对象开发设计特征 2. 类与对象 2 ...

  8. Java基础篇 学习笔记

    List item Java基础篇 学习笔记 java基础篇 第1章 计算机.程序和java概述 学习笔记 1.1什么是计算机 简单来说:计算机就是 ' 存储 ' 和 ' 处理 ' 数据的电子设备. ...

  9. 高频面试真题答案 -java后端 -java基础篇

    原贴 2022届秋招高频面试真题汇总,千题奉送!!!- 后端篇_笔经面经_牛客网 整理答案: 类加载机制 47 双亲委派机制 24 new一个对象的过程 4 java程序是如何运行起来的? 1 jvm ...

  10. Java基础篇:面向对象

    文章目录 学习面向对象内容的三条主线 面向过程(POP)与面向对象(OOP) 面向对象的思想概述 Java类和对象 创建Java自定义类 对象的创建和使用 对象的创建和使用:匿名对象 类的成员之一:属 ...

最新文章

  1. android zip解压缩
  2. Spring boot配置文件随机数
  3. Java的jvm原理和常识
  4. 通过iOS 9 SFSafariViewController提供完整的Web浏览体验
  5. bootstrap-table 列属性_Bootstrap Table 列参数columns使用总结
  6. python接口自动化登录_python 接口自动化--登录
  7. 如何修复Win11上的时钟不同步?Win11时钟不同步修复方法
  8. 抽取、转换和装载介绍(五)抽取数据
  9. Java知识系统回顾整理01基础01第一个程序05Eclipse中运行Java程序
  10. 小程序 ---- (存在登录功能不符合运营规范问题)
  11. axure element ui素材_web元件库 ElementUI元件库+后台模板页面+官网组件 pc元件库(兼容Axure9)...
  12. 数据分析师职业发展的几个层次,具体是什么做什么的
  13. 远程唤醒、WOL、Magic_Packet
  14. CRM 客户管理系统C#源码
  15. 起风了用计算机按,用计算机弹起风了要点那些键
  16. lesson2分频计数器设计
  17. 设备接入ONENET(2)STM32 + ESP8266(MQTT协议)接入云 :使用 OneNET 官方麒麟座开发板例程
  18. N 个Android 视频教程免费下载
  19. 创建Scrapy项目报错 UnicodeDecodeError: 'ascii' codec can't decode byte 0xa3 in position 19
  20. 如何有效实现软件的需求管理 - 5

热门文章

  1. Cesium绘制矩形
  2. faster R-CNN模型实现过程
  3. 网维科技联通巨星流量卡
  4. CCRC信息安全服务资质六大方向申请条件----安全集成,安全运维 风险评估 应急处理 软件安全 灾难备份与恢复
  5. android webview 自适应屏幕宽度,Android webview加载html自适应屏幕
  6. 四川消防设施操作员证有哪些条件和要求?
  7. 姚舜:会赚钱的人,更会休息
  8. php 视频设置参数设置,AnyChat SDK知识中心 - 如何设置合适的视频质量参数?
  9. Flink——Flink CheckPoint之两阶段提交协议(Two-Phase Commit Protocol)
  10. 灯ps后期素材素材推荐 精品 小众