由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Java版 - 问个primitive type的问题
相关主题
请教:怎样函数里改变一个Double变量的值?折腾了一天,实在是绝望了,请教请教
NullPointerException 问题增加点难度 java core
请问有没有generic的array问个autoboxing的问题
java 的函数 xxx(a, b,c)能够向a 写入数据吗?java这个是什么逻辑?
请教一个简单的问题问个hashtable实现问题
简单问题Re: for help
interestingBufferedWriter里的write()
初学者code请教 (大牛莫取笑)a fun coding question
相关话题的讨论汇总
话题: integer话题: inc话题: static话题: void话题: main
进入Java版参与讨论
1 (共1页)
k*****y
发帖数: 744
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.
e*****t
发帖数: 1005
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.

J*******n
发帖数: 2901
3
学习了
f*******n
发帖数: 12623
4
++n;
is the same as
n = n + 1;
Assigning to a local variable (any type) never has any effect outside the function.
F****n
发帖数: 3271
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.

x*******6
发帖数: 262
6
Integer i = 1;i++ 这个过程是将相当于是 i= Integer.valueOf(i+1)
你将n传递给inc()时传过去的是复制的n(另一个指向 Integer object 的reference
),而n++相当于给那个复制的reference重新指向一个Integer object,当然不会影响
到main方法里原本的n指向的object了
r***y
发帖数: 4379
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了

x*****p
发帖数: 1707
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.

1 (共1页)
进入Java版参与讨论
相关主题
a fun coding question请教一个简单的问题
Alternative way to swap Integer简单问题
question on single thread & multithreadinteresting
Test your PC speed初学者code请教 (大牛莫取笑)
请教:怎样函数里改变一个Double变量的值?折腾了一天,实在是绝望了,请教请教
NullPointerException 问题增加点难度 java core
请问有没有generic的array问个autoboxing的问题
java 的函数 xxx(a, b,c)能够向a 写入数据吗?java这个是什么逻辑?
相关话题的讨论汇总
话题: integer话题: inc话题: static话题: void话题: main