Cấu Trúc Lập Trình Cơ Bản Trong Java

Hình 1 2 Vị trí lưu project Bước 2 Soạn thảo mã nguồn tại cửa sổ bên dưới 1

Hình 1. 2. Vị trí lưu project

Bước 2. Soạn thảo mã nguồn tại cửa sổ bên dưới:

Hình 1 3 Màn hình soạn thảo 1 5 2 2 Chương trình Java Chương trình sau cho phép 2

Hình 1.3. Màn hình soạn thảo

1.5.2.2. Chương trình Java.

Chương trình sau cho phép hiển thị thông điệp: "Hello World Application!"

package helloworldapp;

/**

*File: HelloWorldApp.Java

* @author Admin

*/

public class HelloWorldApp {

/**

* @param args the command line arguments

*/

public static void main(String[] args) {

// TODO code application logic here System.out.println("Hello World Applications!");

}

}

Để thực thi chương trình ta vào Run/Run Main Project hoặc Bấm Run Main Project () trên thanh công cụ hoặc bấm phím F6. Kết quả hiển thị trên màn hình:

1 5 2 3 Phân tích chương trình đầu tiên Tập tin HelloWorldApp Java sẽ nằm trong gói 3

1.5.2.3. Phân tích chương trình đầu tiên.

Tập tin HelloWorldApp.Java sẽ nằm trong gói helloworldapp

/*

*File: HelloWorldApp.Java

* @author Admin*/

Ký hiệu “/*… */ ” dùng để chú thích nhiều dòng lệnh. Trình biên dịch sẽ bỏ qua các dòng chú thích này. Java hỗ trợ hai loại chú thích:

Loại chú thích trên một dòng, dùng “//”. Trình biên dịch sẽ bỏ qua nội dung bắt đầu từ kí hiệu “//” cho đến hết dòng lệnh chứa nó.

Loại chú thích trên nhiều dòng có thể bắt đầu với “/*” và kết thúc với “*/”. Trình biên dịch sẽ bỏ qua nội dung nằm giữa hai kí hiệu này.

Dòng kế tiếp khai báo lớp có tên HelloWorldApp: Bắt đầu với từ khoá public, kế đến là từ khóa class, cuối cùng là tên lớp:

public class HelloWorldApp {…}

Một định nghĩa lớp nằm trọn vẹn giữa hai ngoặc móc mở “{“ và đóng “}”. Các ngoặc này đánh dấu bắt đầu và kết thúc một khối lệnh.

public static void main(String args[ ])

Đây là phương thức chính, từ đây chương trình bắt đầu việc thực thi của mình. Tất cả các ứng dụng Java đều sử dụng một phương thức main này.

Từ khoá public là một chỉ định truy xuất. Nó cho biết thành viên của lớp có thể được truy xuất từ bất cứ đâu trong chương trình.

Từ khoá static cho phép main được gọi tới mà không cần tạo ra một thể hiện (instance) của lớp. Nó không phụ thuộc vào các thể hiện của lớp được tạo ra.

Từ khoá void thông báo cho máy tính biết rằng phương thức sẽ không trả lại bất cứ giá trị nào khi thực thi chương trình.

String args[] là tham số dùng trong phương thức main. Khi không có một thông tin nào được chuyển vào main, phương thức được thực hiện với các dữ liệu rỗng

- không có gì trong dấu ngoặc đơn.

System.out.println("Hello World Applications!"); Dòng lệnh này hiển thị chuỗi “Hello World Applications!” trên màn hình.

Lệnh println() cho phép hiển thị chuỗi được truyền vào lên màn hình.

Chương 2. CẤU TRÚC LẬP TRÌNH CƠ BẢN TRONG JAVA

Mục đích

Nội dung chương này trình bày khái niệm cơ bản về lập trình trong Java như:

Các kiểu dữ liệu, cách khai báo biến và các toán tử.

Cách nhập xuất dữ liệu

