public static void main(String[] args) { int x=0; x = Storage(x); System.out.print(x); }
请将 x 设为 全局静态变量 试试 static int x
JAVA的参数传递都是值传递,值传递可以理解成拷贝一份,值本身不会被改变。
对于你编写的程序根本就不能实现你的意愿。1.对于前置++与后置++,我感觉你没有真正的理解。后置++是等语句执行之后,再对变量进行操作,而前置++则与其相反,所以要实现你的要求首先你应该将后置++改为前置++;2.你对函数调用掌握的不够扎实。在main函数中你虽然调用了Storage函数,但是对于返回来的值并没有进行保存起来待用。你可以试试下面的程序: package Chapter2; public class CallStorage { static public int Storage(int x) {
return ++x; } public static void main(String[] args) { int x=0;
稍改一下就可以了 public class CallStorage { static public int Storage(int x) { return ++x; } public static void main(String[] args) { int x = 0; int y=Storage(x); System.out.print(y); }}
在java中基本类型都是值传递,只传递值的拷贝,lz可以这样达到你的预期: static public int Storage(int x) {
return ++x; } public static void main(String[] args) { int x = 0; x = Storage(x); System.out.println(x); }
{
return x++;
}
这个方法是不能改变X的值的,LZ需要认真理解一下值传递与引用传递
public static void main(String[] args)
{
int x=0;
x = Storage(x);
System.out.print(x);
}
对于你编写的程序根本就不能实现你的意愿。1.对于前置++与后置++,我感觉你没有真正的理解。后置++是等语句执行之后,再对变量进行操作,而前置++则与其相反,所以要实现你的要求首先你应该将后置++改为前置++;2.你对函数调用掌握的不够扎实。在main函数中你虽然调用了Storage函数,但是对于返回来的值并没有进行保存起来待用。你可以试试下面的程序:
package Chapter2;
public class CallStorage
{
static public int Storage(int x)
{
return ++x;
}
public static void main(String[] args)
{
int x=0;
System.out.print(Storage(x)); }
}
先取X的值,
再做自加即X+1
++x
先做自加操作即X+1
再取X的值你想要实现输出1的话就应该写成++x
这里面传的x的类型是int,属于值类型。
你试试int[] x
(1)为被调用方法分配临时空间。
(2)将实参传值传给形参。
(3)流程跳到被调用方法执行
(4)执行完或者遇到return语句则流程返回主调方法,同时被调方法临时空间释放。
把分配图画一下你就明白了
和楼主犯得错误不是一样的吗?
LZ,你这么来一下:package Chapter2;public class CallStorage
{
static public int Storage(int x)
{
return x++;
System.out.println("方法内部的X:"+x);
}
public static void main(String[] args)
{
int x=0;
Storage(x);
System.out.print("主函数中的X:"+x);
}}//看看结果是否让你如愿?
{
int x=0;
x = Storage(x); //在这儿把方法返回值接收一下就能达到要求,否则执行完后仅是参数值副本
//变了,传过去的是参量x的值而不是参数x
System.out.print(x);
}
这完全就是错误的逻辑,JAVA中没有引用传递的概念,只有值传递(PS:听一位老师说的),原生数据类型传值之后,你是你,我是我,互不干扰
我也是最近看书才明白过来的!哈哈!
public class CallStorage {
static public int Storage(int x) { return ++x;
} public static void main(String[] args) {
int x = 0;
int y=Storage(x);
System.out.print(y);
}}
static public int Storage(int x)
{
return ++x;
} public static void main(String[] args)
{
int x = 0;
x = Storage(x);
System.out.println(x);
}
调用函数时storage(x)// 此时执行函数:函数中有一个局部变量x 内存又会分配一块内存 并将全局变量x中值传入这个局部变量中 此时局部变量 值为 0;
执行语句:return x++; 此时先将x=0返回 再执行 x++ 最后x=1;此时函数执行结束 ,局部变量分配的内存要消失,即局部变量x=1 消失,但是呢 全局变量 x=0 没有影响, 所以呢 最后输出为0;
输出就是1了;