杰瑞科技汇

Java for Android教程该怎么学?

Java for Android 教程:从零开始构建你的第一个 App

这份教程分为几个核心部分,建议你按照顺序学习。

Java for Android教程该怎么学?-图1
(图片来源网络,侵删)

第一部分:为什么是 Java?—— Android 开发的基石

在开始之前,你需要明白为什么 Android 开发主要使用 Java(以及后来的 Kotlin)。

  • 官方支持:Android 操作系统本身以及其核心的软件开发工具包都是用 Java 语言编写的,这意味着使用 Java 可以最直接、最全面地调用 Android 的所有功能。
  • 成熟稳定:Java 是一门非常成熟、稳定、拥有庞大社区和丰富资源的语言,遇到任何问题,你几乎都能找到解决方案。
  • 面向对象:Android 应用开发的核心思想是面向对象,而 Java 是一门纯粹的面向对象编程语言,两者完美契合。

注意:Google 在 2025 年宣布 Kotlin 是 Android 的首选开发语言,Kotlin 更简洁、更安全,100% 兼容 Java。强烈建议新手直接学习 Kotlin,由于市面上仍有大量使用 Java 的项目和教程,并且学习 Java 有助于你理解计算机科学的底层概念,因此学习 Java 依然是 Android 开发者一项非常有价值的技能。


第二部分:Java 基础语法(Android 开发视角)

我们将通过 Android 应用的例子来学习 Java。

Hello World! —— 你的第一个 Android 项目

当你创建一个新的 Android 项目时,系统会自动为你生成一个 MainActivity.java 文件,打开它,你会看到类似下面的代码:

Java for Android教程该怎么学?-图2
(图片来源网络,侵删)
package com.example.myfirstapp; // 包名,用于组织代码
import androidx.appcompat.app.AppCompatActivity; // 导入 Android 的一个基础活动类
import android.os.Bundle; // 导入 Bundle 类,用于保存活动状态
public class MainActivity extends AppCompatActivity { // 定义一个 MainActivity 类,继承自 AppCompatActivity
    @Override // 重写父类的方法
    protected void onCreate(Bundle savedInstanceState) { // onCreate 是活动的生命周期方法,App 启动时首先调用它
        super.onCreate(savedInstanceState); // 必须先调用父类的 onCreate 方法
        setContentView(R.layout.activity_main); // 设置此活动的布局文件,即显示哪个界面
    }
}

核心概念解读

  • package:就像你的文件夹,com.example.myfirstapp 是项目的唯一标识符。
  • import:告诉 Java 编译器去哪里找用到的类(AppCompatActivity),Android Studio 会自动帮你管理。
  • class:类是 Java 程序的基本单元,在 Android 中,一个屏幕通常对应一个 Activity 类。
  • public class MainActivity extends AppCompatActivity:定义了一个名为 MainActivity 的公共类,并且它继承AppCompatActivity,继承是面向对象的核心概念,MainActivity 获得了 AppCompatActivity 的所有功能(如处理按键、横竖屏切换等),我们只需要专注于自己的逻辑。
  • @Override:注解,它告诉编译器,我们下面的方法 onCreate 是要重写(覆盖)父类的方法,这可以防止你写错方法名。
  • onCreate(Bundle savedInstanceState):这是 Android 应用的“入口”方法之一,当你的 App 启动并显示这个界面时,这个方法就会被执行。
  • setContentView(R.layout.activity_main):这是最关键的一行!它告诉 Android 系统:“请把 res/layout/activity_main.xml 这个布局文件解析并显示在屏幕上”。R 是一个自动生成的类,存放了所有资源(图片、布局、字符串等)的 ID。

变量与数据类型

你的 App 需要存储信息,比如用户的名字、分数、开关状态等。

// 在 MainActivity 类的 onCreate 方法中或类的顶部定义
// 整数类型,用于年龄、分数等
int userAge = 25;
// 浮点数类型,用于价格、身高等
double userHeight = 1.75;
// 字符类型,用于单个字符
char gender = 'M';
// 布尔类型,用于判断开关、是否登录等
boolean isLoggedIn = false;
// 字符串类型,用于文本信息
String userName = "Alice";
// 在 Android 中,我们通常用 TextView 来显示文本
// 假设你在布局文件中定义了一个 id 为 tv_name 的 TextView
TextView nameTextView = findViewById(R.id.tv_name); // 通过 ID 找到这个视图
nameTextView.setText("Hello, " + userName); // 设置它的显示文本

方法

方法是一段可以重复执行的代码块,在 Android 中,方法用于封装逻辑。

// 定义一个方法,用于计算并返回用户的 BMI
public double calculateBMI(double weight, double height) {
    // BMI = 体重(kg) / 身高(m) 的平方
    return weight / (height * height);
}
// 在 onCreate 方法中调用这个方法
double bmi = calculateBMI(70, 1.75);
TextView bmiTextView = findViewById(R.id.tv_bmi);
bmiTextView.setText("Your BMI is: " + bmi);

控制流

让你的 App 能够根据不同情况做出不同反应。

Java for Android教程该怎么学?-图3
(图片来源网络,侵删)

if-else 语句

int score = 85;
if (score >= 90) {
    TextView resultView = findViewById(R.id.tv_result);
    resultView.setText("Grade: A");
} else if (score >= 80) {
    TextView resultView = findViewById(R.id.tv_result);
    resultView.setText("Grade: B");
} else {
    TextView resultView = findViewById(R.id.tv_result);
    resultView.setText("Grade: C or below");
}

for 循环:当你需要重复执行某项操作时使用,比如显示一个列表。

