标签:test1 传递 Main JAVA age 参数传递 main public
import java.util.Scanner; //值传递 (传递的是值的拷贝,也就是说传递后就互不相关了。) public class Main { void test1(int a) { a = 4; System.out.println("test1 a:" + a); } public static void main(String[] args) { Main ma = new Main(); int a = 2; ma.test1(a); System.out.println("main a: " + a); } } test1 a:4 main a: 2
import java.util.Scanner; //引用传递 (传递的引用的地址,也就是变量所对应的内存空间的地址。) //传递前和传递后都指向同一个引用(也就是同一个内存空间)。 class A { public int age = 0; } public class Main { void test1(A a) { a.age = 20; System.out.println("test1 age:" + a.age); } public static void main(String[] args) { Main ma = new Main(); A a = new A(); a.age = 10; ma.test1(a); System.out.println("main age: " + a.age); } } test1 age:20 main age: 20
import java.util.Scanner; class A { public int age = 0; } public class Main { void test1(A a) { a = new A(); a.age = 20; System.out.println("test1 age:" + a.age); } public static void main(String[] args) { Main ma = new Main(); A a = new A(); a.age = 10; ma.test1(a); System.out.println("main age: " + a.age); } } test1 age:20 main age: 10
内存分配示意图
test1 age:20 main age: 10
(1):“在Java里面参数传递都是按值传递”这句话的意思是:按值传递是传递的值的拷贝,按引用传递其实传递的是引用的地址值,所以统称按值传递。
(2):在Java里面只有基本类型和按照下面这种定义方式的String是按值传递,其它的都是按引用传递。就是直接使用双引号定义字符串方式:String str = “Java私塾”;
标签:test1,传递,Main,JAVA,age,参数传递,main,public 来源: https://www.cnblogs.com/tingtin/p/15706800.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。