Java 新手宝典(带案例)
一、入门基础
1. 环境搭建
- JDK 安装
- 访问 Oracle 或 OpenJDK 官方网站,根据自己的操作系统(Windows、Linux、Mac OS)下载合适的 JDK 版本。
- 安装过程中按照提示操作,注意记住安装路径。
- 环境变量配置
- Windows:在系统环境变量中配置
JAVA_HOME
(指向 JDK 安装目录)、PATH
(添加%JAVA_HOME%\bin
)和CLASSPATH
(可设置为.
表示当前目录)。 - Linux/Mac OS:编辑
~/.bashrc
或~/.bash_profile
文件,添加类似如下内容:
- Windows:在系统环境变量中配置
export JAVA_HOME=/path/to/your/jdk
export PATH=$JAVA_HOME/bin:$PATH
然后执行 source ~/.bashrc
或 source ~/.bash_profile
使配置生效。
- 验证安装
- 打开命令行工具,输入
java -version
和javac -version
,如果能正确显示版本信息,说明 JDK 安装和配置成功。
- 打开命令行工具,输入
2. 第一个 Java 程序
- 创建文件:使用文本编辑器创建一个名为
HelloWorld.java
的文件。 - 编写代码:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
- 编译运行
- 打开命令行工具,进入
HelloWorld.java
所在目录,执行javac HelloWorld.java
进行编译,会生成一个HelloWorld.class
文件。 - 接着执行
java HelloWorld
,屏幕将输出Hello, World!
。
- 打开命令行工具,进入
3. 基本语法
- 变量和数据类型
- 基本数据类型:
byte
、short
、int
、long
、float
、double
、char
、boolean
。 - 引用数据类型:如
String
、数组、类、接口等。
- 基本数据类型:
int num = 10;
double price = 9.99;
char grade = 'A';
boolean isTrue = true;
String name = "John";
- 运算符
- 算术运算符:
+
、-
、*
、/
、%
等。 - 关系运算符:
==
、!=
、>
、<
、>=
、<=
等。 - 逻辑运算符:
&&
、||
、!
等。
- 算术运算符:
- 控制语句
- 条件语句:
if-else
、switch
。
- 条件语句:
if (num > 0) {
System.out.println("Positive number");
} else if (num < 0) {
System.out.println("Negative number");
} else {
System.out.println("Zero");
}
switch (grade) {
case 'A':
System.out.println("Excellent");
break;
case 'B':
System.out.println("Good");
break;
default:
System.out.println("Need improvement");
}
- 循环语句:
for
、while
、do-while
。
for (int i = 0; i < 5; i++) {
System.out.println(i);
}
int j = 0;
while (j < 5) {
System.out.println(j);
j++;
}
int k = 0;
do {
System.out.println(k);
k++;
} while (k < 5);
二、面向对象编程
1. 类和对象
- 类的定义:类是对象的抽象,包含属性和方法。
class Person {
String name;
int age;
public void introduce() {
System.out.println("My name is " + name + " and I'm " + age + " years old.");
}
}
- 对象的创建和使用:通过
new
关键字创建对象,并调用对象的方法和访问属性。
Person person = new Person();
person.name = "Alice";
person.age = 20;
person.introduce();
2. 封装、继承和多态
- 封装:将数据和操作数据的方法绑定在一起,隐藏对象的内部实现细节。通过访问修饰符(
private
、protected
、public
)来实现。
class BankAccount {
private double balance;
public void deposit(double amount) {
if (amount > 0) {
balance += amount;
}
}
public double getBalance() {
return balance;
}
}
- 继承:子类继承父类的属性和方法,可实现代码复用和扩展。使用
extends
关键字。
class Student extends Person {
String studentId;
public void study() {
System.out.println(name + " is studying.");
}
}
- 多态:同一个方法调用可以根据对象的不同类型表现出不同的行为。通过继承和接口实现。
class Animal {
public void makeSound() {
System.out.println("Animal makes a sound");
}
}
class Dog extends Animal {
@Override
public void makeSound() {
System.out.println("Dog barks");
}
}
class Cat extends Animal {
@Override
public void makeSound() {
System.out.println("Cat meows");
}
}
// 多态的使用
Animal dog = new Dog();
Animal cat = new Cat();
dog.makeSound();
cat.makeSound();
3. 接口和抽象类
- 抽象类:包含抽象方法的类,不能实例化,需要子类继承并实现抽象方法。使用
abstract
关键字。
abstract class Shape {
abstract double area();
}
class Circle extends Shape {
double radius;
public Circle(double radius) {
this.radius = radius;
}
@Override
double area() {
return Math.PI * radius * radius;
}
}
- 接口:是一种特殊的抽象类型,只包含抽象方法和常量。类通过
implements
关键字实现接口。
interface Flyable {
void fly();
}
class Bird implements Flyable {
@Override
public void fly() {
System.out.println("Bird is flying");
}
}
三、常用类库
1. 字符串处理
String
类:用于处理不可变的字符串。
String str1 = "Hello";
String str2 = " World";
String result = str1 + str2;
System.out.println(result);
int length = result.length();
boolean contains = result.contains("World");
StringBuilder
和StringBuffer
类:用于处理可变的字符串,StringBuilder
是非线程安全的,StringBuffer
是线程安全的。
StringBuilder sb = new StringBuilder();
sb.append("Hello");
sb.append(" World");
String finalResult = sb.toString();
2. 集合框架
List
接口:有序的集合,可包含重复元素。常用实现类有ArrayList
和LinkedList
。
import java.util.ArrayList;
import java.util.List;
List<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
for (String fruit : list) {
System.out.println(fruit);
}
Set
接口:无序的集合,不包含重复元素。常用实现类有HashSet
。
import java.util.HashSet;
import java.util.Set;
Set<Integer> set = new HashSet<>();
set.add(1);
set.add(2);
set.add(2); // 重复元素不会被添加
for (int num : set) {
System.out.println(num);
}
Map
接口:键值对的集合,键是唯一的。常用实现类有HashMap
。
import java.util.HashMap;
import java.util.Map;
Map<String, Integer> map = new HashMap<>();
map.put("Apple", 1);
map.put("Banana", 2);
int value = map.get("Apple");
System.out.println(value);
3. 日期和时间处理
java.util.Date
和java.util.Calendar
类:旧的日期和时间处理类。
import java.util.Date;
import java.util.Calendar;
Date date = new Date();
System.out.println(date);
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, 2024);
calendar.set(Calendar.MONTH, Calendar.JANUARY);
calendar.set(Calendar.DAY_OF_MONTH, 1);
Date specificDate = calendar.getTime();
- Java 8 新的日期和时间 API:如
LocalDate
、LocalTime
、LocalDateTime
等。
import java.time.LocalDate;
import java.time.LocalTime;
import java.time.LocalDateTime;
LocalDate today = LocalDate.now();
LocalTime currentTime = LocalTime.now();
LocalDateTime dateTime = LocalDateTime.of(today, currentTime);
四、异常处理
1. 异常类型
- 检查异常:如
IOException
、SQLException
等,必须在代码中进行处理(捕获或抛出)。 - 非检查异常:如
NullPointerException
、ArrayIndexOutOfBoundsException
等,通常是程序逻辑错误导致的,不需要强制处理。
2. 异常处理语句
try-catch
语句:用于捕获和处理异常。
try {
int[] arr = {1, 2, 3};
System.out.println(arr[3]); // 会抛出 ArrayIndexOutOfBoundsException
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("Array index out of bounds: " + e.getMessage());
}
finally
语句:无论是否发生异常,finally
块中的代码都会执行。
try {
// 可能抛出异常的代码
} catch (Exception e) {
// 异常处理代码
} finally {
// 无论是否发生异常都会执行的代码
}
throws
关键字:用于在方法声明中抛出异常。
public void readFile() throws java.io.IOException {
// 读取文件的代码
}
五、开发工具和资源
1. 集成开发环境(IDE)
- Eclipse:开源、功能强大,有丰富的插件支持。
- IntelliJ IDEA:智能、高效,对 Java 开发有很好的支持,分为社区版和旗舰版。
- NetBeans:简单易用,适合初学者。
2. 学习资源
- 官方文档:Oracle Java 官方文档是学习 Java 的权威资料。
- 在线教程:如菜鸟教程、W3Schools 等,提供了丰富的 Java 教程和示例代码。
- 书籍:《Effective Java》《Java 核心技术》等是经典的 Java 学习书籍。
3. 代码托管平台
- GitHub:全球最大的开源代码托管平台,可以学习他人的代码,参与开源项目。
- GitLab:支持私有仓库,适合团队开发。
六、项目实践
1. 简单控制台项目
- 学生管理系统:实现学生信息的添加、删除、修改和查询功能。
- 图书管理系统:管理图书的借阅和归还信息。
2. Web 项目
- 使用 Servlet 和 JSP:搭建一个简单的 Web 应用,处理用户请求和显示动态内容。
- 使用 Spring Boot:快速搭建一个基于 Spring 框架的 Web 项目,简化开发流程。
通过以上内容的学习和实践,新手可以逐步掌握 Java 编程的基础知识和技能,为进一步深入学习和开发打下坚实的基础。在学习过程中,要多动手实践,遇到问题及时查阅资料和寻求帮助。