一个Java程序题困扰了我好久,怎么想也没想明白到底是怎么回事,请各位Java大神出手帮帮忙看看~谢谢了!
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个Java程序题困扰了我好久,怎么想也没想明白到底是怎么回事,请各位Java大神出手帮帮忙看看~谢谢了!相关的知识,希望对你有一定的参考价值。
//我是一个java新手,请大神指教一下,呵呵~
class Value
public int i = 15;
public class TestValue
public static void main(String argv[])
TestValue t = new TestValue();
t.first();
public void first()
int i = 5;
Value v = new Value();
v.i = 25;
second(v, i);
System.out.println(v.i);
public void second(Value v, int i)
i = 0;
v.i = 20;
Value val = new Value();
v = val;
System.out.println(v.i + " " + i);
public static void main(string argv[])就是主方法
所有的代码都是从这里开始运行的
TestValue t = new TestValue();
这是声明一个变量t 他的类型是TestValue
然后你再去看TestValue这个类
有两个方法一个是first() 一个是second(value v,int i);
主方法的第三句话是t.first();
就是说它调用了第一个方法first()
再看first()方法
int i=5;声明一个int类型的i值为5,
Value v = new Value();声明一个Value类型的v
v.i=25;为Value类型里面的plublic int i = 15这个i赋值 i是public 公有的所有v.i = 25;是起作用的
所以v.i的值就是25,
second(v,i);这里调用了second(Value v,int i)方法
把v传到second方法里面
i = 0; i赋值为0
v.i = 20; 把对象v里面的i赋值为20
Value val = new Value(); 声明一个Value类型的val
v = val; 把val的赋值给v
System.out.println(v.i + " " + i);打印val.i和的i
应该是打印15和0
最后在走first()方法的最后一段代码
System.out.println(v.i);
v.i前面赋值为25后来赋值为20 然后把val赋值给v
这里前两步骤是值传递 因为i是int类型的
val赋值给v是引用传递所以没有赋值,只是改变它的指向地址。
所以最后打印的结果是
15 0
20追问
second(v, i);
System.out.println(v.i);
v.i = 20;
System.out.println(v.i + " " + i);
这几个v.i为什么他的值不一样呢。这几个v.i把我这个基础不怎么扎实的我搞糊涂了。
麻烦你指教一下谢谢
我这是教给你如何打渔啊。 参考技术B 你分清楚什么是局部变量和全局变量,,,也就是变量的作用域,还有参数的传递不会改变值的!
Noip2017 提高组初赛 游(baozha)记
本着破财消灾的原则,今天中午我把慈善做完了~~还挺有用
第一题懵逼,不过听说跟我们没有什么关系,于是选2021年GG
然后算日期,算出周日,然后觉得开国大典这种重要的事情不是周一就是周日,没检查,1.5分
问题求解第二题看出转对偶图最短路,然后自己画了一下大概是8种,漏了
阅读第二题小学数学,结果行列搞反了看了半天。
第四题是啥都不知道,第一个对了第二个蒙对了第三个蒙错了。
填成第一题想也没想写了cnt=0
差不多1.5+1.5+3+3+2=11吧。
本来以为gg的结果还行,应该能进的吧
以上是关于一个Java程序题困扰了我好久,怎么想也没想明白到底是怎么回事,请各位Java大神出手帮帮忙看看~谢谢了!的主要内容,如果未能解决你的问题,请参考以下文章