A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张会文 中级黑马   /  2012-12-31 22:33  /  2442 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张会文 于 2013-1-1 09:50 编辑

  1. <font size="3">

  2. </font><p style="margin: 0cm 0cm 0pt; text-indent: 21pt;" class="MsoNormal"><span lang="EN-US"><font size="3" face="Times New Roman">public class
  3. Something {

  4. public static void main(String[] args) {

  5. Other o = new Other();

  6. new Something().addOne(o);

  7. }

  8. public void addOne(final Other o) {

  9. o.i++;

  10. }

  11. }

  12. class Other {

  13. public int i;

  14. }</font></span></p><font size="3">

  15. </font>
复制代码

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

7 个回复

倒序浏览
我觉得你这个public int i;要么附初值,要么给个set() get()方法啊,你这样i没意义了
回复 使用道具 举报
用final修饰other  o  ?下面还有  o.i++?  final修饰后就是常量了,不能在次赋值
回复 使用道具 举报
用final修饰other  o  ?下面还有  o.i++?  final修饰后就是常量了,不能在次赋值
回复 使用道具 举报
反正被 final修饰的 就不能更改了。
回复 使用道具 举报
楼上各位仁兄...这个小程序完全没错,请看我注释:
  1. package heima.io;

  2. public class Test {
  3.     /**
  4.      * @param 黑马程序员
  5.      * @author 高一航
  6.      */
  7.     public static void main(String[] args) {

  8.         Other o = new Other();

  9.         new Test().addOne(o);
  10.         System.out.println(o.i);

  11.     }

  12.     public void addOne(final Other o) { // 当final修饰对象引用时,对象是可变的,不可变只是“变量对对象的引用”

  13.         o.i++;

  14.     }

  15. }

  16. class Other {

  17.     public int i;

  18. }
复制代码
当final修饰对象引用时,对象是可变的,不可变只是“变量对对象的引用”

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
lz的java代码是没有问题的。但嵌套在标签里面就不知道可不可以了,偶才疏学浅没有用过。
不过final这样用是没有任何问题的,正如楼上所说:
final的“不可变”不是对象里面的属性值不可以改变、而是final这个引用指向对象o就不可以再取指向其它对象o1了。对于这种说法、看我代码:
  1. package org.qyx.online;

  2. public class TestFinal {

  3.         public static void main(String[] args) {
  4.                 final Person p1=new Person("张三");
  5.                 p1.setName("李四");
  6.                 System.out.println(p1.getName());//此时打印出李四,说明对象的属性是可以被改变的哦、
  7.                
  8.                 //p1=new Person("王五");
  9.                
  10.                 //当引用改变指向对象的时候,在eclipse下会提示错误
  11.                 //The final local variable p1 cannot be assigned. It must be blank and not using a compound assignment
  12.                 //所以”final修饰的变量是不可以被改变“中的“改变”二字说的是引用的指向不变,
  13.                 //和基础类型一样,只是栈中存放的不可以被改变,实际堆中的对象是允许改变的、
  14.         }

  15. }

  16. class Person{
  17.         private String name;

  18.         public Person(String name) {
  19.                 this.name = name;
  20.         }

  21.         public String getName() {
  22.                 return name;
  23.         }

  24.         public void setName(String name) {
  25.                 this.name = name;
  26.         }
  27.        
  28. }
复制代码
----------接分中------------

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
不知道你想问什么

点评

纠错!  发表于 2013-1-1 09:51
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马