初学J2ME的体会

xunixyoung 2011-05-23 05:50:23
加精

学习J2ME已经有几天的时间了,今天我以一个初学者的角度来谈谈如何学习J2ME

记得我第一次看J2ME的书时间是在我要去应聘xxx公司的J2ME开发工程师职位的前一天,那天为了面试的需要我准备了一天的时间,对于一个J2ME的菜鸟都还算上的我可想而之在短短的一天时间能准备成什么样子,我们知道一门语言要入门是得有一个过程的,这个过程至少要有4天的时间,何况面对的大家公认很难的J2ME,有的人编代码编了一辈子也许都没有机会接触到它,记得当时我根据招聘信息上面的要求,强行自己记忆了一些知识点,可是还没有到了面试时忘记得一干二尽,当时恨自己不成钢,幸亏笔记的时候大部分是Java基础知识,J2ME的知识都是些选择题,也许是这些选择题我大部分都选择对了,因为后来听说我的笔试分数还很高哦。

要学习好J2ME Java基础是关键

首先在学习J2ME之前要弄懂的知识:

①Java中包结构的关系

②private、protected、defualt、public在不同的情况下的访问权限

③要真正理解抽象类、抽象方法、继承的含义及其接口的属性的理解

④有一定的模式设计概念:什么是单例设计模式、工程设计模式?

⑤理解线成的正在执行过程(注意:Thread类在J2ME中没有stop()方法)

⑥对输入输出的理解

⑦有察看API的能力

我觉得有了上面的基础后在学习J2ME就可以了,提出⑦条的原因是我在学习Java有几年了还没有这样的能力,不是因为我的英文太差,而是因为我没有下意识的告诉自己去查,在遇到问题时只是养成了google的习惯,希望大家不要走自己路,遇到问题一定先自己查相关的API,不行再想其他的办法,这可是我几天在家的埋头查询(因为当时家没有安装宽带网,只能看API文档)的体会,人的潜能是逼出来的嘛,所以要下意识地给自己施加压力哦。

我们来看J2ME的API

MIDlet类:所有的应用程序都要继承这个类

记得第一次看J2ME的书的时候,没有一本书分析一个J2ME的程序的结构,要是有很好的Java基础看看API就可以搞定――――这里要用到的知识:extends、abstract的真正含义,下面我再好好补充一下:

一个抽象类要是它的子类没有声明是abstract,该自类必须重写父类的抽象方法,这样看看MIDlet类的就知道MIDlet是一个abstract类,所以它的子类要重写它的startApp()、pauseApp()、destroyApp(Boolean unconditional)这三个方法。一个abstract类的默认属性是什么也的弄懂,这可以跟interface结合着来理解。

入门级别的学习之道:

我们在学习一门语言经常的入门例子就是“Hello World”,我们也以在程序运行时在手机屏幕上显示“Hello World”字符为例来作为入门的第一个J2ME程序。代码如下:


import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.TextBox;

public class HelloWorld extends MIDlet {
private Display displayable;
private TextBox nameTextBox;
public HelloWorld() {
displayable = Display.getDisplay(this);
}

protected void startApp() throws MIDletStateChangeException {
nameTextBox = new TextBox("", "Hello World", 20, 1);
displayable.setCurrent(nameTextBox);
}

protected void pauseApp() {
}

protected void destroyApp(boolean unconditional) throws
MIDletStateChangeException {
}
}


在看了上面的最简单的HelloWorld程序要弄懂的类:Display、TextBox、MIDlet,通过这个例子要对里面涉及到每个类的具体用法有很清楚的理解,这样的要求在刚学习J2ME的时候肯定会感觉到很类,但这是一个良好的习惯,这样坚持下来在写其他的代码不久就得心应手了。下面再在上面的例子的基础上添加一个退出菜单,只需要让上面的类实现CommandListener接口就行了。

import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.TextBox;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.Displayable;

public class HelloWorld extends MIDlet implements CommandListener {
private Display displayable;
private TextBox nameTextBox;
private Command exitCommand;
public HelloWorld() {
displayable = Display.getDisplay(this);
}

protected void startApp() throws MIDletStateChangeException {
nameTextBox = new TextBox("", "Hello World", 20, 1);
exitCommand = new Command("退出", Command.EXIT, 1);
nameTextBox.addCommand(exitCommand);
nameTextBox.setCommandListener(this);
displayable.setCurrent(nameTextBox);
}

protected void pauseApp() {
}

protected void destroyApp(boolean unconditional) throws
MIDletStateChangeException {
}

public void commandAction(Command command, Displayable displayable) {
if (command == exitCommand) {
try {
destroyApp(false);
} catch (MIDletStateChangeException e) {
e.printStackTrace();
}
notifyDestroyed();
}
}
}


通过上面的例子又要查看J2ME的API了,看看CommandListener接口定义的方法,这又涉及到接口的知识了,实现一个接口就必须实现该接口的所有方法,而且访问权限限制修饰符必须是public修饰。
...全文
3493 82 打赏 收藏 转发到动态 举报
写回复
用AI写文章
82 条回复
切换为时间正序
请发表友善的回复…
发表回复
sxdgundam 2011-07-28
  • 打赏
  • 举报
回复
不错,支持一下
baohan130140 2011-07-28
  • 打赏
  • 举报
回复
我还在努力、
boyzcx 2011-07-27
  • 打赏
  • 举报
回复
好难学啊 看的人晕哦
海米 2011-07-27
  • 打赏
  • 举报
回复
路过留痕
dukou1234 2011-07-27
  • 打赏
  • 举报
回复
j2me和j2ee哪个难?
Anzgp 2011-07-27
  • 打赏
  • 举报
回复
路过~~~~~~~~~~~~~~~~~~~~
tlp_2009net 2011-07-27
  • 打赏
  • 举报
回复
dfgsfsdffg
dhcworldhy 2011-07-25
  • 打赏
  • 举报
回复
Android开发和j2me 有啥关系哦 j2me在哪些平台上开发的啊
duoqingzai 2011-07-25
  • 打赏
  • 举报
回复
谢谢分享啊
mails2008 2011-07-25
  • 打赏
  • 举报
回复
API确实是好东西
wangjiaxin0902 2011-07-25
  • 打赏
  • 举报
回复
Really?
xiaocongzhi 2011-07-25
  • 打赏
  • 举报
回复
最近要搞JSP,进来学学
YJBZC 2011-07-25
  • 打赏
  • 举报
回复
把帖子看完了
发货哈哈哈哈 2011-07-24
  • 打赏
  • 举报
回复
<script type="text/javascript"><!--
google_ad_client = "pub-2714364017675711";
/* g4 728x90 */
google_ad_slot = "6294780289";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
lydkkkkkk 2011-07-24
  • 打赏
  • 举报
回复
感谢分享精神!
weike021996 2011-07-24
  • 打赏
  • 举报
回复
帮你顶
guenze 2011-07-24
  • 打赏
  • 举报
回复
有点意思,可以学习!
picurl 2011-07-24
  • 打赏
  • 举报
回复
謝謝!學習!
virtualer 2011-07-24
  • 打赏
  • 举报
回复
比j2ee容易多了啊
addlight7 2011-07-23
  • 打赏
  • 举报
回复
赞一个,貌似很高深的样子
加载更多回复(51)

1,146

社区成员

发帖
与我相关
我的任务
社区描述
探讨BlackBerry智能手机开发相关的技术、软件、产品等话题。
社区管理员
  • BlackBerry
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