[英]Java Concept Confusion : Objects and Primitive Types
我对这个概念很困惑:
/* Example with primitive data type */
public class Example1 {
public static void main (String[] args){
int a = 1;
System.out.println("a is " + a);
myMethod( a );
System.out.println("a is " + a);
}
public static void myMethod(int b){
b = 3;
System.out.println("b is " + b);
}
}
OUTPUT:
a是1
b是3
a是1
为什么“ a”不改变?当int i初始化为零时,这个原始变量如何像FOR LOOP或WHILE LOOP那样变化? 像这样:
int i = 1;
while (i < = 3) {
System.out.println(i);
i *= 2;
}
OUTPUT:
1
2
请让我详细了解,因为我真的很困惑。我是一个原始类型,为什么要更新它,为什么在第一个程序中没有int a?
myMethod()是无效的,如果它返回一个int并且您分配了a = myMethod(a),则它将改变
int a = 1;
System.out.println("a is " + a);
a= myMethod(a); //where myMethod is changed to return b instead of void
System.out.println("a is " + a);
a是1
b是3
一个是3
“ 为什么“ a”不变? ”
由于原始a
你的内部myMethod
是不一样的a
,你在你的有void main
。 完全将其视为另一个变量,并将其值复制到myMethod
。 该原语的生命周期在该方法执行的结尾结束。
如果您具有C ++背景,那么以下解释可能会有所帮助:
=null
或=new Obj
,它将仅影响您方法内部的对象。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.