java 板


LINE

丑话先说在前面 基本上这篇文章违反了版规 5 然後各种类型的错字有点多 (我记得很久以前版规有要求错字不能太多,忘记啥时候取消这条了) 不过我没有要开罚的意思 [茶] ※ 引述《namahanka (生半可)》之铭言: : 小弟初学java,爬了文还是弄不清"."的作用 我比较好奇你怎麽爬文的 @___@ 这个 search 条件超难下的阿... 难道每篇文章都看过一次吗? [炸] : 比方说 : class A{ : public int b; : public void c(){ : } : } : A.b : A.c() 你的程式码要写完整,不是 `A.b` or `A.c()` 在这个 case 中你要写 A foo = new A(); //foo.b //foo.c() 当然在这种情况下你可以写 `A.b` 跟 `A.c()` class A{ public static int b; public static void c() {} } 不过你先不要在意这个部份,因为跟你的问题没有直接关联 : 上面"."後面的b及c()是指A类别的成员变数及方法 : 那A.c().toString()的"."也是指A.c()的成员方法吗? ==.==== 这边又是另一个错误 你给的程式码,`c()` 没有回传值,基本上不可能呼叫 `toString()` 请注意你在发问的时候,程式码最好 follow [SSCCE] 原则 不然我(们)会不知道你到底是乱写程式码所以搞不懂 还是真的搞不懂 [SSCCE]: http://sscce.org : A.c()会为何能调用toString()而b.toString却不行? ==.==== 这边又是一个需要 SSCCE 的经典例子 `foo.toString()` 跟 `foo.toString` 意义完全不同 在决大多数的程式码写 `foo.toString()` 不会出错 而 `foo.toString` 通常会炸光光 这样说或许有老王卖瓜之嫌疑 但是请记得... 龟毛为学好程式(基础)之本 尤其是你在学语法基础概念的时候 : 搞不懂… : 甚至看过 xxx.toString().toString().toString()...这是为什麽? 我重新来一次,以下用我的程式码讨论 虽然我不是什麽大师,但是至少用我的方式发问 大抵上到哪里问什麽问题都不会被酸 (除非你自称 Java 高手 or 程度可以接案的人 lol) 不过更有可能的... 你就不用问问题了 [无误] ======== 模拟原 po 问问题开始 ======== 我搞不太懂 Java 中关於「.」的问题 比方说这个程式码 //FooClass.java public class FooClass { public int intValue; public String getString(){ return "fooClass"; } public int getInt() { return 0; } public WtfClass wtfValue = new WtfClass(); public FooClass() {} //PS 注:其实可以省略 public static void main(String[] args) { FooClass foo = new FooClass(); //这几行没有出错 System.out.println(foo.intValue); System.out.println(foo.getInt()); System.out.println(foo.getString()); System.out.println(foo.getString().toString()); System.out.println(foo.wtfValue); System.out.println(foo.wtfValue.toString()); //这个就错了 System.out.println(foo.intValue.toString()); System.out.println(foo.getInt().toString()); System.out.println(foo.wtfValue.toString); //PS 注:那个 void method 还要求 toString() 我就懒得吐槽了 } } class WtfClass { WtfClass() {} //PS 注:其实可以省略 } 错误是发生在用 javac.exe compile 的时候 PS 注:在 Eclipse 这类 IDE 中是会有红色 error 不让你执行 FooClass 错误讯息是 ,...... [略] //PS 注:我没有实际测试,所以不知道实际错误讯息 [逃] 可是我不懂这错误讯息 //PS 注:最好先丢 Google,然後说你不懂某个 link 的哪个段落 可以请各位前辈帮忙突破盲点吗? ======== 模拟结束分隔线 ======== 说真的,这样子通常问题就自己解决了 不过,没关系反正闲着也是闲着 我还是来解释一下... 我的程式码为甚麽这样写 我觉得如何测试自己的疑惑比知道原因还重要 首先,我发现 `foo.intValue` 跟 `foo.getString()` 不会出问题 但是 `foo.intValue.toString()` 就会出问题 嗯... 一个是成员变数、一个是方法(好不习惯这种讲法) 所以试试看 `foo.getString().toString()` → 成功 那麽突发奇想(aka 对初学者来讲有点难想到 XD)试试看 `foo.getInt().toString()` → 失败 那麽测试到这边,基本上已经可以排除「成员变数 vs 方法」的差异问题了 好像只要碰到 int 就会炸错误 那麽我就会继续去 try 看看其他我知道可以拿来宣告变数的东西 `WtfClass` 好像也不会有这个困扰 但是 double、float、long 这些就会炸错误 (我上面程式码没有写是因为懒惰... [逃]) 然後我就会死马当活马医去 google 看看 嗯... 就用「java int double float long」 结果头两个连结的标题就出现很奇怪的东西 Java's Primitive Data Types - Cafe au Lait Java Primitive Data Types - JavaCamp.org 等等,不是说 Java 当中什麽都是物件吗? 於是我至少知道一个关键字可以继续 google (基本上错误讯息应该就会告诉你方向了) 就是 Java Primitive Data Type 看完那两个连结(或是重新 google 中文资料) 大抵上到这边,问题就会解决了 坦白说,要说我会什麽东西,我大概就是会这些 跟那种从 compiler 理论 or spec 开始读起的 Java 高手不太一样 我就是用这种方式学会、了解 Java 的 所以太难的东西我都不会,充其量就是能硬干解决一些问题 好,如果上面这些你都不想知道 那我只能很怨叹又很可悲的直接告诉你答案: int 是 primitive data type,他不是物件 所以自然无法呼叫方法 or 存取成员变数 `foo.getString()` 对得到一个 `String` 物件 `foo.wtfValue` 是 `WtfClass` 物件 凡是物件都继承自 `java.lang.Object` 所以自然也就拥有 `java.lang.Object` 有的 `toString()` 如此一来,`foo.wtfValue.toString().toString()` 为甚麽不会出错 自然也就很清楚明了了 ======== 最後,请容许我很不要脸地自己 m 自己的文章 [核爆] -- 钱锺书: 说出来的话 http://www.psmonkey.org 比不上不说出来的话 Java 版 cookcomic 版 只影射着说不出来的话 and more...... --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.25.23.165
1F:→ DeathWatch:谢主隆恩 04/27 02:15
2F:推 fr373969:板主真是好人~ 04/27 02:29
3F:推 kurakidream:推推 04/27 02:51
4F:推 namahanka:惊! 肃然起敬 04/27 17:33
5F:→ namahanka:看到版大钜细靡遗的解说,豁然开朗,真是谢谢了!!! 04/27 17:35
6F:推 gmoz:nice 讲的好详细 04/27 18:24
7F:→ andrew43:真是个好人! 发你张卡. 04/29 05:50
8F:推 No:这样的思考推论方式对初学程式很有帮助 04/29 23:22
9F:推 pkmilk:推~ 05/05 20:46







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:BabyMother站内搜寻

TOP