Các cấu trúc lệnh trong Java như các cấu trúc lựa chọn và các vòng lặp

Mảng và các thao tác cơ bản trên kiểu dữ liệu mảng trong Java

2.1. Các kiểu dữ liệu

Kiểu dữ liệu cơ bản

Kiểu số nguyên.


Kiểu dữ liệu

Kích

Phạm vi biểu diễn

Giá trị

byte

8 bits

-128 ÷127

0

short

16 bits

- 32768 ÷ 32767

0

int

32 bits

-231 ÷ 231-1

0

long

64 bits

-263 ÷ 263-1

0l

Có thể bạn quan tâm!

Xem toàn bộ 232 trang tài liệu này.

Kiểu số thực


Kiểu dữ liệu

Kích

Phạm vi biểu diễn

Giá trị

float

32 bits

-3.4e38÷3.4e38

0.0f

double

64 bits

-1.7976...E+308÷+ 1.7976...E+308

0.00d

Kiểu logic (boolean)

Kiểu dữ liệu

Kích

Phạm vi biểu diễn

Giá trị

char

16 bits

u0000÷uffff

0

Nhận giá trị true hoặc false. Giá trị mặc định là false Kiểu ký tự (char)


Kiểu dữ liệu đối tượng :

Trong Java, có 3 kiểu dữ liệu đối tượng:

array: Một mảng của các dữ liệu cùng kiểu

class: Dữ liệu kiểu lớp đối tượng do người dùng định nghĩa.

interface: Dữ liệu kiểu lớp giao diện do người dùng định nghĩa. Chứa các phương thức của giao diện.

Ép kiểu Chuyển đổi giữa các kiểu dữ liệu cơ sở:

float


byte

short

int

long


float


double

Hình 2. 1. Chuyển đổi giữa các kiểu dữ liệu cơ sở

Trong Java có hai loại ép kiểu dữ liệu:

Mở rộng (widening): 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 (theo chiều mũi tên nét liền). Kiểu biến đổi này không làm mất thông tin. Ví dụ chuyển từ int sang long. Chuyển kiểu loại này có thể được thực hiện ngầm định bởi trình biên dịch.

Thu hẹp (narrowwing): 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 (theo chiều mũi tên nét đứt). Kiểu biến đổi này có thể làm mất thông tin. 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.

Qui tắc ép kiểu có dạng: (<type>) <exp>

Trong đó: <type>: kiểu dữ liệu cần ép sang

<exp>: là biểu thức cần ép kiểu cho giá trị trả về của biểu thức

Ví dụ 2.1:

float fNum = 2.2;

int iCount = (int) fNum

2.2. Biến

Biến là vùng nhớ dùng để lưu trữ các giá trị của chương trình.

Tên biến phải bắt đầu bằng một chữ cái, một dấu gạch dưới hay dấu dollar.

Tên biến có phân biệt chữ hoa chữ thường

Trong Java, biến có thể được khai báo ở bất kỳ đâu trong chương trình Cú pháp khai báo biến:

dataType varName; hoặc dataType varName = value;

Trong đó, dataType là kiểu dữ liệu của biến, varName là tên biến, value là giá trị khởi tạo ban đầu cho biến varName.

Phạm vi hoạt động của biến

Một biến có phạm vi hoạt động trong toàn bộ khối lệnh mà nó được khai báo. Một khối lệnh bắt đầu bằng dấu “{” và kết thúc bằng dấu “}”:

Nếu biến được khai báo trong một phương thức (Không nằm trong khối lệnh nào), biến đó có phạm vi hoạt động trong phương thức tương ứng: có thể được sử dụng trong tất cả các khối lệnh của phương thức.

Nếu biến được khai báo trong một lớp (Không nằm trong trong một phương thức nào), biến đó có phạm vi hoạt động trong toàn bộ lớp tương ứng: có thể được sử dụng trong tất cả các phương thức của lớp.

2.3. Toán tử

