java 板


LINE

Java当初的设计理念是简单、安全 也因此可以很快上手,但也因此少掉很多在C++中好用以及麻烦的东西 Java SE6技术手册,我一个礼拜就看完了 这是一本很好的上手书 实际上也只有半本(CH13前)的部分属於必需看过的部分 剩下的Stream、Thread、Reflection、Annotation,等要用到时再去查 如果打算走Android,Reflection那部分最好稍微看过 Android常常用Reflection去调用apk里的东西 但也建议你留一本Thinking in JAVA在身边 Thinking in JAVA讲的比较深,有时候遇到一些问题 去找Thinking in JAVA比较能获得清楚的解答 C#的概念是模仿Java,但写起来比较像C++ 像指标、函数指标、多载运算子、goto等东西,C#有保留下来 但在Java中全部都被没收了 少了那些复杂的东西,所以能学的很快 C#的关键字比Java多很多 相较之下Java简单轻快,只要知道那些缺少的东西要怎麽去转换 就能写得很顺 在基础语法方面 像 goto XXX; XXX: 这种东西在Java中被 break XXX; continum XXX; 取代 例如: XXX: { break XXX; } 而且只能往後跳,不能往前跳 如果要往前,只能用while等回圈去控制程式流程 foreach 在Java中的型式是 for (iterable_type iterable_element : iterable) 修饰词 (private、public、protected) 在C#中只有三种,如果没加,就会变成private 在Java中如果不加修饰词,代表的是同一套件内的成员都能使用他 Java跟C#的类别配置不太一样 C#用namespace去区别class的「域」 而档案跟程式码没直接关系 但Java是用套件区分,而且一个.java档案只能放一个public class 且档案名称需与类别名称同名 不像C#爱放哪里就放哪里,嫌class太大还能用partial class拆成两三个档案 还有, C#可以为现成的class乱加方法进去,例如: static class Util { public static int Square (this int i ){return i*i}; } int x = 100; x = x.Square(); //x == 10000 java没这种东西,如果想扩充,只能继承它 不过,C#中因为有struct才比较需要这样做 但Java中都是物件,就不需要 覆写(Override) 在C#中要宣告override才准继承的成员去覆写 但是Java中只要直接覆写即可 Method前面的 @Override 只是给编译器看的,不加也没事 多载运算子 C#可以为自定的类别宣告转型运算子、算术运算子 但在Java中.... 没办法,请把这个功能忘了 只能写个Method去转型、去相加、去相减 指标 在C#中的ref、out是在Method中用来取代指标的功能 在Java中也没有 不过,我看过个写法是,把变数放进阵列,把阵列传进Method 硬是把算完的东西用阵列带出来 Java容器物件都在java.util底下 跟C#差异不会很大,只是名称不一样 若要说比较大的差异...... 像是C#中是用 List<int>,但是在Java里面只能用List<Integer> 而且会经过boxing、unboxing 在名称方面,在C#中允许 interface A<T1>{} interface A<T1,T2>{} 这种同名泛型,但是在Java中不允许 以及,在C#中遇到必须同时继承两个介面时 例如: interface A{void A();} interface B{int A();} 在C#中可以用 void A.A(){} int B.A(){return 0;} 的方式去区别两个函式是继承自哪个介面 Java没这种东西,理由是:基於Java的特性,根本不需要 当初也觉得撞名很严重,但在Java有自己的解决办法 这等一下讲 C#有delegate、event这种类似函数指标的东西 在Java中没有 C#中常常经过委派去设定按键、键盘事件 在Java中是用另一方式 这也等一下讲 要说Java中比较特别的东西 就是Inner class C#虽然也有,但C#的Inner class就没有像Java中的那样好用 C#比较像是「把一个class放进一个跟上层class同名的namespace里面」 上层class跟Inner class没有直接关系 感觉很鸡肋,我写C#时几乎没用过 除非是用static class来纪录一些全域变数 (有分层比较不会搞混) 但Java中,Inner class却像是「上层class 的一部份」 他本身会隐含上层class的参照 这特性被用来处理很多事 举例来说: class A { void A(){} class B { void Method1() { A(); //在C#中不会过,但Java中可以 } } } 也因为如此,在java中常常这样用 class A { class B implements View.OnClickListener() { @Override public void onClick(View v) { } } class C implements Button.OnClickListener() { @Override public void onClick(View v) { } } } 这样一来,就能避免interface中的Method撞名的问题 而且onClick里面的程式码也可以自由使用class A里的栏位、Method 以及,之前在C#中常常用委派(delegate)设定一些点击、按键事件 那时是直接塞方法名称就可以,例如: class C { public void onClickEevent() { //点下Button时要做的事 } } 设定时: Button.OnClick = onClickEevent; <=把Method放进delegate 但在Java中的做法是这样: class C { class OnClickEvent implements Button.OnClickListener() { @Override public void onClick(View v) { //点下Button时要做的事 } } } 设定时: Button.setOnClickListener(new OnClickEvent()); 其他Java的SDK我不知道是怎麽设计 但是在Android SDK里,设定某个条件触发某个状况,都是这样写 ※ 引述《wa007123456 (大笨羊)》之铭言: : 大家好! : 我以前是用C#当作我的主要语言 : 最近看见Android的声势越来越大 : 想要也把Java学起来 去开发移动式装置 : 虽然Visual Studio C# Express : 这个IDE真的"超级"好用 当初我也这样觉得 但是Eclipse只是调整起来麻烦 很多东西都要手动去调整 用熟後就会变得超好用,因为几乎什麽都可以调 现在我的Eclipse只要我打个字首 就会跟Visual Studio C# Express一样跳出候选字清单出来 那个从 视窗/喜好设定 那可以调整 还有,Eclipse开放给别人写外挂 所以只要加装一些东西,马上就能写C++ php等不同语言 这点比Visual Studio强大太多了 : 还有大量的msdn文件资料 http://nothing.tw/JDK_API_1_6/ 中文java doc文件在这里 : 但是他只能开发Windows Phone : 我现在Java的IDE是Eclipse : 但是觉得他并不够人性化 : 速度也略慢 : 我知道Java跟C#很类似 : 不过还是有其差别存在 : 像是继承的语法就不同 : 我买了一本Java的书 : 可能是太基础吧? : 我翻一翻就感觉念完了@@ : 但是实际去写後 : 又觉得力不从心 : 感觉就是怪怪的 : 我想请问C#转Java应该要注意的事项? : 感谢有经验的大大分享 : 小弟在此感谢! 除非打算深入研究Java 否则,在使用上,Java真的简洁成这个样子 Java写起来一点也不花俏,不用去记一些奇奇怪怪的写法 用最单纯的写法就对了 如果觉得写起来很卡、力不从心 那就去找找网路 大概看一阵子范例,就知道Java style的写法是怎麽样 --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 125.233.152.117
1F:→ LaPass:补一个 c#的 int x{get; set;} 在Java中要用Method去写 10/15 23:43
例如: int getx(){return x;}; void setx(int x){this.x = x;} ※ 编辑: LaPass 来自: 125.233.152.117 (10/15 23:49)
2F:→ apiod:VS也有开放写扩充工具......... 10/16 00:27
3F:推 PsMonkey:推这篇的字数,不过,还是那句话:请忘掉你写过 C# 10/16 09:31
4F:→ weiyucsie:看不懂inner class的例子...orz 10/16 13:36
※ 编辑: LaPass 来自: 125.233.155.247 (10/16 13:43)
5F:→ LaPass:打太快少打一层 = =||| 10/16 13:43
6F:推 sulaball:那在实验室被要求写一些JAVA作业,但是对於C和JAVA都不 10/16 14:07
7F:→ sulaball:熟悉的话,请问有甚麽好的推荐?买书重K吗?? 10/16 14:08
8F:→ lachtchlee:书到用时方恨少 10/16 14:13
9F:推 kavana999:这篇写得很棒啊,大学生们可能会拿去当作作业的解答了XD 10/16 14:14
10F:推 arrenwu:要速成的话去看 Java官网的Tutorial 吧 10/16 14:46
11F:推 arrenwu:官网Tutorial: http://tinyurl.com/2dyjpmk 10/16 14:49
12F:推 wa007123456:谢谢你^^ 我在好多地方都有看见你@@ 你应该是程式达人 10/16 19:20
13F:→ LaPass:我不强,只是常常po文问问题而已.... 10/16 20:15
14F:推 TaiwanXDman:C#好像就是Java变来的? 10/17 01:16
15F:→ LaPass:微软原本想买下Java,结果没买成,就自己生一个C#出来。 10/17 08:39
16F:推 dream1124:你最後讲的C# delegate和setListener 是不一样的东西 10/23 18:48







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灯, 水草

请输入看板名称,例如:Boy-Girl站内搜寻

TOP