java中为什么x的输出为20 而 i 的输出为10

问题描述

java中为什么x的输出为20 而 i 的输出为10

public class Pass {
static int j=20;
public static void main(String []args){
int i=10;
Pass p=new Pass();
p.method(i);
System.out.println(i);
System.out.println(j);

}
public void method(int x){
    x=x*2;
    j=j*2;
    System.out.println(x);
}

}

解决方案

很简单,因为java中int传递的是值,改变函数内的x,不会实际改变i

解决方案二:

你的问题更进一步的回答可以看
http://ask.csdn.net/questions/172456
和你的问题本质上一样

解决方案三:

p.method(i); 此时传人的i=10; 这是执行方法的结果为20;
i不变i=10,此时继续执行输出语句i=10, j=20

解决方案四:

类似C语言的值传递和地址传递吧,

解决方案五:

在java中有两种传递方式,一种是按引用传递,一种是按值传递。
在调用函数的时候,你的i和x是按值传递的,就是说,x创建了1个i的副本,复制的是地址!
x的变化跟i没有关系。

而按引用传递是复制指针,而不是地址!如果x的地址变了,那么i和x的指针都会指向新的同一个地址,则x和i值还是一样。

在java中调用函数的时候,参数都是按值传递的,只要记住这点以后就不会犯错了!

解决方案六:

i=10传给x,x=10*2=20,所以输出20,i此时还是10,直接输出10

解决方案七:

对,传递的是一个值,不会改变原来地址所存储的值

解决方案八:

java中的传递,是传递的拷贝
i那个地址块存的是数值10,而不是地址,拷贝后的值传递给x也就是x等于10
所以方法中打印的x是20,但i依然是10
如果传递的参数是对象类型的话,那么传递的是对象的地址的拷贝

解决方案九:

这个问题你应该说说哪里不懂,你的思路咋样地,这个确实无法给你解释,怎么分析怎么那样的值啊。

解决方案十:

Java参数传递分为值传递和引用传递,基本数据类型传递的是数值的拷贝。JVM运行Java代码时,是以栈这种数据结构完成方法调用的,每个方法都是一个栈帧,有自己操作数栈,它操作的形参的初始值是调用方法传递过来的,只是复制了一份存放在自己的操作数栈中。main方法i的值和method方法中形参的值i是不同的存储区域。所以method方法修改i之后对main方法没有影响。即:数值传递不会改变原来参数的值。

时间: 2024-11-02 00:33:27

java中为什么x的输出为20 而 i 的输出为10的相关文章

输入输出-Java中如何将字符串转化为字节数组,并输出

问题描述 Java中如何将字符串转化为字节数组,并输出 Java中如何将字符串转化为字节数组,并输出,比如得到的输入为 :String str="我是好学生,My name is Studentdaiwei!" 转化为字节数组中,并输出 又如何将字节数组转化为比特数组并输出 解决方案 这个涉及编码的问题,不同的编码输出的字节不同.用getByteshttp://blog.csdn.net/zheng0518/article/details/11532815 解决方案二: String

JAVA中对存储过程的调用方法(二) 带输出参数的

二.带输出参数的 1:返回int -------------------------带输出参数的---------------- alter procedure getsum @n int =0, @result int output as declare @sum int declare @i int set @sum=0 set @i=0 while @i<=@n begin set @sum=@sum+@i set @i=@i+1 end set @result=@sum --------

Java 中 I/O 进制详解及I/O流小结

在Java世界里,99%的工作都是处理这高层.那么二进制,字节码这些会在哪里用到呢? 自问自答:在 跨平台 的时候,就凸显神功了.比如说 文件读写 , 数据通信 ,还有Java编译后的 字节码文件 .下面会有个数据通信的例子哦. Java对对象实现 Serializablle 接口,就可以将其转化为一系列 字节 ,而在通信中,不必要关系数据如何在不同机器表示和字节的顺序.这里泥瓦匠对 Serializablle 接口,不做详细讲解,以后单独详解. Java进制转换 首先认识下Java中的 数据类

JAVA中对存储过程的调用方法(一) 不带输出参数的

一.不带输出参数的 ---------------不带输出参数的---------------------------------- create procedure getsum @n int =0<--此处为参数--> as declare @sum int<--定义变量--> declare @i int set @sum=0 set @i=0 while @i<=@n begin set @sum=@sum+@i set @i=@i+1 end print 'the

mysql-新手求教 java中使用MYsql后查询结果怎么输出到别的地方

问题描述 新手求教 java中使用MYsql后查询结果怎么输出到别的地方 按钮点击事件做完了能连接到数据库可惜输入条件后点击查询只在Eclipse中显示数据库连接成功 而查询并没有显示查询结果 求解 解决方案 在后台找执行的sql,在 数据库中查询,看有没有数据 解决方案二: 参考 http://zhidao.baidu.com/question/559756306057754404.html 解决方案三: 数据库查询结果,可以直接用System.out.print打印到控制台界面: 也可以创建

对java中递归问题的输出不理解,求大神解答!谢谢

问题描述 对java中递归问题的输出不理解,求大神解答!谢谢 对于这一段代码我能够理解,压栈然后出栈就是6,5,4 package recursion; public class testRecursion { public static void main(String[] args) { int num=3; recursion(num); } private static void recursion(int n){ n++; if(n<7){ recursion(n); System.o

用java从文件中读取utf-8编码,并将其编码后输出对应的字符

问题描述 用java从文件中读取utf-8编码,并将其编码后输出对应的字符 文本文件(.txt)中有一行utf-8编码,例如:u4E2Du534Eu4EBAu6C11u5171u548Cu56FD,怎么样才能利用java将其从文件中读取出来以后进行编码,并将其对应的字符输出来? 解决方案 楼主搞混了UTF-8和Unicode编码了,你的问题中给出的是Unicode编码例子,Unicode的是以反斜杠+u开头的,而UTF-8是以%开头的. UTF-8的操作直接使用URLEncoder这个类来转换,

java 中char 类型可以以%d的输出?为什么?获取字符的方式只有用字符串吗

问题描述 java 中char 类型可以以%d的输出?为什么?获取字符的方式只有用字符串吗 java 中char 类型可以以%d的输出?为什么?获取字符的方式只有用字符串吗 解决方案 在ascii码表中,字符和数字是一一对应的,可以相互转换使用 解决方案二: 不光是java,c也可以,每一个字符都对应一个ascii码,你把char强转成int也可以输出,"获取字符的方式只有用字符串吗"没懂你啥意思. 解决方案三:

求解答!!!java中输出顺序的问题!

问题描述 求解答!!!java中输出顺序的问题! public String work() { System.out.print("的工作理念是干活挣钱有饭吃"); return ""; } System.out.println(hanbing.getName()+hanbing.work()); 为什么输出的结果是:的工作理念是干活挣钱有饭吃韩冰 解决方案 1.work方法中的print被执行,打印输出"的工作理念是干活挣钱有饭吃" 2.然后h