Toán tử số học: Các toán hạng của các toán tử số học phải ở dạng số hoặc ký tự. Các toán hạng kiểu boolean không sử dụng được. Một vài kiểu toán tử được liệt kê trong bảng dưới đây:

Toán tử

Mô tả

+

Trả về giá trị tổng hai toán hạng

-

Trả về kết quả của phép trừ.

*

Nhân. Trả về giá trị là tích hai toán hạng.

/

Chia.Trả về giá trị là thương của phép chia

%

Phép lấy modul Giá trị trả về là phần dư của phép chia

++

Tăng giá trị của biến lên 1. Ví dụ a++ tương đương với a = a + 1

--

Giảm giá trị của biến 1 đơn vị. Ví dụ a-- tương đương với a = a - 1

+=

Ví dụ c += a tương đương c = c + a

-=

Giảm giá trị của biến 1 đơn vị. Ví dụ a-- tương đương với a = a - 1

*=

Ví dụ c *= a tương đương với c = c*a

/=

Ví dụ c /= a tương đương với c = c/a

%=

Ví dụ c %= a tương đương với c = c%a

Các toán tử logic:


Toán tử

Mô tả


&&

Và (AND) Trả về giá trị “Đúng” (True) chỉ khi cả hai toán tử có giá trị “True”

||

Hoặc (OR) Trả về giá trị “True” nếu ít nhất một giá trị là True

!

NOT. Chuyển giá trị từ True sang False và ngược lại.

Các toán tử điều kiện:

Toán tử điều kiện là một loại toán tử đặc biệt vì nó bao gồm ba thành phần cấu thành biểu thức điều kiện.

Cú pháp: <biểu thức 1> ? <biểu thức 2> : <biểu thức 3>;

Trong đó:

biểu thức 1: Biểu thức logic. Trả trả về giá trị True hoặc False

biểu thức 2: Là giá trị trả về nếu <biểu thức 1> xác định là True

biểu thức 3: Là giá trị trả về nếu <biểu thức 1> xác định là False Toán tử gán

Toán tử gán (=) dùng để gán một giá trị vào một biến và có thể gán nhiều giá trị cho nhiều biến cùng một lúc. Ví dụ đoạn lệnh sau gán một giá trị cho biến x và giá trị này lại được gán cho nhiều biến trên một dòng lệnh đơn.

int x = 20; int p, q, r, s; p=q=r=s=x;

Dòng lệnh cuối cùng được thực hiện từ phải qua trái. Đầu tiên giá trị ở biến x được gán cho ‘s’, sau đó giá trị của ‘s’ được gán cho ‘r’ và cứ tiếp như vậy.

2.4. Strings và StringBuider

2.4.1. Lớp String

String là một class rất quan trọng trong Java. Class String là không thể thay đổi (immutable) và là final (không cho phép class nào thừa kế nó), tất cả các thay đổi trên String đều tạo ra một đối tượng String khác.

Trong java, String là một class đặc biệt, nguyên nhân là nó được sử dụng một cách thường xuyên trong một chương trình, vì vậy đòi hỏi phải có hiệu suất và sự mềm dẻo. Đó là lý do tại sao String vừa có tính đối tượng và vừa có tính nguyên thủy (primitive).

Tính nguyên thủy:

Có thể tạo một string literal (chuỗi chữ), string literal được lưu trữ trong ngăn xếp (stack), đòi hỏi không gian lưu trữ ít

String literal = "Hello World";

Có thể sử dụng toán tử + để nối 2 string, toán tử này vốn quen thuộc và sử dụng cho các kiểu dữ liệu nguyên thủy int, float, double.

Các string literal được chứa trong một bể chung (common pool). Như vậy hai string literal có nội dung giống nhau sử dụng chung một vùng bộ nhớ trên stack, điều này giúp tiết kiệm bộ nhớ.

Tính đối tượng

Vì String là một class, vì vậy nó có thể được tạo ra thông qua toán tử new. String object = new String("Hello World");