// 假设我们有一个字符串数组
String[] fruits = {"Apple", "Banana", "Cherry"};
// 遍历数组
for (int i = 0; i < fruits.length; i++) {
    // 在 Android 开发中,你可能会用这个循环来动态添加列表项
    Log.d("FruitList", "Fruit " + i + ": " + fruits[i]);
}

第三部分:Android 核心组件与 Java 的结合

这是 Java 在 Android 中的实际应用。

使用 XML 布局

Android 的界面布局通常写在 XML 文件中(如 activity_main.xml),而 Java/Kotlin 代码负责控制这些界面元素。

activity_main.xml 示例:

<LinearLayout ...>
    <TextView
        android:id="@+id/tv_hello"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!" />
    <Button
        android:id="@+id/btn_click_me"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Click Me" />
</LinearLayout>

MainActivity.java 中如何使用:

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // 1. 通过 findViewById 找到 Button 和 TextView
        Button myButton = findViewById(R.id.btn_click_me);
        TextView myTextView = findViewById(R.id.tv_hello);
        // 2. 为 Button 设置一个点击监听器
        myButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 当按钮被点击时,这个方法里的代码会执行
                myTextView.setText("Button was clicked!");
            }
        });
    }
}

setOnClickListener 是 Android 中最常用的交互方式,它需要一个 View.OnClickListener 对象,这个对象里有一个 onClick() 方法,当点击事件发生时,系统会自动调用它。

处理用户输入

最常见的输入是 EditText(文本框)。

activity_main.xml 添加一个 EditText:

<EditText
    android:id="@+id/et_name"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="Enter your name" />

MainActivity.java 中获取输入内容:

// 在 onCreate 方法中
EditText nameEditText = findViewById(R.id.et_name);
Button submitButton = findViewById(R.id.btn_submit); // 假设有一个提交按钮
submitButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // 获取 EditText 中的文本
        String name = nameEditText.getText().toString();
        // 检查输入是否为空
        if (name.isEmpty()) {
            Toast.makeText(MainActivity.this, "Name cannot be empty!", Toast.LENGTH_SHORT).show();
        } else {
            Toast.makeText(MainActivity.this, "Hello, " + name, Toast.LENGTH_LONG).show();
        }
    }
});

getText().toString():这是从 EditText 获取文本的标准做法。getText() 返回的是 Editable 类型,需要用 .toString() 转换成字符串。 Toast.makeText(...).show():这是一个非常方便的 Android API,用于在屏幕上短暂地显示一个小提示框。


第四部分:进阶 Java 概念(Android 必备)

列表

几乎所有的 App 都有列表(如联系人、新闻、设置项),在 Android 中,这通常通过 RecyclerView 实现。

  • 数据源:一个 ListArrayList,用来存放你的数据(如一个字符串列表)。
  • 适配器:一个 Java 类(如 MyAdapter),它负责将数据源中的每一项数据“适配”并“填充”到列表的每一个条目布局中。
  • 布局管理器:决定列表如何排列(垂直、水平、网格)。

基本流程

  1. 在 XML 中定义 RecyclerView
  2. 在 Java 中创建一个数据源(ArrayList<String>)。
  3. 创建一个 Adapter 类,接收数据源,并实现其必要方法(onCreateViewHolder, onBindViewHolder)。
  4. MainActivity 中,找到 RecyclerView,设置 LayoutManagerAdapter

Intent

Intent 是 Android 的“信使”,用于启动组件(如从 Activity A 跳转到 Activity B)或发送广播。

显式 Intent(明确知道要启动哪个组件):

// 从 MainActivity 跳转到 SecondActivity
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
startActivity(intent); // 启动新的活动

隐式 Intent(声明一个动作,让系统选择合适的组件来处理,如打开网页、拨打电话):

// 打开一个网页
Uri webpage = Uri.parse("https://www.google.com");
Intent intent = new Intent(Intent.ACTION_VIEW, webpage);
if (intent.resolveActivity(getPackageManager()) != null) {
    startActivity(intent);
}

异步任务

网络请求、文件读写、数据库操作等都不能在主线程(UI线程)中进行,否则会导致应用“卡死”(ANR - Application Not Responding),Java 提供了多种方式来处理耗时任务:

  • AsyncTask(简单但已过时,不推荐新项目使用):可以轻松地在后台线程执行任务,并在完成后更新 UI。
  • Thread + Handler:更底层的方式,通过 Handler 在不同线程间通信。
  • java.util.concurrent:提供了强大的线程池工具,如 ExecutorService
  • RxJava / Kotlin Coroutines:现代 Android 开发中处理异步操作的主流和推荐方式。

第五部分:学习路径与资源推荐

  1. 打好 Java 基础

    • 书籍:《Head First Java》(图文并茂,适合入门)、《Java核心技术 卷I》(更系统、深入)。
    • 在线教程:W3Schools, TutorialsPoint, Runoob 的 Java 教程。
    • 视频:B站、YouTube 上的 "Java for beginners" 系列视频。
  2. 结合 Android 实践

    • 官方文档Google Android Developers,这是最权威、最准确的资源,从 "Build your first app" 开始。
    • 官方 Codelabs:动手实践的项目式教程,非常棒。
    • 书籍:《Android编程权威指南》(被誉为“Android 圣经”,使用 Kotlin,但思想通用)。
    • 视频课程:Udemy, Coursera, B站 上的高质量 Android 课程(注意选择使用 Java 的或同时讲解 Java/Kotlin 的)。
  3. 实践!实践!再实践!

    • 模仿:跟着教程做一个简单的计算器、天气预报 App。
    • 创造:尝试自己做一个你想用的 App,哪怕功能很简单。
    • 阅读源码:去 GitHub 上找一些简单的开源 Android 项目,看看别人是怎么写的。

祝你学习顺利,早日开发出自己的 Android 应用!

分享:
扫描分享到社交APP
上一篇
下一篇