返回列表 回复 发帖
本人也是第一次学习Java语言,零基础。书中我也发现不少错误,可是我觉得这些都是好事。
不知道是不是看事情的态度不一样,这些错误反而能帮助我提高自己。因为发现错误证明自己在真正吸收。
而且发现错误我先自己研究错误在哪里,正确应该是什么。而且目前我发现的都是小错误。
再者,书籍本身编写肯定会带有错误,何况是这么大的工程量。
书写的非常好,很认真,解释也很到位。唯一遗憾是我觉得习题太少,每次继续下一章节不知自己究竟掌握没有,心惊胆战的,自己又发挥不出想象力比较苦恼。这可能跟个人因素比较有关。
还有,作者说话不知是紧张还是怎么,有点小口吃,不过都不大事,加油!
网络延迟不小心重复发了一条,不好意思哈。
据说能送最新的修订版,有没有名额限制啊,哈哈。
本人也是第一次学习Java语言,零基础。书中我也发现不少错误,可是我觉得这些都是好事。
不知道是不是看事情的态度不一样,这些错误反而能帮助我提高自己。因为发现错误证明自己在真正吸收。
而且发现错误我先自己 ...
cardseri 发表于 2011-10-24 21:55
严重同意46楼。

能发现错误说明真的理解作者的意思了。
发现错误还有一点小小的成就感呢。

我也发现了一些。

希望作者能够认真的收集大家的反馈,在第二版中改进呢。
这的确是一本好书。
祝愿他多出几版。
48# xwfwsh


谢谢大家的支持。
发现一处比较让我抓头的错误
7.10.1章节里第188页的代码里其中一段
public void CarStatus getAnotherCarStatus(Car anotherCar){
    if(!isTrafficAdmin){
                    //如果当前的车不是TrafficAdmin,则打印出错误信息并结束本方法
        anotherCar.speed = 0;
        }
        Carstatus status = new CarStatus(anotherCar.speed , anotherCar.direction);
        return status;
}

本段方法里的if语句里应该是错误的吧?应该改正为
if(!isTrafficAdmin){
                    System.out.println("你不是交通管理员,无权调用此方法");
                    return null;
            }
不知道return null是不是正确的?因为要返回一个值,直接写return不行.
如果不是null的话应该要返回什么?
发现一处比较让我抓头的错误
7.10.1章节里第188页的代码里其中一段
public void CarStatus getAnotherCarStatus(Car anotherCar){
    if(!isTrafficAdmin){
                    //如果当前的车不是TrafficAdmi ...
cardseri 发表于 2011-11-10 18:44
补充一下,又发现一个,在同一个例程内
public booleanisLegalCarStatus(CarStatus status){
    if(status.speed <= 80){
        return true;
        }else {
        return false;
}

此处表达错误,小于等于80速度就返回true,应该是大于等于80才返回true吧?
要么是把小于改成大于,要么true和false互换一下.
不知道是不是这样?
自己推翻上楼所说,错了.原来那样是对的,抱歉..
另外:
public void raiseSpeed(byte p_speed){
            if (p_speed < 0){
                    System.out.println("p_speed的值小于0,raiseSpeed()方法将结束");
                    return;
            }int currentSpeed = speed + p_speed;
            speed = currentSpeed;
    }
public void raiseSpeed(int p_speed){
            if (p_speed < 0){
                    System.out.println("p_speed的值小于0,raiseSpeed()方法将结束");
                    return;
            }int currentSpeed = speed + p_speed;
            speed = currentSpeed;
    }

此段代码里我参数赋值1的话还是会去执行int的方法
按照书中所写的重载中参数类型匹配原则的话,不应该是byte吗?
另外:
public void raiseSpeed(byte p_speed){
            if (p_speed < 0){
                    System.out.println("p_speed的值小于0,raiseSpeed()方法将结束");
                    return;
            }int currentSpeed = speed + p_speed;
   ...
cardseri 发表于 2011-11-10 22:13
这个问题涉及到直接数字的默认类型。在Java中,如果直接数值是整数,比如1,3,-7这种,都是被认为是int类型的,所以传递1为参数调用的是int为参数的方法。
如果是浮点数,比如1.2,3.5,-7.9这种都是被默认认为是double类型的数值。

如果需要改变它们的类型,则需要使用基本类型的类型转换。这个书中有介绍。
请问:非默认包的类是不是无法使用import引入默认包里的类?
我在网上找了一下有说"无package语句的类就无法被其他类所引用"
不知是不是这样?
本帖最后由 cardseri 于 2011-11-19 18:01 编辑

学到第九章中使用==判断两个引用是否指向同一对象这里有点疑问
int value = 1;
String str1 = "ABC" + 1;
String str2 = "ABC" + 1;
String str3 = "ABC" + value;
String str4 = "ABC" + value;
boolean isequals1 = (str1==str2);
boolean isequals2 = (str3==str4);
在这里isequals1值为true , isequals2值却为false
看似好像懂可以又觉得不懂,不知能否帮忙解释一下呢,
请问:非默认包的类是不是无法使用import引入默认包里的类?
我在网上找了一下有说"无package语句的类就无法被其他类所引用"
不知是不是这样?
cardseri 发表于 2011-11-18 16:30
默认包中的类也是可以使用的,但是真正的项目中不建议使用默认包。默认包中的类不需要使用package来import。但是要保证classpath正确设置了。
学到第九章中使用==判断两个引用是否指向同一对象这里有点疑问
int value = 1;
String str1 = "ABC" + 1;
String str2 = "ABC" + 1;
String str3 = "ABC" + value;
String str4 = "ABC" + value;
boolean iseq ...
cardseri 发表于 2011-11-19 17:58
这个就涉及到Java虚拟机对字符串的处理了,"ABC" + 1,这个1是个literal的值,不会改变,所以Java虚拟机中编译的时候,会做一些优化,让str1和str2指向同一个string对象。因为Java中的string对象是immutable的,所以这样是没问题的。
而"ABC"+value,这个value是个变量,随时可能变化,所以Java编译器不去做优化,而在运行时,JVM会创建俩string对象。
58# deepnighttwo


我刚刚试了一下,用final修饰了value变量后isqueals2就是true了
是不是可以理解为"若为固定值即可指向同一对象"呢?
回复的都是好孩子,顺便学习一下
返回列表