掌握J2ME移动应用开发:中文教程全解

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:Java 2 Micro Edition(J2ME)针对嵌入式和移动设备,如手机和智能家电等的开发提供了一整套工具和API。本教程深入浅出地介绍了J2ME开发的基础知识,包括开发环境的搭建、MIDlet程序设计、用户界面构建、网络编程、数据存储、性能优化以及应用的打包与部署。通过实例和理论相结合的方式,帮助开发者在移动应用开发领域迅速上手并提高实战能力。 J2ME中文开发教程

1. J2ME平台概述与配置

随着移动设备的普及和智能化,移动应用开发已成为软件开发的一个重要分支。J2ME(Java 2 Platform, Micro Edition)是Java平台针对移动设备和嵌入式系统的解决方案。它的设计目标是允许移动设备在有限的资源下运行Java程序,例如:早期的手机。

在本章中,我们将首先概述J2ME的基本概念、平台架构以及它在移动应用开发中的作用。随后,我们将深入探讨如何配置J2ME开发环境,确保开发人员能够顺利地开始他们的开发过程。

J2ME基本概念

J2ME是为资源受限的设备设计的一套Java平台,它被划分为不同的配置(Configuration)、简表(Profile)和可选包(Optional Package)。配置定义了设备的硬件能力,简表则在配置的基础上提供了针对特定类型应用的API,而可选包则提供特定的功能。

平台架构

J2ME架构基于以下几个关键组件:

  • K虚拟机(KVM) :是J2ME的运行时环境,为运行在J2ME设备上的Java应用程序提供支持。
  • 配置 :如CLDC(Connected Limited Device Configuration)和CDC(Connected Device Configuration),分别针对功能限制的连接设备和功能更丰富的连接设备。
  • 简表 :例如MIDP(Mobile Information Device Profile),是针对移动电话等小型设备的Java API集合。

配置开发环境

正确配置J2ME开发环境对于开始项目的成功至关重要。这包括:

  • 安装Java开发工具包(JDK) :确保你可以编译和运行Java代码。
  • 安装J2ME SDK :提供J2ME应用程序开发所需要的工具和库。
  • 设置模拟器 :模拟移动设备环境,以便在物理设备上部署之前测试应用程序。

在下一部分,我们将详细介绍如何选择和安装这些开发工具,以及如何测试和调试开发环境。

2. J2ME开发环境搭建

2.1 开发工具的选择与配置

2.1.1 JDK的选择与安装

在开始J2ME开发之前,配置一个合适的Java开发环境是至关重要的。J2ME是Java 2 Micro Edition的简称,因此需要安装与之兼容的Java Development Kit (JDK)。当前,我们可以选择OpenJDK或者Oracle JDK两种主流版本。考虑到开发的兼容性和未来可能的跨平台部署需求,Oracle JDK可能是更普遍的选择。

安装Oracle JDK的步骤包括下载对应操作系统的安装包,然后运行安装程序并按照向导进行配置。安装完成后,需要设置环境变量,以便在命令行中能够直接调用 java javac 命令。环境变量的配置通常包括 JAVA_HOME 的设置以及 PATH 变量的更新。

# 示例:在bash环境下设置环境变量(对所有用户生效)
export JAVA_HOME=/path/to/jdk
export PATH=$JAVA_HOME/bin:$PATH

2.1.2 J2ME SDK的安装与配置

Java 2 Micro Edition Software Development Kit (J2ME SDK) 是进行J2ME应用开发的核心工具,包含了编译器、模拟器和调试器等重要组件。我们可以从Oracle官网或者通过开源社区获取J2ME SDK。安装J2ME SDK后,需要进行相应的环境配置,确保开发工具可以正确地调用到SDK的路径。

配置J2ME SDK的环境变量可以参考以下示例:

# 示例:在bash环境下设置环境变量(对所有用户生效)
export J2ME_HOME=/path/to/j2mesdk
export PATH=$PATH:$J2ME_HOME/bin

