JAVA 主流技术教程引领你从基础语法、面向对象编程、集合框架到多线程编程的全面学习,通过实战项目加深理解,最终掌握Java 的核心技能。从简单实例到进阶知识,循序渐进地探索Java 世界,为你的技术栈添砖加瓦。
Java入门基础知识 Java语言的基础知识Java的历史与用途
Java 是由Sun Microsystems 于1995 年推出的面向对象的编程语言,因其跨平台(Java 虚拟机)特性、编写一次、到处运行(Write Once, Run Anywhere)的口号,以及丰富的类库支持,而广受欢迎。Java 被广泛应用于 Web 应用、企业级开发、移动应用(尤其是Android)以及游戏开发等领域。
安装与配置Java 开发环境
在开始Java 编程之前,你需要确保已经安装了Java Development Kit(JDK)。可以访问Java 官网下载最新版本的JDK,并按照官方指南完成安装。安装完成后,配置环境变量,使系统能够识别Java 命令。
# 安装JDK
wget https://download.java.net/java/GA/jdk11/Oracle_JDK11_for_Linux_UNIX_x86_64.tar.gz
tar -xzvf Oracle_JDK11_for_Linux_UNIX_x86_64.tar.gz
sudo mv jdk11 /usr/local/
# 设置环境变量
echo 'export PATH=$PATH:/usr/local/jdk11/bin' >> ~/.bashrc
source ~/.bashrc
基本语法与数据类型
Java 是一种强类型语言,意味着变量在声明时必须指定其类型,例如:
int age = 25; // int 类型整数变量
String name = "Alice"; // String 类型字符串变量
Java 支持的基本数据类型如下:
- 整型:
byte
,short
,int
,long
- 浮点型:
float
,double
- 字符型:
char
- 布尔型:
boolean
Java 的注释
Java 支持单行注释(使用//
)和多行注释(使用/* */
):
// 这是一行注释
/*
这是多行注释
可以包含多个语句
*/
编写第一个Java 程序
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
保存为HelloWorld.java
,使用以下命令编译并运行:
javac HelloWorld.java
java HelloWorld
输出应为:
Hello, World!
面向对象编程 类和对象
在Java 中,类是对象的模板,对象是类的实例。例如:
class Person {
String name;
int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public void sayHello() {
System.out.println("Hello, my name is " + name + " and I am " + age + " years old.");
}
}
public class Main {
public static void main(String[] args) {
Person person = new Person("Alice", 25);
person.sayHello();
}
}
输出:
Hello, my name is Alice and I am 25 years old.
封装、继承与多态
封装
封装是隐藏类的内部实现细节的过程。例如,通过添加私有成员变量和公共访问器/修改器方法:
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public void sayHello() {
System.out.println("Hello, my name is " + name + " and I am " + age + " years old.");
}
}
继承
继承允许创建一个类(子类)从另一个类(父类)继承属性和方法:
class Student extends Person {
public Student(String name, int age) {
super(name, age); // 调用父类构造器
}
public void sayHello() {
System.out.println("Hi, I am a student.");
}
}
多态
多态允许不同类型的对象对相同方法做出响应:
class AbstractClass {
public void saySomething() {
System.out.println("I am a parent class object.");
}
}
class ChildClass extends AbstractClass {
public void saySomething() {
System.out.println("I am a child class object.");
}
}
public class Main {
public static void main(String[] args) {
AbstractClass parent = new ChildClass(); // 实例化子类对象并当作父类对象引用
parent.saySomething(); // 调用父类的saySomething 方法,输出:I am a child class object.
}
}
Java 集合框架 List、Set 与 Map 集合
List 集合
列表(List)是有序的集合,可以包含重复元素。
List<String> names = new ArrayList<>();
names.add("Alice");
names.add("Bob");
names.add("Charlie");
for (String name : names) {
System.out.println(name);
}
Set 集合
集合(Set)是无序、不重复的元素集合。
Set<String> names = new HashSet<>();
names.add("Alice");
names.add("Bob");
names.add("Charlie");
for (String name : names) {
System.out.println(name);
}
Map 集合
映射(Map)关联键值对。
Map<String, String> contacts = new HashMap<>();
contacts.put("Alice", "alice@example.com");
contacts.put("Bob", "bob@example.com");
for (String key : contacts.keySet()) {
System.out.println(key + " : " + contacts.get(key));
}
Iterator 和 ListIterator 的运用
List<Integer> nums = new ArrayList<>();
nums.add(1);
nums.add(2);
nums.add(3);
Iterator<Integer> iterator = nums.iterator();
while (iterator.hasNext()) {
int num = iterator.next();
System.out.println(num);
}
ListIterator<Integer> listIterator = nums.listIterator();
while (listIterator.hasNext()) {
Integer num = listIterator.next();
System.out.println(num);
if (num == 2) {
listIterator.set(num * 10);
}
}
集合框架的高级特性
Java 集合框架提供了丰富的接口和实现类,满足不同场景的集合操作需求。
Java 多线程编程 线程的创建与启动
class CounterThread implements Runnable {
private int count;
private final Object lock = new Object();
public CounterThread(int count) {
this.count = count;
}
public void run() {
while (true) {
synchronized (lock) {
count++;
if (count == 100) {
break;
}
System.out.println("Count: " + count);
}
}
}
}
public class Main {
public static void main(String[] args) {
Thread thread = new Thread(new CounterThread(0));
thread.start();
}
}
同步机制和线程安全
使用 synchronized
关键字确保线程安全:
class Counter {
private int count;
public synchronized void increment() {
count++;
}
public synchronized int getCount() {
return count;
}
}
public class Main {
public static void main(String[] args) {
Counter counter = new Counter();
Thread thread1 = new Thread(() -> {
for (int i = 0; i < 1000; i++) {
counter.increment();
}
});
Thread thread2 = new Thread(() -> {
for (int i = 0; i < 1000; i++) {
System.out.println(counter.getCount());
}
});
thread1.start();
thread2.start();
}
}
线程池和并发控制
使用 ExecutorService
来创建线程池:
ExecutorService executor = Executors.newFixedThreadPool(4);
executor.submit(() -> {
// 执行任务
});
executor.submit(() -> {
// 执行任务
});
executor.shutdown();
Java 输入输出与文件操作 文件读写的基本操作
import java.io.*;
public class Main {
public static void main(String[] args) {
try (BufferedReader reader = new BufferedReader(new FileReader("input.txt"));
PrintWriter writer = new PrintWriter(new FileWriter("output.txt"))) {
String line;
while ((line = reader.readLine()) != null) {
writer.println("Processed: " + line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
字节流与字符流的使用
import java.io.*;
public class Main {
public static void main(String[] args) {
try (InputStream input = new FileInputStream("input.bin");
OutputStream output = new FileOutputStream("output.bin")) {
byte[] buffer = new byte[1024];
int length;
while ((length = input.read(buffer)) != -1) {
output.write(buffer, 0, length);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
使用 Scanner 和 BufferedReader 进行输入输出
import java.util.Scanner;
import java.io.*;
public class Main {
public static void main(String[] args) {
try (Scanner scanner = new Scanner(System.in);
PrintWriter writer = new PrintWriter(System.out)) {
System.out.print("Enter your name: ");
String name = scanner.nextLine();
writer.println("Hello, " + name);
} catch (Exception e) {
e.printStackTrace();
}
}
}
实战项目与进阶学习 通过一个简单的项目实例加深理解
项目:简易图书管理系统
import java.util.*;
public class Library {
private List<Book> books = new ArrayList<>();
public void addBook(Book book) {
books.add(book);
}
public void removeBook(Book book) {
books.remove(book);
}
public List<Book> searchBooks(String keyword) {
List<Book> results = new ArrayList<>();
for (Book book : books) {
if (book.getTitle().toLowerCase().contains(keyword.toLowerCase())) {
results.add(book);
}
}
return results;
}
public static void main(String[] args) {
Library library = new Library();
Book book1 = new Book("Java Programming", "Alice Smith", 2022);
Book book2 = new Book("Python Basics", "Bob Johnson", 2021);
library.addBook(book1);
library.addBook(book2);
System.out.println("Search results:");
List<Book> results = library.searchBooks("Java");
for (Book book : results) {
System.out.println(book.getTitle());
}
}
}
网络资源推荐
- 慕课网 提供了大量的 Java 学习资源,包括基础到进阶的视频课程、实战项目和编程挑战,非常适合想要系统学习 Java 编程的初学者和进阶者。
- 深入了解 Java 语言特性及设计模式。
- 学习 Spring、MyBatis 等框架,构建企业级应用。
- 探索 Java 并发、性能优化知识。
- 实践 React、Vue、Angular 等前端框架,具备全栈开发能力。
- 关注 Java 新版本更新,如 JDK17 的特性。
随着技术的发展,关注 Java 社区动态和开源项目,参与技术交流和开源贡献,这将有助于保持技术竞争力和开拓职业发展机会。持续学习数据科学、人工智能、云计算等相关领域的知识,将有助于适应技术的快速变化,提升自身价值。
通过以上内容,你已经学会了 Java 的基础语法、面向对象编程、集合框架、多线程编程、文件操作等核心知识,并通过项目实践加深了理解。在接下来的学习中,你可以继续深入探索 Java 的高级特性,如并发编程、JVM 调优、微服务架构等,并将所学知识应用于实际项目中,不断提升自己的编程能力和技术栈。
共同学习,写下你的评论
评论加载中...
作者其他优质文章