解惑

解己之惑,解人之惑

日:2006年11月15日

Java参数传递方式

其实这个问题我原来翻译(破除java神话之二:参数是传址的 )、转帖别人的详细解释(Java 应用程序中的按值传递语义 )和专门解释( 我对《Java 应用程序中的按值传递语义》的理解 )过,不过现在看来,原来翻译或者解释的角度是有问题的,从底层的角度解释并不直观,在交流的时候也容易引起误解,最终不能达成一致意见。下面以最终的效果来解释参数的传递方式:

1、对于原始数据类型,也就是int、 long、char之类的类型,是传值的,如果你在方法中修改了值,方法调用结束后,那个变量的值没用改变。
2、对于对象类型,也就是Object的子类,如果你在方法中修改了它的成员的值,那个修改是生效的,方法调用结束后,它的成员是新的值,但是如果你把它指向一个其它的对象,方法调用结束后,原来对它的引用并没用指向新的对象。
阅读全文

Java类的完整构造执行顺序

这里只说一个完整的结果,至于为什么是这样的顺序,可以参考我以前的文章:深入剖析java类的构造方式

  1. 如果父类有静态成员赋值或者静态初始化块,执行静态成员赋值和静态初始化块
  2. 如果类有静态成员赋值或者静态初始化块,执行静态成员赋值和静态初始化块
  3. 将类的成员赋予初值(原始类型的成员的值为规定值,例如int型为0,float型为0.0f,boolean型为false;对象类型的初始值为null)
  4. 如果构造方法中存在this()调用(可以是其它带参数的this()调用)则执行之,执行完毕后进入第7步继续执行,如果没有this调用则进行下一步。(这个有可能存在递归调用其它的构造方法)
  5. 执行显式的super()调用(可以是其它带参数的super()调用)或者隐式的super()调用(缺省构造方法),此步骤又进入一个父类的构造过程并一直上推至Object对象的构造。
  6. 执行类申明中的成员赋值和初始化块。
  7. 执行构造方法中的其它语句。

阅读全文

临城作弊大法

个人感觉模拟城市里面最大的两个BUG就是临城和垃圾焚烧厂,如果把这两个BUG利用起来,就可以利用一个小城市解决整个地图的垃圾问题,这样其它的城市的环境就可以大大的缓解。详细方法如下:

  1. 选择一个小城市开局,城市就叫垃圾城,先划街道,宽度为4,程度不限,但是为4的倍数,例如16,然后把路全部连好,然后全部盖垃圾焚烧厂,开始可能只能建三个钱就用得差不多了,注意把焚烧厂得经费调整为0。
  2. 然后建一排低密度住宅,旁边丢一个风力发电厂。
  3. 在旁边建一个其它得城市,注意和垃圾城有道路连接。
  4. 回到垃圾城进行临城交易,把进口量调到最大,全速运行城市,慢慢的把焚烧厂建满。
  5. 现在就可以开始其它的城市的建设了,注意要一个挨着一个的发展。

© 2025 解惑

本主题由Anders Noren提供向上 ↑