Bài 3- Mảng, Chuỗi Và Hàm Trong Java - IT DESIGN - Thầy Nhuộm

Đăng nhập Đăng nhập Hoan nghênh!đăng nhập vào tài khoản của bạnTài khoảnmật khẩu của bạn Quên mật khẩu? Khôi phục mật khẩuKhởi tạo mật khẩuemail của bạn TÌM KIẾM Thứ Hai, Tháng Mười Hai 23, 2024
  • Đăng nhập/Đăng ký
Đăng nhậpĐăng nhập tài khoảnTài khoảnmật khẩu của bạn Forgot your password? Get helpKhôi phục mật khẩuKhởi tạo mật khẩuemail của bạn Mật khẩu đã được gửi vào email của bạn. IT DESIGN Trang chủ LẬP TRÌNH Bài 3- Mảng, chuỗi và hàm trong Java
  • LẬP TRÌNH
  • Lập trình Java
Chia sẻ Facebook Tweet

Mục tiêu của bài học

Sau khi học xong bài học sinh viên có khả năng: – Hiểu được khái niệm mảng, chuỗi và hàm trong Java. – Vận dụng mảng, hàm và chuỗi giải được các bài toán đơn giản trong thực tế.

Mảng (array) là gì?

– Mảng là tập hợp các phần tử có cùng kiểu được cấp phát vùng nhớ liên tục. – Truy xuất các phần tử mảng bằng chỉ số, bắt đầu là số 0. Ví dụ: int[] x = {1,3,5,7,9,11}.

– Ưu điểm: + Sử dụng để lưu trữ nhiều giá trị thay vì phải khai báo nhiều biến. + Truy xuất bằng chỉ số mảng cũng dễ dàng, nhanh chóng. + Hỗ trợ việc truy xuất, sắp xếp dữ liệu đơn giản. – Nhược điểm: + Do số phần tử không thay đổi nên khó bổ sung, thêm bớt. + Cần vùng nhớ liên tục lớn. – Có 02 kiểu mảng: Mảng 1 chiều và mảng nhiều chiều – Khai báo: <kiểu dữ liệu> <tên mảng>[]; <kiểu dữ liệu>[] <tên mảng>; – Khởi tạo kích thước mảng a = new datatype[size]; – Khai báo và khởi tạo kích thước mảng datatype[] a = new datatype[size]; – Khai báo và khởi tạo các phần tử datatype[] a = {element1, element2,…}; * Lưu ý: Dùng chỉ số của mảng để truy xuất từng phần tử và dùng thuộc tính length để xác định số phần tử của mảng. Ví dụ: int a[] = new int[5]; // Phần khai báo và khởi tạo int a[] = {1, 2, 3, 4, 5}; // Khai báo, khởi tạo và khởi tạo for (int i = 0; i<a.length; i++) // length thuộc tính lấy số phần tử của mảng System.out.println(a[i]); // Truy xuất phần tử thứ i của mảng

Bài tập: 1- Viết chương trình nhập số nguyên n>0, sau đó cho xuất ra màn hình lập phương từng phần tử của dãy số từ 1 đến n. 2- Viết chương trình sắp xếp dãy số nguyên theo chiều tăng dần (hoặc giảm dần). Gợi ý: Bài 1

package edu.tvn; import static java.lang.Math.pow; import java.util.Scanner; public class Array1D { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.print("Nhập số nguyên n: "); int n = input.nextInt(); do { if (n < 0) { System.out.print("n không đúng, nhập lại! "); n = input.nextInt(); } } while (n < 0); int a[] = new int[n]; for (int i = 0; i < a.length; i++) { a[i] = i + 1; System.out.print(" " + (int) pow(a[i], 3)); } System.out.println(); } }

Bài 2

package edu.tvn; public class ArraySort { public static void main(String[] args) { int a[] = {4, 2, 1, 7, 12, 8}; int temp = a[0]; for (int i = 0; i < a.length - 1; i++) { for (int j = i + 1; j < a.length; j++) { if (a[i] > a[j]) { temp = a[i]; a[i] = a[j]; a[j] = temp; } } } for (int k = 0; k < a.length; k++) { System.out.print(" " + a[k]); } System.out.println(); } }

