Java里的值传递与“引用传递”——一些想法
这两天在看Java的时候看到了方法中的值传递与引用传递,对于值传递我们都可以理解,非常的简单,但是对于引用传递,对于我们学过c++的人来说,那可不就来劲了吗,直接写一个函数来用“&”操作符直接改变参数的值——多么方便啊!! BUT!! Java没有引用传递,只有值传递
那么我们如何改变想要改变的数据呢? Java中有两种大的数据类型: 1、基本数据类型:包括数值类型(整数,浮点数),字符类型(char),逻辑类型(boolean) 2、引用数据类型:包括类,接口,数组 我们对于基本数据类型进行操作的话只能改变形参的值,并不能改变实参,而如果我们对于引用数据类型进行操作,则可以改变我们想要改变的数据(由于对地址直接进行了操作) 在Java里我们并不能像c++一样放荡不羁,如此简单的操作内存,对于Java来说,简便是要素,那么让人头疼的引用自然需要用其他的方法来代替—— 下面我来说两种最近看到的方法来对于我们想要让它本身改变的方法: 一、使用数组进行操作。 我们知道在c++中,数组是与指针其实是一样的,在Java中似乎保留了这样的特性,所以我们可以直接对于数组进行操作,从而将变化体现在实际上面。 代码如下: public class helloworld { public static void main(String[] args) { int[] arr = {1,2,3,4,5}; for(int i=0 ; i<5 ; i++) { System.out.print(arr[i]+" "); } System.out.println(); change(arr); for(int i=0 ; i<5 ; i++) { System.out.print(arr[i]+" "); } } public static void change(int arr[]) { for(int i=0; i<5; i++) { if(arr[i]%2 == 0) { arr[i]*=2; } } } } ? (原谅博主懒,同一个项目反反复复用了好多遍。。。。。哭辽orz) 当然还有我们无法使用数组的时候: 这时候还有一个比较麻烦的方式——创建对象。。。 二、使用对象进行操作。 由于对象是引用数据类型,我们可以直接改变数据的值,代码如下: ? class number{ private int a; private int b; public number(int num1,int num2) { this.a=num1; this.b=num2; } public void ShowNumber() { System.out.println("a = "+a+" b = "+b); } public void Swap() { int temp = this.a; this.a = this.b; this.b = temp; } } public class helloworld { public static void main(String[] args) { System.out.println("Input two numbers:"); Scanner sc1 = new Scanner(System.in); Scanner sc2 = new Scanner(System.in); number num = new number(sc1.nextInt(),sc2.nextInt()); num.ShowNumber(); num.Swap(); num.ShowNumber(); sc1.close(); sc2.close(); } } 这就是两种方法啦 在以后或许还会有新的方法加入叭~ 到时候也会继续更新的呢~ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |