零基础学Java——第一章:Java基础入门

第一章:Java基础入门

Java简介与历史

Java语言的起源

  • Java语言由Sun公司(现已被Oracle收购)的James Gosling等人于1995年开发
  • 最初被称为Oak,后改名为Java
  • 设计初衷是为家用电器等嵌入式设备提供编程语言
  • Java的名字来源于Java岛盛产的咖啡,这也是为什么Java的图标是一杯咖啡

Java的特点

  • 简单性:语法类似C++但去除了指针等复杂特性,更容易学习和使用
  • 面向对象:完全面向对象的编程语言,一切皆对象(除基本数据类型外)
  • 平台无关性:“一次编写,到处运行”(Write Once, Run Anywhere)
    • Java代码编译成字节码,可在任何有Java虚拟机(JVM)的平台上运行
    • 不需要针对不同操作系统重写代码
  • 安全性:内置多层安全机制,如沙箱执行环境,防止恶意代码破坏系统
  • 多线程:内置多线程支持,简化并发编程
  • 分布式:设计用于分布式环境,内置网络功能支持
  • 健壮性:强类型检查,自动内存管理(垃圾回收),异常处理机制

Java的发展历程

  • JDK 1.0 (1996):初始版本,包含基本语言特性和类库
  • J2SE 1.2 (1998):引入集合框架,增强GUI功能
  • J2SE 5.0 (2004):增加泛型、注解、枚举、可变参数等重要特性
  • Java SE 8 (2014):引入Lambda表达式、Stream API、新的日期时间API
  • Java SE 11 (2018):第一个长期支持版本(LTS),模块化系统成熟
  • Java SE 17 (2021):最新的长期支持版本(LTS),增加密封类等特性

Java的应用领域

  • 企业级应用:大型信息系统、电子商务平台、金融系统
  • 移动应用:Android应用开发(Android使用Java作为主要开发语言)
  • Web应用:网站后端、Web服务、微服务
  • 桌面应用:跨平台GUI应用程序
  • 大数据处理:Hadoop、Spark等大数据框架
  • 科学计算:数值分析、模拟仿真
  • 嵌入式系统:智能卡、消费电子产品

开发环境搭建

JDK安装与配置

JDK (Java Development Kit) 是Java开发的核心工具包,包含:

  • JRE (Java Runtime Environment):Java运行环境,包含JVM和核心类库
  • 编译器:将Java源代码编译为字节码
  • 调试器:用于调试Java程序
  • 开发工具:如javadoc(文档生成工具)、jar(打包工具)等
下载JDK
  1. 访问Oracle官网 (https://www.oracle.com/java/technologies/downloads/) 或OpenJDK网站
  2. 选择适合你操作系统的JDK版本(推荐使用LTS版本,如Java 17)
  3. 下载安装包
Windows系统安装配置
  1. 运行下载的安装程序,按照向导完成安装
  2. 配置环境变量:
    • 右键"此电脑"→"属性"→"高级系统设置"→"环境变量"
    • 新建系统变量JAVA_HOME,值为JDK安装目录(如C:\Program Files\Java\jdk-17
    • 编辑系统变量Path,添加%JAVA_HOME%\bin
  3. 打开命令提示符,输入java -version验证安装
macOS系统安装配置
  1. 运行下载的安装程序,按照向导完成安装
  2. 打开终端,输入java -version验证安装
  3. 如需手动配置环境变量,编辑~/.bash_profile~/.zshrc文件:
    export JAVA_HOME=$(/usr/libexec/java_home)
    export PATH=$JAVA_HOME/bin:$PATH
    
Linux系统安装配置
  1. 使用包管理器安装OpenJDK(以Ubuntu为例):
    sudo apt update
    sudo apt install openjdk-17-jdk
    
  2. 配置环境变量,编辑/etc/profile~/.bashrc文件:
    export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
    export PATH=$JAVA_HOME/bin:$PATH
    
  3. 使环境变量生效:source /etc/profilesource ~/.bashrc
  4. 验证安装:java -version

集成开发环境(IDE)选择

IDE能大幅提高开发效率,为初学者提供代码补全、错误检查等功能。

IntelliJ IDEA
  • 优点:功能强大,智能代码补全,专业开发首选
  • 缺点:完整版需付费,学习曲线较陡
  • 适合人群:准备长期从事Java开发的学习者
Eclipse
  • 优点:开源免费,插件丰富,轻量级
  • 缺点:界面不够现代,有时响应较慢
  • 适合人群:初学者,预算有限的学习者
NetBeans
  • 优点:Oracle官方支持,开箱即用,内置GUI设计器
  • 缺点:相对较重,启动较慢
  • 适合人群:喜欢一站式解决方案的学习者
VS Code
  • 优点:轻量级,启动快,配合插件可用于Java开发
  • 缺点:需要额外配置,不是专门为Java设计
  • 适合人群:已经熟悉VS Code的学习者

初学者推荐:Eclipse或IntelliJ IDEA社区版,两者都免费且功能足够学习使用。

IDE安装与配置(以IntelliJ IDEA为例)

  1. 访问JetBrains官网下载IntelliJ IDEA社区版(免费)
  2. 运行安装程序,按照向导完成安装
  3. 首次启动时,选择UI主题和插件
  4. 配置JDK路径:
    • 点击File > Project Structure
    • Platform Settings > SDKs中添加已安装的JDK
  5. 熟悉IDE界面:
    • 项目视图:显示项目文件结构
    • 编辑器:编写代码的主要区域
    • 控制台:显示程序输出和错误信息
    • 工具窗口:提供各种辅助功能

创建第一个项目

  1. 点击File > New > Project
  2. 选择Java项目类型
  3. 设置项目名称和位置
  4. 点击Finish创建项目
  5. 在项目中创建新的Java类:右键点击src目录,选择New > Java Class

第一个Java程序

Hello World程序

让我们创建第一个Java程序,向世界问好!

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}

程序结构解析

让我们逐行分析这个简单的程序:

  • public class HelloWorld:类声明

    • public:访问修饰符,表示这个类可以被任何其他类访问
    • class:关键字,表示定义一个类
    • HelloWorld:类名,必须与文件名相同(HelloWorld.java)
  • public static void main(String[] args):主方法声明,程序入口

    • public:访问修饰符,允许JVM调用这个方法
    • static:关键字,表示这是一个类方法,不需要创建对象就能调用
    • void:返回类型,表示这个方法不返回任何值
    • main:方法名,JVM会寻找这个特定名称的方法作为程序入口
    • String[] args:命令行参数,以字符串数组形式传入
  • System.out.println("Hello, World!");:输出语句

    • System:Java核心类,提供系统相关功能
    • out:System类的静态成员,标准输出流
    • println():输出一行文本并换行的方法
    • "Hello, World!":要输出的字符串
    • ;:语句结束符
  • 大括号{}:定义代码块,包含方法体或类体

编译与运行

使用命令行
  1. 创建文件HelloWorld.java,输入上面的代码
  2. 打开命令行,导航到文件所在目录
  3. 编译:javac HelloWorld.java(生成HelloWorld.class文件)
  4. 运行:java HelloWorld
使用IDE
  1. 在IDE中创建Java类HelloWorld
  2. 输入代码
  3. 点击运行按钮(通常是绿色三角形)

Java程序的执行过程

  1. 编写源代码(.java文件)
  2. 编译源代码生成字节码(.class文件)
  3. JVM加载字节码
  4. JVM解释执行字节码

Java是混合型语言:编译型(源代码→字节码)+ 解释型(JVM解释执行字节码)

常见错误与解决方法

  1. 类名与文件名不匹配:Java要求公共类的名称必须与文件名完全一致(包括大小写)
  2. 缺少分号:Java语句必须以分号结束
  3. 大小写错误:Java区分大小写,System不等于system
  4. 路径问题:运行时找不到类,检查当前目录和类路径

基本语法规则

标识符

标识符是用来命名类、变量、方法等程序元素的名称。

命名规则
  • 由字母、数字、下划线(_)或美元符号($)组成
  • 不能以数字开头
  • 不能使用Java关键字
  • 区分大小写
  • 长度无限制

有效的标识符:userName, _value, $price, user123
无效的标识符:123user(以数字开头), user-name(包含连字符), class(关键字)

命名约定

Java有一套标准的命名约定,虽然不强制执行,但遵循这些约定可以使代码更易读。

  • 类名:首字母大写,使用驼峰命名法(如HelloWorld, StudentInfo
  • 方法名和变量名:首字母小写,使用驼峰命名法(如firstName, calculateTotal
  • 常量名:全部大写,单词间用下划线分隔(如MAX_VALUE, PI
  • 包名:全部小写(如java.lang, com.example.project

关键字

关键字是Java语言预定义的、有特殊含义的标识符,不能用作变量名、类名等。

常用关键字
  • 数据类型:boolean, byte, char, double, float, int, long, short
  • 流程控制:if, else, switch, case, default, for, while, do, break, continue, return
  • 修饰符:public, private, protected, static, final, abstract, synchronized, volatile
  • 类相关:class, interface, enum, extends, implements, new, this, super
  • 异常处理:try, catch, finally, throw, throws
  • 包相关:package, import
  • 其他:void, null, true, false
保留字

保留字是Java预留的关键字,当前版本未使用,但未来版本可能会使用:goto, const

代码结构

语句

Java语句是执行特定操作的代码单元,以分号(;)结束:

int age = 25;  // 声明并初始化变量
System.out.println("Age: " + age);  // 输出语句
代码块

代码块是由一对大括号{}包围的语句集合:

{
    int x = 10;
    System.out.println(x);
}  // x的作用域仅限于这个代码块
缩进与格式

Java不强制要求特定的缩进,但良好的缩进和格式可以提高代码可读性:

public class Example {
    public static void main(String[] args) {
        if (args.length > 0) {
            System.out.println("Hello, " + args[0]);
        } else {
            System.out.println("Hello, World");
        }
    }
}

变量与数据类型

基本数据类型

Java有8种基本数据类型,分为4类:

整数类型
  • byte:8位,范围-128到127

    byte smallNumber = 100;
    
  • short:16位,范围-32,768到32,767

    short mediumNumber = 1000;
    
  • int:32位,范围约-21亿到21亿(最常用的整数类型)

    int standardNumber = 100000;
    
  • long:64位,范围约-9千万兆到9千万兆(需要后缀L或l)

    long largeNumber = 1000000000L;
    
浮点类型
  • float:32位,单精度浮点数(需要后缀F或f)

    float decimalNumber = 3.14f;
    
  • double:64位,双精度浮点数(默认的小数类型)

    double preciseNumber = 3.14159265359;
    
字符类型
  • char:16位,表示单个Unicode字符,使用单引号
    char letter = 'A';
    char unicodeChar = '\u0041';  // Unicode编码,也是'A'
    
布尔类型
  • boolean:表示真(true)或假(false)
    boolean isJavaFun = true;
    boolean isBoring = false;
    

变量声明与初始化

变量是存储数据的容器,使用前必须声明。

变量声明
数据类型 变量名;  // 声明变量

例如:

int age;  // 声明整型变量age
变量初始化
数据类型 变量名 = 初始值;  // 声明并初始化变量

例如:

int age = 25;                // 声明并初始化整型变量
double salary = 5000.50;     // 声明并初始化双精度浮点型变量
char grade = 'A';            // 声明并初始化字符变量
boolean isStudent = true;    // 声明并初始化布尔变量
多个变量声明
int x = 10, y = 20, z = 30;  // 声明并初始化多个同类型变量

常量声明

常量是值不能改变的变量,使用final关键字声明。

final double PI = 3.14159;   // 声明常量
final int MAX_USERS = 100;    // 声明常量

常量命名通常全部大写,单词间用下划线分隔。

引用数据类型

除了基本数据类型,Java中的其他所有类型都是引用类型,它们存储对象的引用(内存地址)。

类(Class)
String name = "John";  // String是Java提供的类
Person person = new Person();  // 自定义类
接口(Interface)
List<String> names = new ArrayList<>();  // List是接口,ArrayList是实现类
数组(Array)
int[] numbers = {1, 2, 3, 4, 5};  // 整型数组
String[] fruits = {"Apple", "Banana", "Orange"};  // 字符串数组
字符串(String)

字符串是Java中特殊的引用类型,使用双引号:

String greeting = "Hello, Java!";  // 创建字符串
String empty = "";  // 空字符串

字符串操作示例:

String firstName = "John";
String lastName = "Doe";
String fullName = firstName + " " + lastName;  // 字符串连接
int length = fullName.length();  // 获取字符串长度
boolean containsJohn = fullName.contains("John");  // 检查是否包含子串

类型转换

自动类型转换(隐式转换)

当小类型转换为大类型时,Java会自动进行转换:

byte -> short -> int -> long -> float -> double
char -> int

例如:

int x = 10;
long y = x;      // 自动类型转换,int转为long
long z = 100;    // 100是int类型,自动转为long
double d = z;    // 自动类型转换,long转为double
强制类型转换(显式转换)

当大类型转换为小类型时,需要进行强制类型转换,可能会丢失精度:

小类型变量 = (小类型)大类型变量;

例如:

double z = 3.14;
int w = (int)z;  // 强制类型转换,w = 3,小数部分被截断

long bigNum = 1234567890L;
int smallNum = (int)bigNum;  // 如果bigNum超出int范围,会丢失数据
字符串与其他类型的转换

其他类型转字符串

int num = 100;
String str1 = Integer.toString(num);  // 使用包装类的toString方法
String str2 = String.valueOf(num);    // 使用String的valueOf方法
String str3 = num + "";              // 连接空字符串(简便方法)

字符串转其他类型

String numStr = "100";
int num1 = Integer.parseInt(numStr);    // 字符串转int
double num2 = Double.parseDouble("3.14");  // 字符串转double
boolean bool = Boolean.parseBoolean("true");  // 字符串转boolean

基本输入输出

标准输出

Java提供了多种向控制台输出信息的方法:

System.out.println()

输出内容并换行:

System.out.println("Hello, Java!");  // 输出字符串并换行
System.out.println(42);              // 输出数字并换行
System.out.println("Age: " + 25);    // 输出拼接内容并换行
System.out.print()

输出内容但不换行:

System.out.print("Hello, ");  // 输出不换行
System.out.print("World!");   // 接着上一个输出
// 结果: Hello, World!
System.out.printf()

格式化输出,类似C语言的printf函数:

System.out.printf("圆周率是 %.2f\n", 3.1415926);  // 保留两位小数
System.out.printf("姓名: %s, 年龄: %d\n", "张三", 25);  // 字符串和整数

常用格式说明符:

  • %d:整数
  • %f:浮点数
  • %s:字符串
  • %c:字符
  • %b:布尔值
  • %n\n:换行

标准输入

Java使用Scanner类从控制台读取输入:

import java.util.Scanner;  // 导入Scanner类

public class InputExample {
    public static void main(String[] args) {
        // 创建Scanner对象
        Scanner scanner = new Scanner(System.in);
        
        // 提示用户输入
        System.out.print("请输入您的姓名:");
        String name = scanner.nextLine();  // 读取一行文本
        
        System.out.print("请输入您的年龄:");
        int age = scanner.nextInt();       // 读取整数
        
        // 注意:nextInt()后如果要读取字符串,需要先调用nextLine()消耗换行符
        scanner.nextLine();
        
        System.out.print("请输入您的职业:");
        String job = scanner.nextLine();   // 读取一行文本
        
        // 输出读取的信息
        System.out.println("\n您的信息:");
        System.out.println("姓名:" + name);
        System.out.println("年龄:" + age);
        System.out.println("职业:" + job);
        
        // 关闭Scanner
        scanner.close();  // 良好习惯,防止资源泄露
    }
}
Scanner常用方法
  • nextLine():读取一行文本(到回车)
  • next():读取一个单词(到空格)
  • nextInt():读取一个整数
  • nextDouble():读取一个双精度浮点数
  • nextBoolean():读取一个布尔值
  • hasNext():检查是否还有输入
注意事项
  1. 使用nextInt()nextDouble()等方法后,如果要使用nextLine()读取字符串,需要先额外调用一次nextLine()来消耗换行符
  2. 输入不符合预期类型时会抛出异常,初学者可以先不处理异常
  3. 使用完毕后应调用close()方法关闭Scanner

文件输入输出(简介)

Java也支持文件输入输出,这里简单介绍:

import java.io.File;
import java.io.PrintWriter;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class FileIOExample {
    public static void main(String[] args) {
        // 写入文件
        try {
            PrintWriter writer = new PrintWriter("output.txt");
            writer.println("Hello, File IO!");
            writer.println("这是第二行");
            writer.close();
            System.out.println("文件写入成功");
        } catch (FileNotFoundException e) {
            System.out.println("写入文件时出错");
        }
        
        // 读取文件
        try {
            File file = new File("output.txt");
            Scanner fileScanner = new Scanner(file);
            while (fileScanner.hasNextLine()) {
                String line = fileScanner.nextLine();
                System.out.println("读取: " + line);
            }
            fileScanner.close();
        } catch (FileNotFoundException e) {
            System.out.println("找不到文件");
        }
    }
}

文件IO是更高级的主题,将在后续章节详细介绍。

运算符与表达式

算术运算符

用于执行基本的数学运算:

  • 加法+

    int sum = 5 + 3;  // sum = 8
    
  • 减法-

    int difference = 10 - 4;  // difference = 6
    
  • 乘法*

    int product = 4 * 3;  // product = 12
    
  • 除法/

    int quotient1 = 10 / 3;    // quotient1 = 3 (整数除法,结果取整)
    double quotient2 = 10.0 / 3;  // quotient2 = 3.3333... (浮点数除法)
    
  • 取模(求余)%

    int remainder = 10 % 3;  // remainder = 1 (10除以3的余数)
    
  • 自增++

    int a = 5;
    a++;  // 等价于 a
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值