Các đối tượng String được lưu trữ trên Heap, yêu cầu quản lý bộ nhớ phức tạp và tốn không gian lưu trữ. Hai đối tượng String có nội dung giống nhau lưu trữ trên 2 vùng bộ nhớ khác nhau của Heap.

Các phương thức của String


Phương thức

Mô tả


char charAt (int index)

Trả về một ký tự tại vị trí có chỉ số được chỉ định.

int compareTo (Object o)

So sánh một String với một Object khác.


Int compareTo (String anotherString)

So sánh hai chuỗi theo từ điển. (Phân biệt chữ hoa chữ thường)


int compareToIgnoreCase (String str)

So sánh hai chuỗi theo từ điển. (Không phân biệt chữ hoa chữ thường)

String concat (String str)

Nối chuỗi


boolean contentEquals (StringBuffer sb)

Trả về true nếu và chỉ nếu chuỗi này đại diện cho cùng một chuỗi ký tự như là StringBuffer quy định.


static String copyValueOf (char[] data)

Trả về một chuỗi đại diện cho chuỗi ký tự trong mảng quy định.

static String copyValueOf (char[] data, int offset, int count)

Trả về một chuỗi đại diện cho chuỗi ký tự trong mảng quy định.


boolean endsWith (String suffix)

Kiểm tra nếu chuỗi này kết thúc với hậu tố quy định.

boolean equals (Object anObject)

So sánh với một đối tượng

Boolean equalsIgnoreCase (String anotherString)

So sánh với một String khác, không phân biệt chữ hoa chữ thường.


byte[] getBytes ( )

Mã hóa chuỗi này thành một chuỗi các byte bằng cách sử dụng bảng mã mặc định của flatform (nền tảng), lưu trữ kết quả vào một mảng byte mới.

byte[] getBytes (String charsetName)

Mã hóa chuỗi này thành một chuỗi các byte bằng cách sử dụng bảng mã cho trước, lưu trữ kết quả vào một mảng byte mới.

void getChars (int srcBegin, int srcEnd, char[] dst, int dstBegin)

Copy các ký tự từ chuỗi này vào mảng ký tự đích.


int indexOf (int ch)

Trả về chỉ số trong chuỗi này xuất hiện đầu tiên của ký tự cụ thể.


int indexOf (int ch, int fromIndex)

Trả về chỉ số trong chuỗi này xuất hiện đầu tiên của ký tự được chỉ định, bắt đầu tìm kiếm từ chỉ số cụ thể đến cuối.


int indexOf (String str)

Trả về chỉ số trong chuỗi này xuất hiện đầu tiên của chuỗi quy định.


int indexOf(String str, int fromIndex)

Trả về chỉ số trong chuỗi này xuất hiện đầu tiên của chuỗi quy định, bắt đầu từ chỉ số xác định.


int lastIndexOf (int ch)

Trả về chỉ số trong chuỗi này về sự xuất hiện cuối cùng của ký tự cụ thể.


int lastIndexOf (int ch, int fromIndex)

Trả về chỉ số trong chuỗi này về sự xuất hiện cuối cùng của ký tự được chỉ định, tìm kiếm lùi lại bắt đầu từ chỉ số xác định.


int lastIndexOf (String str)

Trả về chỉ số trong chuỗi này xảy ra cuối cùng bên phải của chuỗi quy định.

int length ( )

Trả về độ dài chuỗi.


boolean matches (String regex)

Kiểm tra chuỗi này khớp với biểu thức chính quy chỉ định hay không.

boolean regionMatches (int offset, String other, int ooffset, int len)


Kiểm tra chuỗi có một phần giống nhau.


String replace (char oldChar, char newChar)

Trả về một chuỗi mới từ thay thế tất cả các lần xuất hiện của ký tự oldChar trong chuỗi này với ký tự newChar.

Xem toàn bộ nội dung bài viết ᛨ

..... Xem trang tiếp theo?
⇦ Trang trước - Trang tiếp theo ⇨

Ngày đăng: 29/01/2024