# data[].attributes.body
-Câu 1: Lợi
-Câu 2: Quỳnh
-Câu 3: Phong
-Câu 4: Duy
-Câu 5: Phú

# data[].attributes.headline
Câu 1:Trong java có những kiểu dữ liệu nào? ví dụ?

# data[].attributes.subject
Câu 1:Trong java có những kiểu dữ liệu nào? ví dụ?

# data[].attributes.body
*Kiểu Primitive

1. Boolean

Đây là kiểu dữ liệu có bộ nhớ lưu trữ nhỏ nhất, chỉ có 1 bit. Kiểu dữ liệu này được dùng để lưu trữ hai trạng thái true hoặc false Giá trị mặc định là false.

-Ví dụ: boolean extractall = true

2. Char

Kiểu dữ liệu này có thể dùng để lưu kí tự hoặc số nguyên không âm, có kích thước 2 byte. Giá trị nhỏ nhất là '\u0000' (hoặc 0) và giá trị lớn nhất là '\uffff' (hoặc 65,535).

-Ví dụ: char name ='A' Câu hỏi đặt ra là vì sao kiểu dữ liệu char có giá trị mặc định là '\u0000' và bộ nhớ là 2 byte? Lý do là vì Java sử dụng bảng mã Unicode. Trong Unicode mỗi ký tự giữ 2 byte, do đó Java cũng cấp cho kiểu dữ liệu char bộ nhớ 2 byte.

3. Byte

Kiểu dữ liệu này dùng để lưu số nguyên (âm hoặc dương), có kích thước 1 byte. Giá trị nhỏ nhất là -128 (-2^7) và giá trị lớn nhất là 127 (2^7 -1) Giá trị mặc định là 0.

-Ví dụ: byte x = 1 , byte y = -1

4. Short

Dùng để lưu dữ liệu có kiểu số nguyên, nhưng kích cỡ lớn hơn byte. Bộ nhớ kiểu dữ liệu này là 2 byte. Giá trị nhỏ nhất là -32,768 (-2^15) và giá trị lớn nhất là 32,767 (2^15 -1) Giá trị mặc định là 0.

-Ví dụ: short t = 50, short z = -50

5. Int

Đây cũng là kiểu dữ liệu dùng để lưu kiểu số nguyên, kích cỡ 4 byte (lớn hơn byte và short). Giá trị nhỏ nhất là - 2,147,483,648.(-2^31) và giá trị lớn nhất là 2,147,483,647 (2^31 -1) Thông thường, int được sử dụng làm kiểu dữ liệu mặc định cho các giá trị nguyên. Giá trị mặc định là 0.

-Ví dụ: int a = 500, int b = -500

6. Long

Kiểu dữ liệu dùng để lưu số nguyên lớn nhất là Long. Kích cỡ của nó lên đến 8 byte. Giá trị nhỏ nhất là -9,223,372,036,854,775,808.(-2^63) và lớn nhất là 9,223,372,036,854,775,807 (2^63 -1) Kiểu này được sử dụng khi cần một dải giá trị rộng hơn int. Giá trị mặc định là 0L.

-Ví dụ: long a = 100000L, int b = -100000L

7. Float

Float là kiểu dữ liệu lưu số thực, kích cỡ 4 byte. Giá trị mặc định là 0.0f. Kiểu Float không bao giờ được sử dụng cho các giá trị chính xác như currency.

-Ví dụ: float jpy = 22.2f

8. Double

Double cũng là kiểu dữ liệu để lưu số thực, nhưng kích thước dữ liệu lớn hơn Float. Bộ nhớ của nó là 8 byte. Thông thường, kiểu dữ liệu này được sử dụng làm kiểu mặc định cho các giá trị decimal. Kiểu double cũng không bao giờ được sử dụng cho các giá trị chính xác như currency. Giá trị mặc định là 0.0d.

-Ví dụ: double ct = 676.7

*Kiểu Non - Primitive

Trong Java tồn tại kiểu biến đối tượng, được tạo bằng cách sử dụng các constructor đã được định nghĩa của các class. Chúng được sử dụng để truy cập các đối tượng. Những biến này được khai báo ở kiểu cụ thể và không thể thay đổi được

Giá trị mặc định của kiểu biến đối tượng là null. Có thể sử dụng biến đối tượng để tham chiếu tới bất kỳ đối tượng nào trong kiểu được khai báo hoặc bất kỳ kiểu tương thích nào.