在安装过程中,还需要设置模拟器的参数,这些参数将影响模拟器的运行配置。确保在安装脚本中指定正确的模拟器配置文件路径,并根据需求进行自定义设置。

2.1.3 模拟器的安装与配置

模拟器是J2ME开发中用来测试应用的重要工具,它可以模拟不同类型的移动设备的运行环境。J2ME SDK包含了模拟器的安装程序,安装完毕后,配置模拟器参数是进一步的必要步骤。模拟器配置文件通常是一个XML格式的文件,包含了设备的显示、输入设备、内存和网络等参数的设置。

在配置模拟器时,需注意以下几点:

  • 确定目标设备的配置参数,比如屏幕大小、内存容量等。
  • 根据实际应用场景,配置网络连接参数,模拟不同的网络环境。
  • 设置模拟器的性能参数,比如最大可用内存、电池使用模式等。

模拟器配置文件的一个示例如下:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <device id="GenericMidp2Phone">
        <property name="memory" value="65536"/>
        <property name="network" value="http"/>
        <property name="screen" value="160x160x16"/>
        <!-- 其他设备属性 -->
    </device>
</configuration>

通过以上步骤,J2ME开发环境的搭建已经完成。接下来需要进行开发环境的测试与调试,确保每一步的安装和配置都能够正常工作。

3. MIDlet基础知识及生命周期方法

3.1 MIDlet的基本概念与结构

3.1.1 MIDlet的定义与组成

MIDlet是基于J2ME平台的一种应用程序,它是专为移动设备设计的应用程序模型。MIDlet应用程序的主要特点包括小内存占用、简洁的用户界面和对设备硬件的低需求。MIDlet的开发使用Java语言,并依赖于特定的API集,这些API集被定义在CLDC(Connected Limited Device Configuration)和MIDP(Mobile Information Device Profile)规范中。

MIDlet应用程序的结构包含三个必须实现的生命周期方法,分别对应于应用程序的启动、暂停和结束状态: startApp() pauseApp() destroyApp() . 此外,还有一个可选的 commandAction() 方法,用于处理用户界面命令。

3.1.2 MIDlet的生命周期方法

MIDlet的生命周期方法是MIDlet核心概念之一,它允许MIDlet在不同的状态间切换,以适应移动设备的运行环境。下面对每个生命周期方法进行详细的介绍。

3.2 MIDlet的状态转换与管理

3.2.1 MIDlet的状态转换过程

MIDlet的状态转换过程描述了应用程序从初始化到运行、暂停以及关闭的整个生命周期。主要有以下三种状态:

  • 活动状态 :这是MIDlet正在运行时的状态,通常在 startApp() 方法被调用后MIDlet进入活动状态。在这一状态下,MIDlet可以执行任务并与用户交互。

  • 暂停状态 :当MIDlet不在活动状态时,它通常会进入暂停状态。 pauseApp() 方法会在MIDlet进入暂停状态时被调用。在暂停状态下,MIDlet不应该执行任何耗时或消耗资源的操作。

  • 销毁状态 :当MIDlet需要被完全销毁时,会调用 destroyApp() 方法。这一状态是MIDlet生命周期的最后阶段,通常用于释放MIDlet占用的资源。

3.2.2 MIDlet的生命周期事件处理

MIDlet的生命周期事件处理涉及到如何响应不同的生命周期状态转换。开发者需要在相应的生命周期方法中编写代码来处理状态转换时的逻辑。MIDlet生命周期事件处理的代码示例:

public class MyMIDlet extends MIDlet {
    public MyMIDlet() {
        // 构造函数
    }

    public void startApp() {
        // 当MIDlet启动时调用
        // 代码逻辑
    }

    public void pauseApp() {
        // 当MIDlet暂停时调用
        // 代码逻辑
    }

