java中关于基本类型和对象类型

啊是啊打 2013-09-01 11:26:01
我想知道这道题重的i到底是基本类型还是对象类型,为什么只没有变成3而是1呢,i和0分别存在内存中的什么地方
...全文
261 5 打赏 收藏 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
oh_Maxy 2013-09-01
  • 打赏
  • 举报
回复
你这个是作用域的问题啦~ i = new Integer(3);只在方法内有效,除非return出去的: public static Integer add3(Integer i){ i = i+3; i = new Integer(i); return i; } 调用的地方:i = add3(i);
疯狂熊猫人 2013-09-01
  • 打赏
  • 举报
回复
楼主,值既不是3也不是1吧。而是0吧。 这里传递的i相当于一个副本,所以i的值不会变。 好比一扇门有一把钥匙A,现在用A配了一把钥匙B,你把B修改了,A是不会变的。这里的add3方法就属于这种比喻。 另外,如果传递的参数,调用了该对象的方法。比如obj.setXXX(param)之类的方法,那么obj将会改变。 例子:
public static void main(String[] args) {
		StringBuilder s = new StringBuilder("TEST");
		System.out.println(s.toString());
		test(s);
		System.out.println(s.toString());
		test1(s);
		System.out.println(s.toString());
	}
	public static void test(StringBuilder s){
		s = new StringBuilder("1212121");
	}
	public static void test1(StringBuilder s){
		s.append("A");
	}
无辜的程序员 2013-09-01
  • 打赏
  • 举报
回复
Java中都是值传递的,引用也是值传递的,不过传递的值是引用的地址。方法内改变参数中引用所指向的对象,从方法返回后,方法里的对引用的地址的改变是无效的。
xiaozhou10 2013-09-01
  • 打赏
  • 举报
回复
基本类型有哪些? 基本类型简单点不用new的很好区分吧。 字符类型char, 布尔类型boolean 以及数值类型byte、short、int、long、float、double ----------------------------------------------------------- 你的问题可能想知道的是:值传递、引用传递这个问题。 ----------------------------------------------------------- 看书中的基本知识吧。
地下室森林 2013-09-01
  • 打赏
  • 举报
回复
add3()方法里面定义的 Integer i 只有在那个方法里面有效。正确传出数据就是调用的时候要返回值。 楼主你是把 main 和 add3() 两个方法里面的 Integer i 给混淆起来了

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