Mảng có thể copy?

Phương thức arraycopy của lớp System có thể sao chép một chuỗi này sang chuỗi khác, cú pháp: System.arraycopy(src, srcPos, dest, destPos, length). + src là mảng nguồn. + srcPos là vị trí bắt đầu copy. + dest là mảng đích. + destPos là vị trí bắt đầu của mảng đích. + length là số phần tử cần copy. Ví dụ:

package edu.trannhuom; public class CopyArraySample { public static void main(String[] args) { char[] Array1 = { 'h', 't', 't', 'p', 's', ':', '/', '/', 't', 'h', 'a', 'y', 'n','h','u','o','m' }; char[] Array2 = new char[10]; System.arraycopy(Array1, 8, Array2, 0, 9); System.out.println(new String(Array2)); } }

Một số phương thức cho mảng 1 chiều

Java cung cấp một số phương thức tĩnh tiện ích cho mảng, như: sắp xếp, gán các giá trị cho toàn bộ các phần tử của mảng, tìm kiếm, so sánh, … phương thức được định nghĩa trong lớp Arrays.

// Chuyển một mảng có kiểu T sang danh sách (List) có kiểu T // T là kiểu đối tượng (Object) public static <T> List<T> asList(T… a)

// Tìm kiếm chỉ số của một giá trị xuất hiện trong mảng. // (Sử dụng thuật toán tìm kiếm nhị phân (binary search)) public static int binarySearch(type[] a, type key)

// Sắp xếp các giá trị của mảng tăng dần public static void sort(type[] a)

// Copy các phần tử của một mảng để tạo một mảng mới với độ dài chỉ định public static int[] copyOf(type[] original, type newLength)

// Copy một phạm vi chỉ định các phần tử của mảng để tạo một mảng mới public static double[] copyOfRange(type[] original, int from, int to)

// So sánh hai mảng public static boolean equals(type[] a, long[] a2)

// Gán cùng một giá trị cho tất cả các phần tử của mảng. public static void fill(type[] a, type val)

// Chuyển một mảng thành chuỗi (string) public static String toString(type[] a)

Ví dụ:

package edu.trannhuom; import java.util.Arrays; import java.util.List; public class ArraysSample { public static void main(String[] args) { // Khai báo một mảng 5 phần tử kiểu nguyên thủy (primitive) int[] arr = {15, 5, 10, 30, 25}; System.out.println("Gọi hàm toString để hiển thị mảng: "); // Chuyển một mảng thành chuỗi (string) System.out.println(Arrays.toString(arr)); // Sắp xếp các giá trị của mảng tăng dần Arrays.sort(arr); System.out.println("Sau khi gọi hàm sort: "); // Chuyển một mảng thành chuỗi (string) System.out.println(Arrays.toString(arr)); // Tìm kiếm chỉ số của một giá trị xuất hiện trong mảng. // Mảng phải được sắp xếp trước khi gọi hàm binarySearch int index = Arrays.binarySearch(arr, 30); if (index < 0) { System.out.println("Không tìm thấy giá trị"); } else { System.out.println("Tìm thấy giá trị 30 tại index " + index); } // Gán cùng một giá trị cho tất cả các phần tử của mảng. Arrays.fill(arr, 11); System.out.println("Sau khi gọi hàm fill: "); // Chuyển một mảng thành chuỗi (string) System.out.println(Arrays.toString(arr)); // Khai báo một mảng 5 phần tử kiểu đối tượng (object) Integer[] arr2 = {15, 5, 10, 30, 25}; // Chuyển một mảng có kiểu T sang danh sách (List) có kiểu T // List: chỉ sử dụng được với object, không sử dụng kiểu nguyên thủy (primitive) List<Integer> list = Arrays.asList(arr2); System.out.println("Sau khi gọi hàm asList: "); // Chuyển một mảng thành chuỗi (string) System.out.println(list); } }

Mảng nhiều chiều

Mảng nhiều chiều là mảng của mảng

Khai báo của mảng 2 chiều, có 03 cách khai báo:

// Khai báo một mảng có 5 dòng, 10 cột Kieu_du_lieu[][] ten_bien_1 = new Kieu_du_lieu[5][10];

// Khai báo một mảng 2 chiều có 5 dòng // (Mảng của mảng) Kieu_du_lieu[][] ten_bien_2 = new Kieu_du_lieu[5][];

// Khai báo một mảng 2 chiều, chỉ định giá trị các phần tử Kieu_du_lieu[][] ten_bien_3 = new Kieu_du_lieu[][] { { value00, value01, value02 } { value10, value11, value12 } }; i: tương ứng chỉ số của dòng j: là chỉ số của cột trong mảng 2 chiều

Ví dụ:

package edu.trannhuom; public class Array2D { public static void main(String[] args) { int[][] arr = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } }; for (int i = 0; i < 3; i++){ for (int j = 0; j < 3; j++){ System.out.print(" arr[" + i + "][" + j + "] = "+ arr[i][j]); } System.out.println(" \n"); } } }