    public void destroyApp(boolean unconditional) {
        // 当MIDlet销毁时调用
        // 代码逻辑
    }

    public void commandAction(Command c, Displayable s) {
        // 处理命令
        // 代码逻辑
    }

    // 其他方法和逻辑...
}

以上代码段展示了如何在MIDlet类中实现生命周期方法,并在每个方法中添加了代码逻辑的占位符。通过这种方式,开发者可以根据实际需求编写适当的逻辑处理代码。

下面是一个MIDlet状态转换图的mermaid流程图,帮助理解MIDlet的生命周期状态转换。

graph LR
    A[开始] -->|创建| B[启动]
    B -->|用户或系统请求| C[暂停]
    C -->|用户或系统请求| D[销毁]
    D --> E[结束]

该流程图展示了MIDlet从创建开始,通过启动、暂停到销毁的整个生命周期过程。在实际开发中,需要在每个状态转换点实现相应的逻辑处理。

通过以上介绍,我们可以了解到MIDlet基本概念及生命周期方法是J2ME应用开发中的重要部分。接下来章节将介绍MIDlet用户界面设计与MIDP UI组件的应用,这将进一步加深对J2ME移动应用开发的理解。

4. 用户界面设计与MIDP UI组件

4.1 用户界面设计的原则与方法

4.1.1 用户界面设计的基本原则

在设计用户界面时,有一些普遍接受的原则能够帮助我们创建出既美观又易用的界面。首先,保持界面简洁清晰是至关重要的。这意味着要避免不必要的元素和复杂的布局,让用户的注意力集中在最重要的信息上。其次,一致性和直觉性是设计的关键要素,确保用户在应用的不同部分体验到一致的布局和交互方式,以及用户能够在没有明显指导的情况下理解和操作界面。此外,使用明确的标签和提示可以减少用户的困惑,使得交互过程更加顺畅。

4.1.2 用户界面设计的实践方法

实施这些原则需要一系列的步骤。首先,进行用户研究以理解目标用户的需求和偏好至关重要。然后,创建原型并进行用户测试,以确保设计符合用户的期望和行为模式。在设计过程中,可以利用一些设计原则,如对比、对齐、重复和接近性来提高界面的可读性和美观性。随着设计的推进,使用所选的开发工具,如Java IDE和UI组件库,将设计概念转化为实际的代码实现。代码实现后,不断的用户测试和反馈循环是必不可少的,它可以帮助发现并修正设计中的问题。

4.2 MIDP UI组件的应用与实践

4.2.1 常见的MIDP UI组件

在MIDP中,有多种UI组件可用于创建用户界面,包括命令按钮、文本框、列表和表单等。Command类用于在用户界面中添加按钮和菜单项,它为用户提供了一个交互的方式。TextField和TextBox组件允许用户输入文本,支持不同类型的文本输入,例如密码输入或单行文本输入。List组件则用于显示一系列选项,用户可以通过上下键进行导航。Form组件是用于收集用户输入的容器,它包括多种不同类型的字段,如ChoiceGroup、DateField等。

4.2.2 UI组件的应用示例与实践

下面的示例代码展示了如何在MIDlet中使用Textfeld和Command组件来创建一个简单的登录界面:

import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;

public class LoginMIDlet extends MIDlet implements CommandListener {
    private Display display;
    private Form loginForm;
    private Command loginCommand;
    private Command exitCommand;

    public LoginMIDlet() {
        display = Display.getDisplay(this);
        loginForm = new Form("Login");

        loginCommand = new Command("Login", Command.OK, 1);
        exitCommand = new Command("Exit", Command.EXIT, 2);

        TextField username = new TextField("Username", "", 20, TextField.ANY);
        TextField password = new TextField("Password", "", 20, TextField.PASSWORD);
        loginForm.append(username);
        loginForm.append(password);
        loginForm.addCommand(loginCommand);
        loginForm.addCommand(exitCommand);
        loginForm.setCommandListener(this);
    }