# data[].attributes.headline
Câu 2: Phân biệt biến và hằng trong Java. Cho ví dụ minh họa. Cần lưu ý gì khi đặt tên?

# data[].attributes.subject
Câu 2: Phân biệt biến và hằng trong Java. Cho ví dụ minh họa. Cần lưu ý gì khi đặt tên?

# data[].attributes.body
*Phân biệt biến và hằng:
Hằng: - Giá trị của hằng không thể thay đổi trong quá trình thực hiện chương trình.
- Cách khai báo hằng:  const<tên hằng>=<giá trị của hằng>;
Vd: Const pi = 3.14;
Biến: - Giá trị của biến có thể thay đổi trong quá trình thực hiện chương trình.
- Cách khai báo biến: Var<tên biến>:<kiểu dữ liệu>;
Vd: Var a,b:integer;
* Những lưu ý khi đặt tên:
- Đặt tên biến:
Quy tắc 1: Ký tự bắt đầu của tên biến phải bắt đầu bằng chữ cái, hoặc dấu gạch dưới(_), hoặc ký tự đô la($).
Quy tắc 2: Không được có khoảng trắng giữa các ký tự biến.
Quy tắc 3: Không chứa ký tự đặc biệt bên trong biến như !@#%^&*.
Quy tắc 4: Không được đặt tên biến trùng với keyword.

# data[].attributes.headline
Câu 3 : Có bao nhiêu cách ép kiểu trong Java ? Cho ví dụ cụ thể?

# data[].attributes.subject
Câu 3 : Có bao nhiêu cách ép kiểu trong Java ? Cho ví dụ cụ thể?

# data[].attributes.body
- Có 2 cách :
+ Nới rộng (widening): Là quá trình làm tròn số từ kiểu dữ liệu có kích thước nhỏ hơn sang kiểu có kích thước lớn hơn. Kiểu biến đổi này không làm mất thông tin.

- Ví dụ :
public class TestWidening {

public static void main(String[] args) {

int i = 100;

long l = i;    // không yêu cầu chỉ định ép kiểu

float f = l;   // không yêu cầu chỉ định ép kiểu

System.out.println("Giá trị Int: " + i);

System.out.println("Giá trị Long: " + l);

System.out.println("Giá trị Float:  " + f);

}

}
Kết quả :

Giá trị Int : 100
Giá trị Long: 100

Giá trị Float : 100.0

+ Thu hẹp (narrowwing): Là quá trình làm tròn số từ kiểu dữ liệu có kích thước lớn hơn sang kiểu có kích thước nhỏ hơn. Kiểu biến đổi này có thể làm mất thông tin như ví dụ ở trên. Chuyển kiểu loại này không thể thực hiện ngầm định bởi trình biên dịch, người dùng phải thực hiện chuyển kiểu tường minh.

- Ví dụ :
public class TestNarrowwing {

public static void main(String[] args) {

double d = 100.04;

long l = (long) d; // yêu cầu chỉ định kiểu dữ liệu (long)

int i = (int) l; // yêu cầu chỉ định kiểu dữ liệu (int)

System.out.println("Giá trị Double: " + d);

System.out.println("Giá trị Long: " + l);

System.out.println("Giá trị Int:  " + i);

}

}

Kết quả :
Giá trị Double : 100.04
Giá trị Long : 100
Giá trị Int : 100

# data[].attributes.headline
Câu 4: Trong java có những loại toán tử nào?

# data[].attributes.subject
Câu 4: Trong java có những loại toán tử nào?

# data[].attributes.body
Toán tử trong java là một ký hiệu được sử dụng để thực hiện một phép tính/chức năng nào đó. Java cung cấp các dạng toán tử sau:

Toán tử Đơn

Toán tử Toán học

Toán tử Dịch chuyển

Toán tử Quan hệ

Toán tử Bit

Toán tử Logic

Toán tử 3 Ngôi (Ternary)

Toán tử gán

Ví dụ:
1. Toán tử đơn: ++, –, ~, !

class OperatorExample{

public static void main(String args[]){

int x=10;

System.out.println(x++);//10 (11)

System.out.println(++x);//12

System.out.println(x--);//12 (11)

System.out.println(--x);//10

}

}
Kết quả: 10 12 12 10

