Tổng quan về Ngôn ngữ lập trình Java

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

Trong Java, đặc điểm "Write Once, Run Anywhere" (WORA) liên quan đến khả năng nào?

  • Tự động tạo tài liệu từ mã nguồn.
  • Chạy trên nhiều hệ điều hành khác nhau mà không cần sửa đổi mã nguồn. (correct)
  • Biên dịch thành mã máy trực tiếp để tăng tốc độ thực thi.
  • Tự động sửa lỗi trong quá trình biên dịch.

Phương thức main trong Java có vai trò gì?

  • Thực hiện việc quản lý bộ nhớ tự động.
  • Là điểm bắt đầu thực thi của chương trình. (correct)
  • Xác định lớp cha của tất cả các lớp trong chương trình.
  • Khai báo các biến toàn cục của chương trình.

Kiểu dữ liệu nào sau đây KHÔNG phải là kiểu dữ liệu nguyên thủy trong Java?

  • `String` (correct)
  • `int`
  • `float`
  • `boolean`

Đoạn code sau in ra kết quả gì?

int x = 5;
int y = 10;
System.out.println(x > y ? "x is greater" : "y is greater or equal");

<p><code>y is greater or equal</code> (D)</p> Signup and view all the answers

Vòng lặp do-while khác vòng lặp while ở điểm nào?

<p>Vòng lặp <code>do-while</code> luôn thực hiện ít nhất một lần. (B)</p> Signup and view all the answers

Trong lập trình hướng đối tượng, khái niệm đóng gói (encapsulation) dùng để làm gì?

<p>Ẩn thông tin chi tiết bên trong của một đối tượng và chỉ cho phép truy cập thông qua các phương thức công khai. (B)</p> Signup and view all the answers

Phương thức nào sau đây được sử dụng để so sánh hai chuỗi trong Java, phân biệt chữ hoa chữ thường?

<p><code>equals()</code> (B)</p> Signup and view all the answers

Khối lệnh finally trong xử lý ngoại lệ được sử dụng để làm gì?

<p>Chứa mã được thực hiện bất kể có xảy ra ngoại lệ hay không. (B)</p> Signup and view all the answers

Từ khóa synchronized trong Java được sử dụng để làm gì trong lập trình đa luồng?

<p>Đồng bộ hóa truy cập vào các vùng dữ liệu quan trọng. (A)</p> Signup and view all the answers

Framework Spring trong Java cung cấp tính năng chính nào?

<p>Dependency injection và aspect-oriented programming. (B)</p> Signup and view all the answers

Flashcards

Java là gì?

Ngôn ngữ lập trình hướng đối tượng, đa nền tảng, dùng để phát triển ứng dụng doanh nghiệp và di động.

Tính đa nền tảng của Java

Java biên dịch mã nguồn thành bytecode, chạy trên JVM (Java Virtual Machine) ở nhiều hệ điều hành.

Garbage Collection (GC)

Cơ chế quản lý bộ nhớ tự động của Java, giúp giải phóng bộ nhớ không dùng, giảm thiểu lỗi.

Biến (Variable) trong Java

Khai báo một vùng nhớ để lưu trữ dữ liệu với một kiểu dữ liệu xác định.

Signup and view all the flashcards

Kiểu dữ liệu nguyên thủy

Các kiểu dữ liệu cơ bản như int, float, boolean, char,... lưu trữ trực tiếp giá trị.

Signup and view all the flashcards

Các loại toán tử trong Java

Các toán tử thực hiện phép tính số học (+, -, *, /, %), so sánh (==, !=, >, =)

Signup and view all the flashcards

Câu lệnh điều kiện if-else

Cấu trúc điều khiển thực hiện code khác nhau dựa trên điều kiện (if, else if, else).

Signup and view all the flashcards

Lớp (Class) trong Java

Khuôn mẫu để tạo ra các đối tượng; định nghĩa thuộc tính và phương thức.

Signup and view all the flashcards

Tính đóng gói (Encapsulation)

Ẩn chi tiết bên trong đối tượng, chỉ cho phép truy cập qua phương thức công khai.

Signup and view all the flashcards

Tính kế thừa (Inheritance)