    public void startApp() {
        display.setCurrent(loginForm);
    }

    public void pauseApp() {}

    public void destroyApp(boolean unconditional) {}

    public void commandAction(Command c, Displayable d) {
        if(c == loginCommand) {
            String username = loginForm.getString(0);
            String password = loginForm.getString(1);
            // 这里可以实现登录逻辑
        } else if(c == exitCommand) {
            destroyApp(false);
            notifyDestroyed();
        }
    }
}

在上述代码中,我们创建了一个名为 LoginMIDlet 的MIDlet类,它展示了一个包含用户名和密码输入字段的表单,以及登录和退出按钮。当用户选择登录按钮时,会触发 commandAction 方法,允许开发者根据提供的用户名和密码执行进一步的验证逻辑。退出按钮则用于退出MIDlet。通过此示例,开发者可以了解如何在MIDP中实现基本的用户输入和交互。

在表格和代码块的示例中,我们展示了一个具体的应用实例,这不仅有助于理解MIDP UI组件,还为开发者提供了可供参考的实际代码。这些元素和实践方法共同构成了用户界面设计和开发的基础。通过本章节的介绍,开发者应能充分理解用户界面设计的重要性,并掌握在J2ME平台中实现它们的技巧。

5. J2ME网络编程及连接方法

5.1 网络编程的基本概念与方法

5.1.1 网络编程的基本概念

网络编程是让计算机或移动设备通过网络进行数据交换的技术。在网络编程中,涉及到不同的编程语言和框架,其中Java 2 Micro Edition (J2ME)提供了处理网络连接的功能。在移动应用开发中,网络编程能力允许应用从远程服务器获取数据,或者发送数据到服务器,实现各种在线功能。

5.1.2 网络编程的实践方法

实现网络编程,J2ME 中主要使用以下两种方式:

  1. HTTP连接 :基于请求/响应模式的协议,广泛用于网页浏览器与服务器之间的数据传输。J2ME 中通过 HttpConnection 类实现 HTTP 请求。
  2. Socket连接 :允许应用在网络上创建连接,并进行数据交换。J2ME 中通过 SocketConnection 接口实现 TCP/IP 协议的 socket 连接。

代码块:使用 HTTP 连接发送请求

import javax.microedition.io.HttpConnection;
import java.io.OutputStream;

// 建立到远程服务器的 HTTP 连接
HttpConnection httpConn = null;
OutputStream os = null;
try {
    httpConn = (HttpConnection)Connector.open("***");
    // 设置请求的属性
    httpConn.setRequestMethod(HttpConnection.POST);
    httpConn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");

    // 获取输出流准备写入数据
    os = httpConn.openOutputStream();
    os.write("param1=value1&param2=value2".getBytes());
    os.flush();
    // 在这可以执行其他操作,如读取响应数据等...
} catch (Exception e) {
    // 处理异常
} finally {
    // 关闭连接和流
    if (os != null) {
        try { os.close(); } catch (IOException e) { }
    }
    if (httpConn != null) {
        try { httpConn.close(); } catch (IOException e) { }
    }
}

在上述代码中,我们首先创建了一个到指定 URL 的 HttpConnection 对象,并设置连接为 POST 方法,然后通过 openOutputStream 方法获取输出流,以发送数据。

5.2 J2ME的网络连接方法

5.2.1 HTTP连接的实现方法

HTTP 连接是进行网络请求和数据交互的基础,开发者可以利用 J2ME 提供的 HttpConnection 接口与服务器交互。

代码块:使用 Socket 连接进行通信

import javax.microedition.io.Connector;
import javax.microedition.io.SocketConnection;
import java.io.*;

