Phạm vi của biến trong Java

06 tháng 10, 2022 – 269 lượt xem

Phạm vi của biến trong Java

Người dịch : Nguyễn Minh Tuấn
Email liên hệ : [email protected]
Bài viết gốc : https://www.baeldung.com/java-variable-scope

1. Tổng quan

Biến (variable) trong Java hay bất kì ngôn ngữ nào cũng đều có phạm vi sử dụng. Phạm vi sử dụng của biến chính là những nơi mà biến đó có thể sử dụng hợp lệ.

2.Class Scope

Biến mà được khai báo bên trong class và bên ngoài method với access modifier là private thì có phạm vi sử dụng (scope) là bên trong class đó.

public

class

ClassScopeExample

{

private

Integer amount =

0

;

public

void

exampleMethod

() { amount++; }

public

void

anotherExampleMethod

() { Integer anotherAmount = amount +

4

; } }

Chúng ta có thể thấy ClassScopeExample có biến amount có phạm vi sử dụng là class scope, vì thế những method bên trong class ClassScopeExample đều có thể sử dụng biến amount.
Nếu chúng ta không sử dụng private access modifier cho amount thì biến này có thể truy cập trong toàn bộ package . Các bạn muốn tìm hiểu về access modifier thì có thể xem thêm tại đây .

3. Method Scope

Khi một biến được khai báo bên trong method thì biến đó chỉ có thể sử dụng bên trong method mà nó được khai báo.

public

class

MethodScopeExample

{

public

void

methodA

() { Integer area =

2

; }

public

void

methodB

() { area = area +

2

; } }

4. Loop Scope

Nếu chúng ta khai báo biến trong vòng lặp, thì biến đó chỉ có phạm vi sử dụng là bên trong vòng lặp đó.

public

class

LoopScopeExample

{

List

<

String

> listOfNames =

Arrays

.

asList

(

"Joe"

,

"Susan"

,

"Pattrick"

);

public

void

iterationOfNames

(

) {

String

allNames =

""

;

for

(

String

name : listOfNames) { allNames = allNames +

" "

+ name; }

String

lastNameUsed = name; } }

Trong đoạn code trên chúng ta có thể thấy method interationOfName có biến name và biến này chỉ có thể sử dụng bên trong vòng lặp.

5. Bracket Scope

Chúng ta có thể định nghĩa scope thông qua cặp dấu {}.

public

class

BracketScopeExample {

public

void mathOperationExample() {

Integer

sum

=

0

; {

Integer

number

=

2

;

sum

=

sum

+

number

; } // compiler error,

number

cannot be solved as a variable

number

++; } }

6. Scopes and Variable Shadowing

Giả sử rằng chúng ta có 1 biến có class scope và chúng ta muốn khai báo thêm 1 biến có method scope và trùng tên với biến class scope. Trong ví dụ này chính là biến name:

public

class

NestedScopesExample

{ String title =

"Techmaster"

;

public

void

printTitle

() { System.

out

.println(title); String title =

"John Doe"

; System.

out

.println(title); } }

Khi chạy chương trình , trước tiên sẽ thực hiện print1 , và giá trị in ra sẽ là Techmaster.
Sau đó , chúng ta khai báo 1 biến method scope với tên là title và gán giá trị là John Doe . Vì vậy, khi thực hiện print2, kết quả in ra sẽ là John Doe. Đó được gọi là variable shadowing . Tuy nhiên cách đặt trùng tên biến này sẽ không được khuyến khích vì nó rất dễ gây nhầm lẫn.

7. Tổng kết

Trong bài viết này, chúng ta đã tìm hiểu về sự khác nhau giữa các phạm vi của biến trong Java.
Hy vọng bài viết sẽ giúp ích cho quá trình học tập của các bạn.