Cho phép lớp con kế thừa thuộc tính và phương thức từ lớp cha, tái sử dụng code.

Signup and view all the flashcards

Study Notes

  • Java là một ngôn ngữ lập trình hướng đối tượng, đa nền tảng, và được sử dụng rộng rãi trong phát triển ứng dụng doanh nghiệp, ứng dụng di động (Android), và nhiều lĩnh vực khác.

Đặc điểm chính của Java

  • Java hỗ trợ đầy đủ các khái niệm của lập trình hướng đối tượng như đóng gói, kế thừa, và đa hình.
  • "Write Once, Run Anywhere" (WORA) nghĩa là Java biên dịch thành bytecode, có thể chạy trên bất kỳ máy ảo Java (JVM) nào.
  • Java có cơ chế quản lý bộ nhớ tự động (garbage collection) và kiểm tra kiểu dữ liệu nghiêm ngặt, giúp giảm thiểu lỗi và tăng tính bảo mật.
  • Mặc dù là ngôn ngữ thông dịch, Java có thể đạt hiệu năng cao nhờ công nghệ biên dịch Just-In-Time (JIT).
  • Java hỗ trợ lập trình đa luồng, cho phép thực hiện đồng thời nhiều tác vụ trong một chương trình.
  • Java có một cộng đồng phát triển lớn mạnh, cung cấp nhiều thư viện, framework, và công cụ hỗ trợ.

Cấu trúc chương trình Java cơ bản

  • Một chương trình Java bao gồm một hoặc nhiều lớp (class).
  • Mỗi lớp thường chứa các thuộc tính (fields/attributes) và phương thức (methods).
  • Điểm bắt đầu của chương trình là phương thức main.
  • Ví dụ về một chương trình Java cơ bản:
public class Main {
    public static void main(String[] args) {
        // Mã chương trình
        System.out.println("Hello, World!");
    }
}
  • public class Main: Khai báo một lớp công khai có tên là Main.
  • public static void main(String[] args): Khai báo phương thức main, là điểm khởi đầu của chương trình.
    • public: Phương thức có thể được truy cập từ bất kỳ đâu.
    • static: Phương thức thuộc về lớp Main chứ không phải một đối tượng cụ thể của lớp.
    • void: Phương thức không trả về giá trị nào.
    • String[] args: Mảng các chuỗi ký tự được truyền vào chương trình từ dòng lệnh.
  • System.out.println("Hello, World!");: In dòng chữ "Hello, World!" ra màn hình.

Các khái niệm cơ bản

  • Biến (Variables) là vùng nhớ được đặt tên để lưu trữ dữ liệu.
  • Cần khai báo kiểu dữ liệu của biến trước khi sử dụng.
    • Ví dụ: int age = 30;, String name = "John";
  • Kiểu dữ liệu (Data Types):
    • Kiểu dữ liệu nguyên thủy (primitive types): int, float, double, boolean, char, byte, short, long.
    • Kiểu dữ liệu đối tượng (object types): String, Integer, Double, các lớp tự định nghĩa.
  • Toán tử (Operators):
    • Toán tử số học: +, -, *, /, %.
    • Toán tử so sánh: ==, !=, >, =, <=.
    • Toán tử logic: && (AND), || (OR), ! (NOT).
    • Toán tử gán: =, +=, -=, *=, /=, %=.
  • Cấu trúc điều khiển (Control Structures):
    • Câu lệnh if: Thực hiện một khối lệnh nếu điều kiện là đúng.
if (age >= 18) {
    System.out.println("You are an adult.");
} else {
    System.out.println("You are a minor.");
}
- Câu lệnh `switch`: Chọn một trong nhiều khối lệnh để thực hiện dựa trên giá trị của một biểu thức.
switch (day) {
    case 1:
        System.out.println("Monday");
        break;
    case 2:
        System.out.println("Tuesday");
        break;
    default:
        System.out.println("Other day");
}
- Vòng lặp `for`: Lặp lại một khối lệnh một số lần xác định.
for (int i = 0; i < 10; i++) {
    System.out.println(i);
}
- Vòng lặp `while`: Lặp lại một khối lệnh cho đến khi điều kiện là sai.
int i = 0;
while (i < 10) {
    System.out.println(i);
    i++;
}
- Vòng lặp `do-while`: Tương tự như `while`, nhưng khối lệnh được thực hiện ít nhất một lần.
int i = 0;
do {
    System.out.println(i);
    i++;
} while (i < 10);