public class SocketExample {
    public static void main(String[] args) {
        SocketConnection sockConn = null;
        DataOutputStream dos = null;
        DataInputStream dis = null;
        try {
            // 建立 socket 连接到服务器
            sockConn = (SocketConnection) Connector.open("socket://***.***.*.***:8000");
            dos = new DataOutputStream(sockConn.openOutputStream());
            dis = new DataInputStream(sockConn.openInputStream());

            // 向服务器发送数据
            dos.writeUTF("Hello, Server!");
            dos.flush();

            // 从服务器读取响应数据
            String response = dis.readUTF();
            System.out.println("Server says: " + response);
        } catch (IOException ioe) {
            ioe.printStackTrace();
        } finally {
            try {
                if (dos != null) {
                    dos.close();
                }
                if (dis != null) {
                    dis.close();
                }
                if (sockConn != null) {
                    sockConn.close();
                }
            } catch (IOException ioe) {
                ioe.printStackTrace();
            }
        }
    }
}

以上代码展示了如何使用 SocketConnection 实现 TCP 连接,并通过输入输出流与服务器进行通信。代码执行后,客户端会向服务器发送一条消息,并打印服务器响应。

5.2.2 Socket连接的实现方法

Socket 连接通常用于实现客户端和服务器之间长连接,允许实时双向数据流交互。它在游戏和即时通讯类应用中较为常见。

表格:HTTP 连接 vs Socket 连接

| 特性 | HTTP 连接 | Socket 连接 | |------------------|-------------------------------------|----------------------------------------| | 连接类型 | 基于请求/响应的短连接 | 长连接或持续连接 | | 协议类型 | 基于 HTTP 协议 | 基于 TCP/IP 协议 | | 数据交换 | 通常用于网页内容的加载 | 适用于需要实时数据交换的应用,如游戏、聊天 | | 资源消耗 | 较低,适合无状态、轻量级的交互 | 较高,适合需要持续连接的应用 | | 应用场景 | 多用于非实时数据的下载和上传 | 用于需要实时处理的场景 | | 开发复杂性 | 较简单,常用 HTTP 请求方法 | 相对复杂,需要手动管理连接和数据流 |

Mermaid 流程图:网络请求流程

graph LR
    A[开始网络请求] --> B{选择连接类型}
    B -->|HTTP| C[创建HttpConnection]
    B -->|Socket| D[创建SocketConnection]
    C --> E[设置请求参数]
    D --> F[建立连接]
    E --> G[发送请求]
    F --> H[输入输出数据流]
    G --> I[服务器响应]
    H --> J[读取响应数据]
    I --> K[结束请求]
    J --> K

该流程图展示了从开始一个网络请求到结束请求的整个过程,并根据不同连接类型分支到不同的执行路径。

通过本章节的介绍,我们可以了解到 J2ME 中实现网络编程的两种主要方法。在了解了基本概念和实践方法后,开发者可以利用这些技术进行网络数据的交换。尽管目前 J2ME 不再是开发的主流选择,但了解这些基础知识对于掌握移动平台的网络编程原理仍具有一定的意义。

6. 数据存储与RMS的应用

在移动设备上,数据存储是开发应用程序时经常需要考虑的一个重要方面。J2ME平台提供了Record Management System (RMS)作为数据存储的一种解决方案,其允许开发者在设备上存储和检索数据。RMS是J2ME中一个简单的文件系统,用于存储记录而不是文件,每个记录都有一个唯一的ID来标识。

6.1 J2ME数据存储的基本概念与方法

6.1.1 J2ME数据存储的基本概念

J2ME的RMS使得开发者能够以记录的形式存储数据,记录类似于数据库中的行。每条记录都有一个唯一的ID,可以通过这个ID来读取或更新记录。RMS提供了创建、读取、更新和删除(CRUD)记录的接口。

6.1.2 J2ME数据存储的实践方法

J2ME数据存储通常涉及以下几个步骤: - 打开记录存储 - 检查记录存储空间 - 创建、读取、更新或删除记录 - 关闭记录存储

