JAVA中的参数按值传递与按引用传递

看着有点恼火,你说为毛JAVA不用C或C++一样的指针传递呢?

C#和JAVA都号称取消了指针,但用户在编程时,不一样面对和学C/C++一样的变量及变量指针地址的问题么?

代码分三个:

 1 public class TempTest{
 2     private void test1(int a) {
 3         a++;
 4         System.out.println("The char A in test1 method value is :" + a);
 5     }
 6
 7     public static void main(String[] args) {
 8         TempTest t = new TempTest();
 9         int a = 3;
10         t.test1(a);
11         System.out.println("The char A in main method value is :" + a);
12     }
13 }
 1 public class TempTest1 {
 2     private void test1(A a) {
 3         a.age = 20;
 4         System.out.println("The age in test1 method value is :" + a.age);
 5     }
 6
 7     public static void main(String[] args) {
 8         TempTest1 t = new TempTest1();
 9         A a = new A();
10         a.age = 10;
11         t.test1(a);
12         System.out.println("The age in main method value is :" + a.age);
13     }
14 }
15 class A {
16     public int age = 0;
17 }

 

 1 public class TempTest2 {
 2     private void test2(A a) {
 3         a = new A();
 4         a.age = 20;
 5         System.out.println("The age in test2 method value is :" + a.age);
 6     }
 7
 8     public static void main(String[] args) {
 9         TempTest2 t = new TempTest2();
10         A a = new A();
11         a.age = 10;
12         t.test2(a);
13         System.out.println("The age in main method value is :" + a.age);
14     }
15 }
16 class A {
17     public int age = 0;
18 }

 

结果分三段:

时间: 2024-11-05 16:39:48

JAVA中的参数按值传递与按引用传递的相关文章

java泛型-java中方法参数和泛型参数有什么区别

问题描述 java中方法参数和泛型参数有什么区别 java中方法参数和泛型参数有什么区别 方法是可以省略参数数据类型的 泛型可以省略吗 解决方案 泛型就是泛滥的数据类型(我是这样理解的),用T表示,代表了所有的数据类型.比如一个函数传递的值是String,但是因为需求,还需要支持int型.在这种情况下可以考虑重写方法,也可以考虑用T(泛型)来代替String,表示什么类型都可以.封装的时候经常用到. 解决方案二: 不清楚,java方法的参数数据类型可以省略吗-_=我去补一下知识

mysql的列名可以在java中作为参数传入吗

问题描述 mysql的列名可以在java中作为参数传入吗 mysql的列名可以在java中作为参数传入吗? 我用了 但不行 因为是string 但有别的方法吗? 解决方案 能说清楚点吗,就你叙述的来说根本不知道你是想干什么 解决方案二: 明确告诉你可以,只有你想不到,没有java做不了 解决方案三: ResultSet有如下重载 java代码: String getString(String columnLabel) throws SQLException; 调用 String test = r

服务器-java中这个参数如何理解"goodsAction.action?type=type&gtype="

问题描述 java中这个参数如何理解"goodsAction.action?type=type&gtype=" java中这个参数如何理解"goodsAction.action?type=type&gtype=" 是服务器类目下的goodsAction类的action方法的什么什么吗 解决方案 goodsAction.action应该是struts2框架的一个叫goodsAction的控制器方法 后面的type gtype是参数 解决方案二: goo

Java参数按值传递?按引用传递

有时候在想,java在调用方法时候究竟是按值传递还是按引用传递,之前有人说是基本数据类型按值传递,引用类型按引用传递.一时间,似乎都有道理. 笔者在此不追究字眼上的辨别识字能力,把自己对这个问题的理解阐述一下,笔者不想说这是按值传递还是按引用传递,自己理解就好了吧,毕竟java会用才是王道. 先看一下下面的代码: package shb.java.testmemory;    public class TestMeo {        /**测试基本数据类型以及引用类型参数按值传递       

浅谈Java中的可变参数_java

可变参数 可变参数就是一个方法可以接收任意多个参数!例如:fun().fun(1).fun(1,1).fun(1,1,1).你可能认为这是方法重载,但这不是重载,你想想重载能重载多少个方法,而fun()方法是可以传递任何个数的参数,你能重载这么多个方法么? 2.1 定义可变参数方法 public voidfun(int- arr) {} 上面方法fun()的参数类型为int-,其中"-"不是省略号,而是定义参数类型的方式.参数arr就是可变参数类型.你可以把上面代码理解为:public

Java中函数参数传递和数据存储

值传递是将要传递的值作为一副本传递的..引用传递,传递的是引用对象的内存地址..例如: int i=4;  int j=i;   //相当于把4复制了一个副本赋给了j 输出结果是i=4 ,j=4 Cint *p,*p1;int j=5;p=j;    //这里是把j在内存当中的地址赋给了指针pp1=p;   //这里是把指针p中保存的地址(就是j的地址)赋给了指针p1 j=4;    //这里改变j的值 输出结果是  j=4  ,  *p=4  ,  *p1=4  //因为p和p1指向的都是j

Java中只有按值传递,没有按引用传递

最近在看Java核心技术的时候,遇到以前遇到的一个问题,就是Java除了值传递以外,到底有没有引用传递.网上众说纷纭,我看了具有代表性的10几篇文章,结合书中以及自己的举例,终于得出,Java只有按值传递,没有按引用传递.或者可以说为Java只有副本传递,为什么这么说呢?请看我的论证. 基本数据类型分析 12345678910 public static void main(String[] args) { /** 基本数据类型 **/ int a = 2; p.foo(a); // 传入基本数

在java中实现C#语法里的按引用传递参数的方法_java

在C#中,在次函数中调用时改变了其中的数值,主函数中也将发生改变 ref 关键字使参数按引用传递.其效果是,当控制权传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中.若要使用 ref 参数,则方法定义和调用方法都必须显式使用 ref 关键字 out 关键字会导致参数通过引用来传递.这与 ref 关键字类似,不同之处在于 ref 要求变量必须在传递之前进行初始化.若要使用 out 参数,方法定义和调用方法都必须显式使用 out 关键字. Java里面不像C#那样,Java只有对象类

java中final 变量作为方法的参数?怎么理解?见下面代码

问题描述 java中final 变量作为方法的参数?怎么理解?见下面代码 class NiMingLei { public static void main(String[] args) { Outer out= new Outer(); out.function(7); out.function(8); } } class Outer { static int y=4; void function(final int a) { class Inter { void method() { Sys