Lớp và đối tượng

  • Lớp (Class) là một khuôn mẫu (blueprint) để tạo ra các đối tượng.
  • Lớp định nghĩa các thuộc tính và phương thức mà các đối tượng của lớp sẽ có.
  • Đối tượng (Object) là một thể hiện (instance) của một lớp.
  • Đối tượng có các thuộc tính và phương thức được định nghĩa trong lớp.
  • Khai báo lớp:
class Dog {
    String name;
    int age;

    void bark() {
        System.out.println("Woof!");
    }
}
  • Tạo đối tượng:
Dog myDog = new Dog();
myDog.name = "Buddy";
myDog.age = 3;
myDog.bark();

Các nguyên tắc cơ bản của lập trình hướng đối tượng (OOP)

  • Đóng gói (Encapsulation) ẩn thông tin chi tiết bên trong của một đối tượng và chỉ cho phép truy cập thông qua các phương thức công khai (public methods), giúp bảo vệ dữ liệu và tránh việc sử dụng sai.
  • Kế thừa (Inheritance) cho phép một lớp (lớp con) kế thừa các thuộc tính và phương thức từ một lớp khác (lớp cha), thúc đẩy việc tái sử dụng mã và xây dựng hệ thống phân cấp các lớp.
class Animal {
    String name;
    void eat() {
        System.out.println("Eating...");
    }
}

class Cat extends Animal {
    void meow() {
        System.out.println("Meow!");
    }
}
  • Đa hình (Polymorphism) cho phép một đối tượng thuộc nhiều kiểu khác nhau.
  • Hai loại đa hình:
    • Đa hình tĩnh (static polymorphism) hay còn gọi là nạp chồng phương thức (method overloading): Định nghĩa nhiều phương thức có cùng tên nhưng khác tham số.
    • Đa hình động (dynamic polymorphism) hay còn gọi là ghi đè phương thức (method overriding): Lớp con ghi đè phương thức của lớp cha.
class Animal {
    void makeSound() {
        System.out.println("Generic animal sound");
    }
}

class Dog extends Animal {
    @Override
    void makeSound() {
        System.out.println("Woof!");
    }
}

Mảng (Arrays)

  • Là một tập hợp các phần tử có cùng kiểu dữ liệu, được lưu trữ liên tiếp trong bộ nhớ.
  • Truy cập các phần tử của mảng thông qua chỉ số (index), bắt đầu từ 0.
  • Khai báo mảng:
int[] numbers = new int[5]; // Mảng gồm 5 số nguyên
String[] names = {"Alice", "Bob", "Charlie"}; // Mảng gồm 3 chuỗi
  • Truy cập phần tử:
int firstNumber = numbers[0]; // Lấy phần tử đầu tiên
numbers[1] = 10; // Gán giá trị 10 cho phần tử thứ hai

Chuỗi (Strings)

  • Là một chuỗi các ký tự.
  • Trong Java, chuỗi là một đối tượng thuộc lớp String.
  • Chuỗi là bất biến (immutable), nghĩa là không thể thay đổi sau khi đã được tạo.
  • Các phương thức xử lý chuỗi:
    • length(): Trả về độ dài của chuỗi.
    • charAt(int index): Trả về ký tự tại vị trí index.
    • substring(int beginIndex, int endIndex): Trả về một chuỗi con từ vị trí beginIndex đến endIndex - 1.
    • equals(String anotherString): So sánh hai chuỗi (phân biệt chữ hoa chữ thường).
    • equalsIgnoreCase(String anotherString): So sánh hai chuỗi (không phân biệt chữ hoa chữ thường).
    • toUpperCase(): Chuyển đổi chuỗi thành chữ hoa.
    • toLowerCase(): Chuyển đổi chuỗi thành chữ thường.
    • indexOf(String str): Tìm vị trí xuất hiện đầu tiên của chuỗi str trong chuỗi gốc.
    • lastIndexOf(String str): Tìm vị trí xuất hiện cuối cùng của chuỗi str trong chuỗi gốc.

