package Chapter2;public class CallStorage
{
static public int Storage(int x)
{
return x++;
}
public static void main(String[] args)
{
int x=0;
Storage(x);
System.out.print(x);
}}输出时0
目标是输出1
why?
tell me。thanks!
解决方案 »
- 求高手~~java中textarea的使用。如何通过循环获得信息后换行打印出新的数据。
- 关于SQL2005驱动的问题,我引了驱动为什么还有这个报错呢
- GregorianCalendar类的问题,可能是继承的问题。
- 好人进来帮帮忙~~~
- 悬赏百分解决httpunit处理下拉框的问题(问题解决立即结贴)
- 谁能帮我详细的解释下setXORMode该函数的用法啊?
- 系统时间问题,帮忙看一下啊
- 怎样获取一个网站的所有目录,好使的连接和不好使的连接都显示出来(当然用java)在线关注!!!!!
- 请教高手:在JAVA中如何建一个正则式对象?想要个例子。
- HTMLConverter 1.3 如何使用?
- 问个小io的问题
- 排序
{
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了;