下面是一个简单的示例代码,展示了如何在J2ME中使用RMS来创建和读取记录:

import javax.microedition.rms.RecordStore;
import javax.microedition.rms.RecordStoreException;

public class RMSExample {
    public static void main(String[] args) {
        try {
            // 打开记录存储
            RecordStore rs = RecordStore.openRecordStore("exampleStore", true);
            // 创建一条记录
            byte[] data = "Hello, World!".getBytes();
            int recordId = rs.addRecord(data, 0, data.length);
            // 读取一条记录
            byte[] recordData = rs.getRecord(recordId);
            String text = new String(recordData);
            System.out.println("Record data: " + text);
            // 关闭记录存储
            rs.closeRecordStore();
        } catch (RecordStoreException e) {
            e.printStackTrace();
        }
    }
}

上面的代码创建了一个名为 exampleStore 的记录存储,向其中添加了一条记录,并读取了这条记录的内容。

6.2 RMS的应用与实践

6.2.1 RMS的基本概念与操作

在实际应用中,RMS可以用来存储用户的配置信息、游戏状态、简单的联系人信息等。RMS的操作基本都是围绕记录ID进行的,这些ID在创建记录时生成,并在记录的整个生命周期内用于标识记录。

6.2.2 RMS的应用示例与实践

假设我们要为一个记事本应用实现数据存储功能,可以使用RMS来保存用户的笔记。以下是一个简化的示例,演示了如何创建和读取笔记记录:

import javax.microedition.rms.RecordStore;
import javax.microedition.rms.RecordStoreException;

public class Notebook {
    private RecordStore recordStore;
    private static final String STORE_NAME = "NotebookStore";

    public Notebook() throws RecordStoreException {
        recordStore = RecordStore.openRecordStore(STORE_NAME, true);
    }

    public int saveNote(String note) throws RecordStoreException {
        byte[] noteData = note.getBytes();
        return recordStore.addRecord(noteData, 0, noteData.length);
    }

    public String loadNote(int recordId) throws RecordStoreException {
        byte[] noteData = recordStore.getRecord(recordId);
        return new String(noteData);
    }

    public void closeStore() throws RecordStoreException {
        recordStore.closeRecordStore();
    }
}

在上述 Notebook 类中,我们定义了保存笔记和加载笔记的方法,以及关闭记录存储的方法。这样,我们就可以将用户的笔记以记录的形式存储到RMS中,并在需要时检索出来。

通过这个简单的实践案例,我们展示了如何将RMS应用于实际开发中以解决数据存储需求。RMS操作的简便性使得它在资源受限的移动设备上特别有用,尽管它的功能相对基础,但足以应对许多常见的数据存储场景。

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:Java 2 Micro Edition(J2ME)针对嵌入式和移动设备,如手机和智能家电等的开发提供了一整套工具和API。本教程深入浅出地介绍了J2ME开发的基础知识,包括开发环境的搭建、MIDlet程序设计、用户界面构建、网络编程、数据存储、性能优化以及应用的打包与部署。通过实例和理论相结合的方式,帮助开发者在移动应用开发领域迅速上手并提高实战能力。

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