Bài tập: Vận dụng ví dụ trên để giải bài toán cộng 2 ma trận 3×3. Gợi ý:

package edu.trannhuom; public class ArrayPlusMatrix { public static void main(String[] args) { int[][] mt1 = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } }; int[][] mt2 = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } }; int[][] mtkq = new int[3][3]; for (int i = 0; i < 3; i++){ for (int j = 0; j < 3; j++){ mtkq[i][j]=mt1[i][j]+mt2[i][j]; System.out.print(" [" + i + "][" + j + "] = "+ mtkq[i][j]); } System.out.println(" \n"); } } }

Chuỗi (String) trong Java

– Trong những ngôn ngữ lập trình khác (C chẳng hạn), một chuỗi được xem như một xâu ký tự. – Trong java thì khác, java cung cấp một class String để làm việc với đối tượng dữ liệu chuỗi cùng các thao tác trên đối tượng dữ liệu này. – String là kiểu dữ liệu được sử dụng nhiều trong Java.

Thao tác với String

1.toLowerCase(): Đổi in thường 2.toUpperCase(): Đổi in hoa 3.trim(): Cắt các ký tự trắng 2 đầu chuỗi 4.length(): Lấy độ dài chuỗi 5.substring(): Lấy chuỗi con 6.charAt(index): Lấy ký tự tại vị trí 7.replaceAll(find, replace): Tìm kiếm và thay thế tất cả 8.Split(separator): Tách chuỗi thành mảng 9.equals(): So sánh bằng có phân biệt hoa/thường 10.equalsIgnoreCase(): So sánh không phân biệt hoa/thường 11.Contains(): Kiểm tra có chứa hay không 12.startsWith(): Kiểm tra có bắt đầu bởi hay không 13.endsWith(): Kiểm tra có kết thúc bởi hay không 14.matches(): So khớp với hay không? 15.indexOf(): Tìm vị trí xuất hiện đầu tiên của chuỗi con 16.lastIndexOf(): Tìm vị trí xuất hiện cuối cùng của chuỗi con

Ví dụ:

package edu.trannhuom; public class MethodOfString { public static void main(String[] args) { String targetString = "Java is fun to learn"; String s1= "JAVA"; String s2= "Java"; String s3 = " Hello Java "; System.out.println("Char at index 2(third position): " + targetString.charAt(2)); System.out.println("After Concat: "+ targetString.concat("-Enjoy-")); System.out.println("Checking equals ignoring case: " +s2.equalsIgnoreCase(s1)); System.out.println("Checking equals with case: " +s2.equals(s1)); System.out.println("Checking Length: "+ targetString.length()); System.out.println("Replace function: "+ targetString.replace("fun", "easy")); System.out.println("SubString of targetString: "+ targetString.substring(8)); System.out.println("SubString of targetString: "+ targetString.substring(8, 12)); System.out.println("Converting to lower case: "+ targetString.toLowerCase()); System.out.println("Converting to upper case: "+ targetString.toUpperCase()); System.out.println("Triming string: " + s3.trim()); System.out.println("searching s1 in targetString: " + targetString.contains(s1)); System.out.println("searching s2 in targetString: " + targetString.contains(s2)); char [] charArray = s2.toCharArray(); System.out.println("Size of char array: " + charArray.length); System.out.println("Printing last element of array: " + charArray[3]); } }

