赞
踩
int类型是不能做引用传递的,所以多个方法用到同一个数值就显得有些麻烦,而且也没有extren关键字。
如果在类变量中使用定义要使用的数值也是不可以的,因为类变量是根据类同存在的,所以如果类一直存在,多次调用这个类变量就会使数值一直叠加。所以也不可被使用。
1.新建对象类在对象中定义数值变量,这样可以在全局方法中传递对象以实现数值的引用。
2.使用数组进行传递。
- Integer[] errorCount = new Integer[1];
- errorCount[0] = 0;
3.未找到的更优解。
先看三个例子:
1.基本类型传递
- public class Test {
-
- public static void main(String[] args) {
-
- int num = 0 ;
-
- changeNum(num);
-
- System.out.println("num="+num);
-
- }
-
- private static void changeNum(int num) {
-
- num = 1;
-
- }
-
- }
结果:
num=0
2.封装类型传递(引用类型)
- public class Test {
-
- public static void main(String[] args) {
-
- Product p = new Product();
-
- p.setProName("before");
-
- p.setNum(0);
-
- changeProduct(p);
-
- System.out.println("p.proName="+p.getProName());
-
- System.out.println("p.num="+p.getNum());
-
- }
-
-
- private static void changeProduct(Product p) {
-
- p.setProName("after");
- p.setNum(1);
- }
- }
-
- class Product {
-
- private int num;
-
- private String proName;
-
- public int getNum() {
- return num;
- }
- public void setNum(int num) {
- this.num = num;
- }
- public String getProName() {
- return proName;
- }
-
- public void setProName(String proName) {
- this.proName = proName;
- }
-
- }
结果:
p.proName=after和p.num=1 。
3.String(String是一种特殊的引用类型所以在进行引用传递时,jvm进行了特殊处理,并不会改变原始值)
- public class Test {
- public static void main(String[] args) {
- String str = "ab";
- changeString(str);
- System.out.println("str="+str);
- }
- private static void changeString(String str) {
- str = "cd";
- }
- }
结果:
str=ab
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。