zxpnet网站 zxpnet网站
首页
前端
后端服务器
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

zxpnet

一个爱学习的java开发攻城狮
首页
前端
后端服务器
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 大后端课程视频归档
  • 南航面试题
  • 并发编程

  • 性能调优

  • java8语法

  • lombok

  • 日志

  • 工具类

  • spring

  • mybatis

  • springboot

  • redis

  • zookeeper

  • springcloud

  • dubbo

  • netty

  • springsecurity

  • mq消息中间件

  • shiro

  • beetle

  • 模板引擎

  • jpa

  • 数据结构与算法

  • 数据库知识与设计

  • gradle

  • maven

  • bus

  • 定时任务

  • docker

  • centos

  • 加解密

  • biz业务

  • pigx项目

  • 开源项目

  • 品达通用权限项目-黑马

  • 货币交易项目coin-尚学堂

  • php

  • backend
  • javaee
shollin
2021-07-15
目录

方法的参数传递机制

  • 面试题
  • 方法的参数传递机制

# 面试题

public class Exam4 {
	public static void main(String[] args) {
		int i = 1;
		String str = "hello";
		Integer num = 200;
		int[] arr = {1,2,3,4,5};
		MyData my = new MyData();
		
		change(i,str,num,arr,my);  // 传实参
		
		System.out.println("i = " + i); // 1
		System.out.println("str = " + str); // hello
		System.out.println("num = " + num); // 200
		System.out.println("arr = " + Arrays.toString(arr)); // 2,2,3,4,5
		System.out.println("my.a = " + my.a); // 11
	}
	
	//形参: 基本类型 j,只传值;  包装类型、String传地址,但是原对象不可变; 数组、对象传地址
	public static void change(int j, String s, Integer n, int[] a,MyData m){
		j += 1;
		s += "world";
		n += 1;
		a[0] += 1;
		m.a += 1;
	}
}
class MyData{
	int a = 10;
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

数据存放java虚拟机的不同位置, main()方法和 change()方法存在栈、 字符串值存在常量池、对象的值放在堆中。

方法的参数传递机制

# 方法的参数传递机制

①形参是基本数据类型

传递数据值

②实参是引用数据类型

传递地址值

特殊的类型:String、包装类等对象不可变性

image-20210716072636699 image-20210716073101998

不同变量的内存图

如代码Exam5. 运行main函数,在栈里面会放 main()方法,运行完再移出,运行时会加载类的初始化 <clinit>,加载类变量、执行静态代码块。 将 Exam5.class类放在方法区,里面存放类变量(static修饰), new Exam5()这个obj1实例时,会调实例的初始化方法<init>,加载成员变量、执行非静态代码块;将初始化的值保存在堆当中。 obj1.test() 方法也放在栈里面,运行完就移出。

最近更新
01
国际象棋
09-15
02
成语
09-15
03
自然拼读
09-15
更多文章>
Theme by Vdoing | Copyright © 2019-2023 zxpnet | 粤ICP备14079330号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式