Redian新闻
>
问个primitive type的问题
avatar
问个primitive type的问题# Java - 爪哇娇娃
k*y
1
static void inc( Integer n ){
++n;
}
public static void main( String[] args ) {
Integer n = 0;
inc( n );
System.out.println( n );
}
显示结果还是0,java里有什么方法实现把main里的n变成1? thanks.
avatar
e*t
2
use return value. If you want to use an argument of the method, you have to
use a mutable object.
primitives are not objects and wrapper objects are immutable.

【在 k*****y 的大作中提到】
: static void inc( Integer n ){
: ++n;
: }
: public static void main( String[] args ) {
: Integer n = 0;
: inc( n );
: System.out.println( n );
: }
: 显示结果还是0,java里有什么方法实现把main里的n变成1? thanks.

avatar
J*n
3
学习了
avatar
f*n
4
++n;
is the same as
n = n + 1;
Assigning to a local variable (any type) never has any effect outside the function.
avatar
F*n
5
static void inc(int[] n ){
++n[0];
}
public static void main( String[] args ) {
int[] n = new int[]{0};
inc( n );
System.out.println( n[0] );
}

【在 k*****y 的大作中提到】
: static void inc( Integer n ){
: ++n;
: }
: public static void main( String[] args ) {
: Integer n = 0;
: inc( n );
: System.out.println( n );
: }
: 显示结果还是0,java里有什么方法实现把main里的n变成1? thanks.

avatar
x*6
6
Integer i = 1;i++ 这个过程是将相当于是 i= Integer.valueOf(i+1)
你将n传递给inc()时传过去的是复制的n(另一个指向 Integer object 的reference
),而n++相当于给那个复制的reference重新指向一个Integer object,当然不会影响
到main方法里原本的n指向的object了
avatar
r*y
7
-- 你将n传递给inc()时传过去的是复制的n
错了, 哪里有"复制" 一说, 是 pass by reference, 然后因为 immutable , inc() 内
object 就多了一个

reference

【在 x*******6 的大作中提到】
: Integer i = 1;i++ 这个过程是将相当于是 i= Integer.valueOf(i+1)
: 你将n传递给inc()时传过去的是复制的n(另一个指向 Integer object 的reference
: ),而n++相当于给那个复制的reference重新指向一个Integer object,当然不会影响
: 到main方法里原本的n指向的object了

avatar
x*p
8
You can use reflection in inc method and make Integer mutable.

【在 k*****y 的大作中提到】
: static void inc( Integer n ){
: ++n;
: }
: public static void main( String[] args ) {
: Integer n = 0;
: inc( n );
: System.out.println( n );
: }
: 显示结果还是0,java里有什么方法实现把main里的n变成1? thanks.

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。