2. Ví dụ về toán tử toán học trong Java

class OperatorExample{
  public static void main(String args[]){
    int a=10;
    int b=5;
    System.out.println(a+b);//15
    System.out.println(a-b);//5
    System.out.println(a*b);//50
    System.out.println(a/b);//2
    System.out.println(a%b);//0
  }
}

Kết quả: 15 5 50 2 0

3. Ví dụ về toán tử Dịch chuyển trong JAVA

class OperatorExample{
  public static void main(String args[]){
    System.out.println(10<<2);//10*2^2=10*4=40
    System.out.println(10<<3);//10*2^3=10*8=80
    System.out.println(20<<2);//20*2^2=20*4=80
    System.out.println(15<<4);//15*2^4=15*16=240
  }
}

Kết quả : 40 80 80 240

# data[].attributes.headline
Câu 5: Cách nhập xuất dữ liệu trong JAVA:

# data[].attributes.subject
Câu 5: Cách nhập xuất dữ liệu trong JAVA:

# data[].attributes.body
Có 3 cách để tiến hành nhập liệu từ bàn phím:
- Cách đầu tiên là sử dụng lớp BufferReader
- Cách 2 là sử dụng JOptionPane
- Cách 3 là sử dụng lớp Scanner (hay dùng)
1.Sử dụng lớp BufferReader.
BufferReader là một lớp dùng để đọc dữ liều từ bàn phím hay từ file.

Có thể dùng lớp này để đọc một chuỗi một mảng hoặc một kí tự.

Ví dụ:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class GetInputFromKeyboard

{
public static void main(String[] args)

{
// Tạo một đối tượng BufferedReader
BufferedReader dataIn = new BufferedReader(new
InputStreamReader( System.in) );
// Biến name

String name = "";
System.out.println("Please Enter Your Name:");

// Tiến hành đọc từ bàn phím

try

{
name = dataIn.readLine();
}

catch( IOException e )

{
System.out.println("Error!");
}

// hiển thị tên

System.out.println("Hello " + name +"!");
}

}

Tham số đầu vào của BufferReader có thể là InputStreamReader hoặc FileReader (Dùng để đọc file).
Một số phương thức của lớp BufferReader:
- read() : đọc một kí tự.
- readLine() : đọc một dòng text.
==========================================================================================
2. Sử dụng JOptionPane:
JOptionPane là một lớp thừa kế từ lớp JComponent.

Khi biên dịch program thì nó sẽ hiện lên một dialog box cho phép cho ta nhập dữ liệu.
ví dụ:
import javax.swing.JOptionPane;
public class InputFromKeyboardJOptionPane

{
public static void main(String[] args)

{
String name = "";
name=JOptionPane.showInputDialog("Please enter your name");
String msg = "Hello " + name + "!";
JOptionPane.showMessageDialog(null, msg);
System.out.println("Name is:"+msg);
}

}

Một số phương thức của JOptionPane:
- showConfirmDialog() : Hiển thị một câu hỏi lựa chọn giống như yes no cancel
- showInputDialog() : Hiển thị box nhập
- showMessageDialog() : Báo cho người dùng một sự kiện vừa xảy ra.

=======================================================================================================
3. Dùng lớp Scanner:
Scanner là một lớp mới có(từ java 5 hay 6, những phiên bản 3 thì chưa có).

Scanner hơn hẳn những lớp trước là vì nó phân loại đc dữ liệu mà người dùng nhập vào cho nó: có thể đọc kiểu int hay float, double,..
Ví dụ:
import java.util.Scanner;

public class GetInputFromKeyboard

{
public static void main(String[] args)

{
Scanner scanIn=new Scanner(System.in); // Tạo một đối tượng Scanner
String name = ""; // Biến Tên
int age; // Biến Tuổi
System.out.println("Nhap Ten va Tuoi cua ban:");
try   // Tiến hành đọc từ bàn phím

{
name = scanIn.nextLine();
age=scanIn.nextInt();
}

catch( IOException e )

{
System.out.println("Error!");
}
System.out.println("Name is" + name +"!");
System.out.println("Age is" + age +"!");
}

}

Một số phương thức:

- next() //dùng cho String
- nextInt()
- nextFloat()
- nextBoolean()
- nextByte()
- nextLine()