方法-java中怎么像C一样改变参形参的值呢?

问题描述

java中怎么像C一样改变参形参的值呢?

如何实现呢?基本类型又没有引用,只能通过设置get set 这类的方法来改变吗?
小白求指导

解决方案

改是能改,用反射,不过不建议。
类似http://blog.csdn.net/danielinbiti/article/details/44907625
还是改变C的写法习惯,要习惯基本类型形参不能变,反正不能变所有问题也能解决。

解决方案二:

包装成一个对象或者用数组传入

解决方案三:

java传递的参数有两种方式,普通类型如int,String等为传值,其他的如JAVA对象,数组,集合等均为传址。
传值方式只是把值传入参数,在方法里的任何动作与源无关,源的值不变;
传址方式是把源对象的地址传入方法,在方法里的动作都是直接操作源对象,所以能改变其值。

解决方案四:

能改变参数的属性值是因为传递的是一个对象的引用,此时,存在与方法中的是一个副本,这个副本(局部变量)和作为参数传进来的那个引用指向内存中相同的对象,故也可以修改它的属性值。(除非将副本指向其它的引用)

时间: 2024-10-07 13:08:08

方法-java中怎么像C一样改变参形参的值呢?的相关文章

JAVA中byte 、short为什么能赋常量的值,却不能赋变量的值

问题描述 JAVA中byte .short为什么能赋常量的值,却不能赋变量的值 byte b1= 1; byte b2 =2; byte b3 =b1+b2; 这种编译为什么会报错,求指导? 解决方案 道理很简单,两个byte相加的结果byte未必能装下.比如byte b1 = 129; byte b2 = 129; 你说 byte b = b1 + b2 = ? 解决方案二: b1和b2相加的结果值默认是int类型的,改为这样就正确了;byte b3 = (byte)(b1+b2); 解决方案

无-用java中的setRGB()函数处理像素时,像素值与处理结果一样,这是怎么回事?

问题描述 用java中的setRGB()函数处理像素时,像素值与处理结果一样,这是怎么回事? int rgb1=((allRGB[i][x+1][3]* 256 + allRGB[i][x+1][4]) * 256) + allRGB[i][x+1][5]; bimageIO[i].setRGB(allRGB[i][x+1][0]allRGB[i][x+1][1] rgb1);其中allRGB[i][x+1][0]图像的x坐标其中allRGB[i][x+1][1]图像的y坐标

方法-java中关于自己建的一个缓冲流中的问题

问题描述 java中关于自己建的一个缓冲流中的问题 1 import java.io.*; 2 //创建的这个类其实还是调用的FileReader的read方法,所以它会抛出IOException: 3 class MyBufferedReader{ 4 //属性(要想使用这个缓冲流就得先创建一个这个文件流,得把它弄成属性作为一个参数): 5 private FileReader fr; 6 public MyBufferedReader(FileReader fr){ 7 this.fr=fr

java阻塞方法-java中阻塞方法有accept和rievce还有其他什么阻塞方法吗

问题描述 java中阻塞方法有accept和rievce还有其他什么阻塞方法吗 java中阻塞方法有accept和rievce还有其他什么阻塞方法吗 如何判断一个方法是不是阻塞方法呢? 解决方案 涉及到流读取的都阻塞吧? 还有就是线程挂起的sleep和wait方法了.

java方法-java中decodeStream方法和openStream方法有什么区别和联系

问题描述 java中decodeStream方法和openStream方法有什么区别和联系 java中decodeStream方法和openStream方法有什么区别和联系 URL方法的参数是有哪几个参数组成的 解决方案 http://www.cnblogs.com/yourancao520/archive/2012/06/25/2561367.htmlhttp://blog.sina.com.cn/s/blog_588508f801010dh6.html

方法-java+中怎样声明一个含有ArrayVolume的接口

问题描述 java+中怎样声明一个含有ArrayVolume的接口 java+中怎样声明一个含有ArrayVolume的接口,含有array(),和volume()两个抽象方法,请给个例子 解决方案 public interface IArrayVolulmn{ public void array(); public void volume(); } 解决方案二: public interface Some { void array(); void volume(); }

java中map的循环遍历和map的获取值的办法

map的循环遍历方式   代码如下 复制代码 package com.sec.map;     import java.util.HashMap; import java.util.Iterator; import java.util.Map;     public class TestMap {         public static void main(String[] args) {                   Map<String, String> map = new Ha

java中static变量和static方法以及普通方法在那个内存中存储呢? 请高手指点,谢谢

问题描述 java中static变量和static方法以及普通方法在那个内存中存储呢? 请高手指点,谢谢 栈内存:局部变量和对象的引用变量: 堆内存:对象: 以上是我所知道的,那么static变量和static方法以及普通方法在那个内存中存储呢? 请高手指点,谢谢 解决方案 static和普通方法都存在堆内存中,堆内存有个永久区permgen,这里面会存类信息. 所以不断的加载类或jar包可能出现permgen oome的错误. static是在堆内存的数据区. 解决方案二: java stat

java中除了父类,子类可以有同名的方法

问题描述 java中除了父类,子类可以有同名的方法 java中除了父类,子类可以有同名的方法 非子类,父类,可以有同名的方法吗 b是a的父类,b是c的父类,那a是c的父类吗 解决方案 b是a的父类,b是c的父类,那a是c的父类吗 显然不是,a和c是"兄弟",或者说无关 非子类,父类,可以有同名的方法吗 可以. 解决方案二: 应该说是吧? C和A不是直接继承,在用的时候自然就不能直接用, 解决方案三: a和c没有继承关系,当然可以有同名的方法