本套资料工具非常适合在手机上学习、开发j2me应用。具体包括: 1.8本官方j2me编程类库参考,可以使用uc浏览器查看。 2.tengge手机端j2me教程,80多节,内含示例程序、做好的软件和效果图片。 3.手机端j2me编译工具janino.jar。 4.手机端j2me预审核工具preverifier.jar。 5.手机端j2me预审核、混淆、代码优化软件proguard.jar及插件。 6.手机端j2me综合代码编写、编译、预审核环境j2me_SDK_MOBILE_PRO.jar。 7.反编译的j2me类库,可以查看每个类的属性、方法参数。 目录 ┌第一章、手机端j2me编程基础 ┃ 1_1.j2me编程工具准备 ┃ 1_2.制作第一个jar软件 ┃ 1_3.java基础知识 ┃ 1_4.标准j2me程序模版 ┃ 1_5.jar安装包文件的结构 ┃ 1_6.jad文件的结构 ┃ 1_7.j2me常用类库介绍 ┃第一章教程打包下载 ┗━━━━━━━━━━━ ┌第二章 高级用户界面设计 ┃2_1.信息提示Alert类 ┃2_2.文本界面程序设计 ┃2_3.Form界面程序设计 ┃2_4.列表界面程序设计 ┃2_5.Image类和图形列表提示框 ┃2_6.Form多种控件及跑马灯 ┃2_7.Form界面监听控件动作 ┃第二章教程打包下载 ┗━━━━━━━━━━━ ┌第三章 低级图形界面设计 ┃3.1 画布界面绘图函数 ┃3.2 画布界面的按键控制 ┃3.3 多线程与控制物体移动 ┃3.4 图片的裁剪 ┃3.5 改变原点位置 ┃3.6 画布画面之间的切换 ┃3.7 图片的翻转 ┃3.8 绘制透明图片 ┃第三章教程打包下载 ┗━━━━━━━━━━━ ┌第四章 j2me游戏开发基础 ┃4.1 游戏画布的使用 ┃4_2.游戏精灵的使用 ┃4_3.图层管理器的使用 ┃4_4.游戏精灵旋转和其他方法 ┃4_5.碰撞检测 ┃4_6.游戏贴图的使用 ┃第四章教程打包下载 ┗━━━━━━━━━━━ ┌第五章 手机网络功能使用 ┃5_1.发送短信 ┃5_2.打电话 ┃5_3.浏览器打开网页 ┃5_4.获取网页源码 ┃5_5.获取网页信息 ┃5_6.获取并显示网页图片 ┃5_7.获取并保存网络文件 ┃第五章教程打包下载 ┗━━━━━━━━━━━ ┌第六章 手机本地功能使用 ┃6_1.从系统打开本地文件 ┃6_2.读取本地文件 ┃6_3.编辑本地文件 ┃6_4.播放压缩包内音乐 ┃6_5.播放本地音乐 ┃6_6.音乐播放器音量控制 ┃6_7.使用压缩包内资源 ┃6_8.文件夹各种操作 ┃6_9.文件各种操作 ┃第六章教程打包下载 ┗━━━━━━━━━━━ ┌第七章 j2me工具类使用 ┃7_1.随机数Random类的使用 ┃7_2.数学Math类的使用 ┃7_3.日期Date类的使用 ┃7_4.系统System类用法 ┃7_5.平台Runtime类的使用 ┃7_6.堆栈类Stack的使用 ┃7_7.枚举类Enumeration的使用 ┃7_8.定时器Timer类的使用 ┃7_9.变长数组Vector类的使用 ┃7_10.映射Hashtable类的使用 ┃第七章教程打包下载 ┗━━━━━━━━━━━ ┌第八章 存储集的使用 ┃8_1.存储集的使用 ┃8_2.存储枚举器的使用 ┃8_3.对记录进行过滤 ┃8_4.对记录进行排序 ┗━━━━━━━━━━━ ┌第九章 j2me基本类的使用 ┃9_1.Boolean类的使用 ┃9_2.Byte类的使用 ┃9_3.Character类的使用 ┃9_4.Integer类的用法 ┃9_5.String类的用法 ┃9_6.StringBuffer类的用法 ┃9_7.Float类的用法 ┃9_8.Double类的用法 ┃9_9.Long类的用法 ┃9_10.j2me基本类重要说明 ┗━━━━━━━━━━━ ┌第十章 常见问题的说明 ┃10_1.java类修饰符说明 ┃10_2.java属性修饰符的使用 ┃10_3.java方法修饰符 ┗━━━━━━━━━━━ 第十一章 结语
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值