Hàm là gì?

– Hàm có thể gọi là một đoạn mã nguồn thực hiện một công việc cụ thể nào đó. Ví dụ: Arrays.sort(array). – Hàm có thể có hoặc không có tham số. Tham số là dữ liệu đầu vào để hàm thực hiện. – Hàm có thể có kết quả trả về hoặc không. – Hàm có thể có hàm dựng sẵn hoặc người sử dụng định nghĩa.

Cú pháp hàm do người dùng định nghĩa

Static <datatype> <name> ([<parameters>]){ <method body> [return value] } <datatype>: kiểu dữ liệu trả về <name>: tên hàm [<parameters>]: danh sách tham số (có thể có hoặc không). <method body>: thân hàm – mã thực hiện. [return value]: trả kết quả về (có thể có hoặc không, nếu <datatype> là void thì không cần return, ngược lại bắt buộc phải có).

Ví dụ 1:

class MyClass { static void sayHello() { System.out.println("Hello World!"); } public static void main(String[ ] args) { sayHello(); } }

Ví dụ 2:

class MyClass { static int sum(int val1, int val2) { return val1 + val2; } public static void main(String[ ] args) { int x = sum(2, 5); System.out.println(x); } }
Hàm toán học Math

JDK định nghĩa sẵn một số lớp tiện dụng, một trong số là lớp Math cung cấp các hàm về toán học. Bạn không cần phải tạo đối tượng lớp Math vì các hàm trong lớp đó là static, để gọi hàm chỉ đơn giản viết tên lớp Math và tên phương thức cần gọi.

Trước khi gọi các hàm Math, bạn có thể import package để khỏi phải viết đầy đủ tên pack, như sau:

import java.lang.Math;

Math.PI hằng số PI

double g45 = Math.PI/4;

Math.abs() trả về giá trị tuyệt đối của tham số

int a = Math.abs(10); // 10 int b = Math.abs(-20); // 20

Math.ceil() trả về giá trị double là số làm tròn tăng bằng giá trị số nguyên gần nhất

double c = Math.ceil(7.342); // 8.0

Math.floor() trả về double là số làm tròn giảm

double f = Math.floor(7.343); // 7.0

Math.max() lấy số lớn trong hai số

int m = Math.max(10, 20); // 20

Math.min lấy số nhỏ

int m = Math.min(10, 20); // 10

Math.pow lấy lũy thừa (cơ-số, số mũ)

double p = Math.pow(2, 3); // 8.0

Math.Math.sqrt() khai căn

double a = Math.sqrt(9);//3

Math.sin(), Math.cos() sin và cos của góc đơn vị radian

double s = Math.sin(Math.PI/2);//1

Math.random() sinh số double ngẫu nhiên từ 0 đến 1

double r = Math.random();

Math.toDegrees() đổi góc radian thành độ

double goc = Math.toDegrees(Math.PI/2); //90

Math.toRadians() đổi góc đơn vị độ ra radian

double goc = Math.toRadians(45);//0.7853981633974483

Tham chiếu (reference type), tham trị (value type) là gì?

Biến /tham số trong Java có hai kiểu là kiểu giá trịkiểu tham chiếu

Kiểu biến/tham số tham trị thì giá trị của biến được lưu chính xác tại địa chỉ bộ nhớ (nói cách khác địa chỉ bộ nhớ có lưu giá trị). Do vậy, khi chuyển nó trong các tham số, các phép toán nó truyền giá trị chứ không truyền bản thân địa chỉ của biến trong bộ nhớ.

Ví dụ:

public class MyClass { static void addOneTo(int num) { num = num + 1; } public static void main(String[] args) { int x = 5; addOneTo(x); System.out.println(x); } }

Kiểu biến/tham số tham chiếu (Reference Type) nó lưu trữ bên trong nó một địa chỉ tham khảo (chứ không phải giá trị) mà địa chỉ đó sẽ dùng để truy cập bộ nhớ khi lưu / lấy dữ liệu của biến (chính là các đối tượng).

