class Example{
static int i=1;
static{
i++;
}
public static void main(String[] args){
increment(i,5);
display(i);
}
static void increment(int n,int m){
n+=m;
}
static void display(int n){
System.out.println(n);
}
static{
++i;
}
}
输出结果是:3。如果想让输出结果为8,应该怎么改?
java中参数能双向传递吗?
java中值传递,传递的是参数的地址吗?
static int i = 1;
static {
i++;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
i = increment(i, 5);
display(i);
}
static int increment(int n, int m) {
n += m;
return n;
}
static void display(int n) {
System.out.println(n);
}
static {
++i;
}
}
修改increment
static int increment(int n,int m){
return n+=m;
}
修改main
public static void main(String[] args) {
display(increment(i, 5));
}
public class Example {
static int i=1;
static {
i++;
}
public static void main(String[] args){
increment(5);
display(i);
}
static void increment(int m){
i+=m;
}
static void display(int n) {
System.out.println(n);
}
static {
++i;
}
}
static int increment(int n, int m) {
n += m;
return n;
}
返回n就可以了
java中参数不能双向传递,所有的参数实际上都是单向的,即值传递,
可以这样理解,基本变量传递的是数值本身,而引用变量传递的是地址,就像c或c++中的非指针参数与指针参数一样。
其实,java中的引用就是指针,它装的就是被引用对象的地址。
一楼的可以,也可以把increment(int n, int m)方法改成这样static int increment(int m) {
i += m;
}
java 中没听说过有双向传递,值传递,顾名思意,就是传的值,
display(i+5),估计不是lz的意思,呵呵
java中参数能双向传递吗?
你说的双向传递是不是改变你传递的对象的状态?告诉你,有时候可以,有时候不可以,这得具体情况具体分析,对于基本类型不可以
也就是你的例子,企图改变i的值,不行,对于类,就另当别论,她可以改变对象的状态(也就是属性值),但是不能改变原始对象指向的地址。
java中值传递,传递的是参数的地址吗?
除了基本类型,你说的对,传递的是地址的值
public class Test //执行顺序1-5
{
static int i=1;
static{ //执行顺序1
i++;
} public static void main(String[] args){ //执行顺序3
increment(i,5);
display(i);
} static void increment(int n,int m){ //执行顺序4
n+=m;
i=n;
} static void display(int n){ //执行顺序5
System.out.println(n);
} static{ // 执行顺序2
++i;
}}执行顺序:先执行两个static{..}静态游离块方法(这个名字本人是自定义),类中首尾各一个,
再执行main()方法中的increment()和display()方法.