Xử lý ngoại lệ (Exception Handling)

  • Ngoại lệ (Exception) là một sự kiện bất thường xảy ra trong quá trình thực thi chương trình, làm gián đoạn luồng thực thi bình thường.
  • Xử lý ngoại lệ: Sử dụng khối try-catch để bắt và xử lý ngoại lệ.
    • Khối try chứa mã có thể gây ra ngoại lệ.
    • Khối catch chứa mã để xử lý ngoại lệ nếu nó xảy ra.
    • Khối finally (tùy chọn) chứa mã được thực hiện bất kể có xảy ra ngoại lệ hay không.
try {
    // Mã có thể gây ra ngoại lệ
    int result = 10 / 0; // Gây ra ArithmeticException
} catch (ArithmeticException e) {
    // Xử lý ngoại lệ
    System.err.println("Cannot divide by zero: " + e.getMessage());
} finally {
    // Mã được thực hiện bất kể có ngoại lệ hay không
    System.out.println("Finally block");
}
  • Các loại ngoại lệ:
    • Ngoại lệ được kiểm tra (checked exceptions): Bắt buộc phải xử lý hoặc khai báo ném ngoại lệ. Ví dụ: IOException, SQLException.
    • Ngoại lệ không được kiểm tra (unchecked exceptions): Không bắt buộc phải xử lý hoặc khai báo ném ngoại lệ. Ví dụ: ArithmeticException, NullPointerException.

Lập trình đa luồng (Multithreading)

  • Luồng (Thread) là một luồng thực thi (thread of execution) trong một chương trình.
  • Một chương trình có thể có nhiều luồng chạy đồng thời.
  • Lập trình đa luồng cho phép thực hiện đồng thời nhiều tác vụ trong một chương trình, cải thiện hiệu năng và khả năng phản hồi của ứng dụng.
  • Tạo luồng: Sử dụng lớp Thread hoặc interface Runnable.
// Cách 1: Kế thừa lớp Thread
class MyThread extends Thread {
    @Override
    public void run() {
        System.out.println("Thread is running");
    }
}

// Cách 2: Thực thi interface Runnable
class MyRunnable implements Runnable {
    @Override
    public void run() {
        System.out.println("Thread is running");
    }
}

// Khởi tạo và chạy luồng
MyThread thread1 = new MyThread();
thread1.start(); // Bắt đầu luồng

MyRunnable runnable = new MyRunnable();
Thread thread2 = new Thread(runnable);
thread2.start(); // Bắt đầu luồng
  • Đồng bộ hóa (Synchronization): Sử dụng từ khóa synchronized để bảo vệ các vùng dữ liệu quan trọng khỏi truy cập đồng thời từ nhiều luồng, tránh tình trạng race condition.
synchronized (this) {
    // Mã được bảo vệ
}

Thư viện và Framework

  • Java cung cấp một loạt các thư viện và framework mạnh mẽ để hỗ trợ phát triển ứng dụng.
  • Một số thư viện và framework phổ biến:
    • Java Collections Framework: Cung cấp các cấu trúc dữ liệu như danh sách, tập hợp, và bản đồ.
    • Java I/O: Cung cấp các lớp để đọc và ghi dữ liệu từ/đến các nguồn khác nhau.
    • JDBC (Java Database Connectivity): Cung cấp API để kết nối và tương tác với các cơ sở dữ liệu.
    • Spring Framework: Một framework ứng dụng toàn diện, cung cấp các tính năng như dependency injection, aspect-oriented programming, và hỗ trợ phát triển web.
    • Hibernate: Một ORM (Object-Relational Mapping) framework, giúp ánh xạ các đối tượng Java với các bảng trong cơ sở dữ liệu.
    • JavaFX và Swing: Các thư viện để xây dựng giao diện người dùng đồ họa (GUI).

Studying That Suits You

Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

Quiz Team

More Like This

Java Programming Lecture 1
10 questions

Java Programming Lecture 1

ComplimentaryLapSteelGuitar avatar
ComplimentaryLapSteelGuitar
Object-Oriented Programming in Java
10 questions
Use Quizgecko on...
Browser
Browser