Khi bạn tạo ra đối tượng từ các lớp, bạn đã tạo ra một biến kiểu tham chiếu.

Ví dụ 1:

public class Person { private String Name; private int Age; public Person(String name) { this.Name = name; } public void setAge(int age) { this.Age = age; } public int getAge() { return this.Age; } }

Ví dụ 2:

public class MyClass { public static void main(String[] args) { Person j; j = new Person("John"); j.setAge(20); // j là đối tượng do nó là tham số tham chiếu, hàm celebrateBirthday tương tác với chính đối tượng // lớp Person mà biến trỏ tới celebrateBirthday(j); System.out.println(j.getAge()); } static void celebrateBirthday(Person p) { p.setAge(p.getAge() + 1); } }

BÀI VIẾT LIÊN QUANXEM THÊM

LẬP TRÌNH

Lập trình Python trên Visual Studio Code

LẬP TRÌNH

Figma là gì? Cài đặt, sử dụng Figma?

Cơ sở dữ liệu

Viết mã CSDL với SQL Prompt

LẬP TRÌNH

Hơn 100 Project C# tham khảo

Cơ sở dữ liệu

Bài TEST Hệ QT CSDL SQL

LẬP TRÌNH

Cài Visual Studio Code lập trình C/C++

BÌNH LUẬN Hủy trả lời

Vui lòng nhập bình luận của bạn Vui lòng nhập tên của bạn ở đây Bạn đã nhập một địa chỉ email không chính xác!Vui lòng nhập địa chỉ email của bạn ở đây

Lưu tên của tôi, email, và trang web trong trình duyệt này cho lần bình luận kế tiếp của tôi.

LIÊN HỆ TƯ VẤN

VIDEO MỚI NHẤT

https://youtu.be/zkzYcM8l9FQ

XEM NHIỀU

ĐỒ HỌA

Tạo các hình khối cơ bản trong 3DS Max 2020

trannhuomedu - 10 Tháng Sáu, 20210 Giới thiệu, hướng dẫn tạo, hiệu chỉnh cơ bản một hoặc nhiều đối tượng 3D trong không gian 3DS Max 2020 và kèm video hướng dẫn.

Phím tắt sử dụng Illustrator 2021

5 Tháng Chín, 2021

Catalogue là gì? Cấu trúc gồm những nội dung gì?

5 Tháng Sáu, 2021

Làm quen với Cinema 4D

16 Tháng Bảy, 2020

Infographic và template miễn phí dành cho infographic

9 Tháng Sáu, 2021

BÀI VIẾT TIÊU BIỂU

Công cụ thiết kế Figma

8 Tháng Mười, 2024

Sử dụng Git/GitHub từ A đến Z

16 Tháng Mười Một, 2023

Phím tắt cho phần mềm Blender

25 Tháng Năm, 2023

BÀI VIẾT PHỔ BIẾN

Ngân hàng 1000 bài code C/C++

6 Tháng Mười Hai, 2021

Hàm đồ hoạ cơ bản trong ngôn ngữ C/C++

11 Tháng Năm, 2020

Hướng dẫn cài đặt và thêm thư viện đồ họa vào...

10 Tháng Ba, 2020

MỤC XEM NHIỀU

  • ĐỒ HỌA37
  • LẬP TRÌNH24
  • TIN HỌC21
  • Học Đồ hoạ cơ bản18
  • Kiến thức Tin học10
  • Lập trình Java9
  • Học Adobe Photoshop8
  • TRẮC NGHIỆM8
  • Học tiếng Nhật7
VỀ CHÚNG TÔIHọc tập & Giải trí được chia sẻ miễn phí!Liên hệ chúng tôi: tranvannhuomedu@gmail.comTHEO DÕI CHÚNG TÔI NHIỀU BÀI VIẾT HƠN LẬP TRÌNH

Cài Visual Studio Code lập trình C/C++

trannhuomedu - 2 Tháng Sáu, 20220

Từ khóa » Gán Giá Trị Cho Mảng Java