在读《java编程思想第四版》,阅读中遇到一些句子读不懂,现整理如下,以期前辈指点,共同探讨。
1.(P30)“和其他任何方法一样,static方法可以创建或使用与其类型相同的被命名对象”。
这句话左右没读懂想说什么。
2.(P43)“一元减号用于转变数据的符号,而一元加号只是为了与一元减号相对应,但是它唯一的作用仅仅是将较小类型的操作数提升为int”。
此处“较小类型”是指什么?难道是指:Int之于float为较小类型,short之于int是较小类型?
3.”较小类型“另见P48.“请注意,如果将比较小的类型传递给Integer.toBinaryString()方法,则该类型将自动被转换为int”。
4.(P55)“JAVA允许我们把任何基本数据类型转换成别的基本数据类型,但布尔型除外,后者根本不允许进行任何类型的转换处理”。
但我认为不是这样,例如:
System.out.println((10>12));
输出:false。可见布尔型数据至少可以转换成String类型。 JavaJAVA编程思想Thinking in JAVA
1.(P30)“和其他任何方法一样,static方法可以创建或使用与其类型相同的被命名对象”。
这句话左右没读懂想说什么。
2.(P43)“一元减号用于转变数据的符号,而一元加号只是为了与一元减号相对应,但是它唯一的作用仅仅是将较小类型的操作数提升为int”。
此处“较小类型”是指什么?难道是指:Int之于float为较小类型,short之于int是较小类型?
3.”较小类型“另见P48.“请注意,如果将比较小的类型传递给Integer.toBinaryString()方法,则该类型将自动被转换为int”。
4.(P55)“JAVA允许我们把任何基本数据类型转换成别的基本数据类型,但布尔型除外,后者根本不允许进行任何类型的转换处理”。
但我认为不是这样,例如:
System.out.println((10>12));
输出:false。可见布尔型数据至少可以转换成String类型。 JavaJAVA编程思想Thinking in JAVA
输出:false。
这是布尔类型转换为String类型吗
public String toString() {
return value ? "true" : "false";
}
public class Test {
private Test() {}
public static Test newInstance() { return new Test(); }
}
2.英文原版是这么描述的
Unary minus inverts the sign on the data. Unary plus provides symmetry with unary minus,although it doesn’t have any effect.
他说:一元负号转换数据的负号,一元加法提供了一个一元减法的对称,尽管其没有任何作用。
说的很明显啊,一元加法没有任何用,不知道翻译的是怎么回事,(读像TIJ这种羞涩的读物时最好对照英文原版一起看 会省掉好多麻烦事 亲身感觉)
3.Short Byte Character类不提供toBinaryString和toHexString方法的,如果你想输出这些较小类型的二、十六进制表示只能调用Integer或更高的 那自动提升类型不就顺理成章了么
4. int short byte float....这些基本类型是可以相互转换的(有时需要显式强制)
boolean类型确实不能转换为任何类型(即使用toString转换成String 那也不是boolean转的而是Boolean类转的 再说String也不算是基本类型)
而你上面的情况:
你去看看PrintStream类的println(boolean x)方法
他间接调用了print方法 print方法呢 我贴上来了
public void print(boolean b) {
write(b ? "true" : "false");
}write方法就更不用说了吧 到这里已经很明显了
10>12是字面量 直接在编译期确定为一个boolean变量(我们看不到),运行时这个boolean变量根本就没有做任何转换 楼上什么toString方法也是喷 以为自己学两天包装类或什么装箱拆箱就以为自己什么都懂了
楼主应该新战友吧 说实话建议最先别看TIJ 我现在就是稍稍微微懂了点皮毛了 有好些最前面的章节还是读着很吃力 到“内部类”那章之后更别提了 有的要反复读、练习测试好几遍才懂得
要是新手的话 本来就对这个语言掌握的不深 有好多信息可能根本捕捉不到 自然而然 阅读效率就下来了
PS: String不是基本数据类型
原书P46:“注意,如果在应该使用String值的地方使用了布尔值,布尔值会自动转换成适当的文本形式”。
我确实是JAVA新战友,我想了一下,我还会继续看《TIJ》吧。对于一个新手而言,我觉得不管是看什么书入门,初学总会有各种遗漏和理解不到位。那么,新手能做到的,就是多提问。我会继续发帖提问的,希望各位仁兄继续提点啊!