Tổng hợp tài liệu Java cơ bản

Hưởng dẫn dịch chương trình Java: http://uet.vnu.edu.vn/~chauttm/guides/BuildingFirstJavaProgram.pdf

Head First Java: https://zimslifeintcs.files.wordpress.com/2011/12/head-first-java-2nd-edition.pdf

How to Program Java: http://mobile.skku.ac.kr/lecture/2017_1/CEL/how%20to%20program%20Java.pdf

Đọc dữ liệu từ file text trong Java

Trước khi học bài này bạn nên đọc lại bài:

Để hiểu rõ về cách Java đọc dữ liệu một chút vì nó rất quan trọng nếu bạn không hiểu rõ cái này thì sẽ mãi không làm chủ được Java đâu 🙂

Tổng quan

doc-du-lieu-yeulaptrinh.pw

Các luồng và class trong I/O file text

Nhắc lại nguyên lý đọc dữ liệu trong Java một chút: các thiết bị vào ra (bàn phím, màn hình…) qua luồng rồi ta mới nhận được thông tin.

 luong-trong-doc-file-yeulaptrinh.pwSử dụng BufferedReader BufferedWriter

Đọc, ghi file với BufferedReader và BufferedWriter là cách đọc nhanh nhất trong Java, ngoài ra nó còn có nhiều tính năng có sẵn kèm theo như: đọc cả dòng, encoding… Có nhiều cách đọc, ghi file nhưng mình khuyên các bạn nên dùng cách này dù nó có dài hơn một chút (code bên dưới).

import java.io.*;
import java.util.*;
 
public class ReadTest2
{
	static long total = 0;
 
	private static void ReadLines() {
		try {
			String s = "";
			BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
			while (stdin.ready()) {
				s = stdin.readLine();
				for (int i=0; i<s.length(); i++)
					total += s.charAt(i);
			}
		} catch (Exception e) { System.err.println("Error"); }
	}
 
	public static void main(String args[])
	{
		long startTime = System.nanoTime();
		ReadLines();
		long stopTime = System.nanoTime();
		System.err.println(stopTime - startTime);
		System.err.println("t" + total);
	}
}

Sử dụng FileReader và FileWriter

Thằng này thì không hỗ trợ đọc từng dòng, mã hóa và nó làm việc với bảng mã mặc định của hệ thống nên nó không phải là cách tốt để đọc và ghi file.

static void copyFile(FileReader inputFile, FileWriter outputFile) {
try{
  // Read the first character.  
  int nextChar = inputFile.read();
  // Have we reached the end of file?  
  while(nextChar != -1) {
    outputFile.write(nextChar);
    // Read the next character.
    nextChar = inputFile.read();
  }
  outputFile.flush();
}
catch(IOException e) {  System.out.println("Unable to copy file");
}
}

Đặt tên biến trong Java

Nhiều bạn học ngôn ngữ lập trình nhưng vẫn còn đặt tên biến chưa đúng, sai so với quy ước chung. Hôm nay mình sẽ chia sẻ với các bạn cách đặt tên trong Java nói riêng và trong lập trình nói chung một cách đúng, chuẩn nhất.

Khái niệm định danh là gì?

Định danh là một xâu ký tự thể hiện tên các biến, các phương thức, các lớp và nhãn

Định danh là tên của biến ví dụ như: i, j, a, b, s, ans, value…

Định danh là tên của phương thức ví dụ như: getName(), setTime(), goHome()…

Quy định về định danh:wrong-java-yeulaptrinh-pw

  • Các ký tự có thể là chữ số, chữ cái, ‘$’ hoặc ‘_’.
  • Tên không được phép:
    • Bắt đầu bởi một chữ số.
    • Trùng với từ khóa.
  • Phân biệt chữ hoa chữ thường.http://yeulaptrinh.pw/wp-content/uploads/2017/01/correct-java-yeulaptrinh.pw_.png
    • Yourname, yourname, YourName và yourName là 4 định danh khác nhau.

 

Quy ước với định danh (naming convention):

  • Bắt đầu bằng chữ cái.
  • Gói (package): tất cả sử dụng chữ thường.
    • theexample
  • Lớp (Class): viết hoa chữ cái đầu tiên trong các từ ghép lại.
    • TheExample
  • Phương thức/thuộc tính (method/field): Bắt đầu bằng chữ thường, viết hoa chữ cái đầu tiên trong các từ còn lại.
    • theExample
  • Hằng (constants): Tất cả viết hoa.
    • THE_EXAMPLE

 

Những từ không được đặt tên cho biến, hàm…

  • Literals (từ đã được định nghĩa):
    null, true, false.
  • Từ khóa (keyword)
    abstract assert boolean break byte case  
    catch char class continue default do double  
    else extends final finally float for if  
    implements import instanceof int interface  
    long native new package private protected  
    public return short static strictfp super  
    switch synchronized this throw throws  
    transient try void volatile while
  • Từ dành riêng (reserved for future use)
    byvalue cast const future generic goto inner
    operator outer rest var volatile

Các kiểu dữ liệu trong Java

Tổng quan

Trong Java kiểu dữ liệu được chia thành hai loại:

  • Kiểu dữ liệu nguyên thủy (primitive)
    • Số nguyên (integer)
    • Số thực (float)
    • Ký tự (char)
    • Giá trị logic (boolean)
  • Kiểu dữ liệu tham chiếu (reference)
    • Mảng (array)
    • Đối tượng (object)

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

Mọi biến đều phải khai báo một kiểu dữ liệu

  • Các kiểu dữ liệu cơ bản chứa một giá trị đơn
  • Kích thước và định dạng phải phù hợp với kiểu của nó

Java phân loại thành 4 kiểu dữ liệu nguyên thủy:

java-kieu-du-lieu-yeulaptrinh-pw

4 kiểu dữ liệu nguyên thủy trong java

Số nguyên

Số nguyên có dấu

  • Giá trị mặc định: 0
kieu-du-lieu-so-nguyen-java-yeulaptrinh-pw

Kiểu dữ liệu số nguyên (Integer)

Số thực

Số thực dấu phẩy động

  • Giá trị mặc định: 0.0
kieu-du-lieu-so-thuc-java-yeulaptrinh-pw

Kiểu dữ liệu số thực (Float)

 

 

 

Viết chú thích trong Java

Viết chú thích có thể là chú thích cho dòng lệnh, chú thích cho file code…

Java hỗ trợ ba kiểu chú thích như sau:

  1. // Chú thích trên một dòng, không xuống dòng
  2. /* Chú thích một đoạn */
  3. /** Javadoc * chú thích dạng Javadoc */

note-java-yeulaptrinh.pw