Chào mừng các bạn đến với bài học Java số 4, bài học về Biến và Hằng trong Java. Bài học này nằm trong chuỗi bài học lập trình ngôn ngữ Java của Yellow Code Books.
Với project HelloWorld mà bạn đã tạo ra ở bài trước. Hôm nay bạn hãy bắt đầu tìm hiểu về ngôn ngữ Java bằng việc tiếp cận hai khái niệm biến và hằng, bằng việc thực hành khai báo chúng ở mức cơ bản. Và để dễ tiếp cận nhất có thể, với mỗi đoạn code thực hành, mình cũng sẽ đưa ra các trường hợp ĐÚNG và SAI của code, để các bạn vừa hiểu nhanh mà cũng vừa hiểu chắc bài học. Mời các bạn bắt đầu bài học.
Biến – Variable
Việc đầu tiên tiếp cận với một ngôn ngữ lập trình, không riêng gì Java, bạn phải làm quen với khái niệm biến, các tài liệu khác có thể gọi là variable.
Khái Niệm Biến
Biến là các định nghĩa từ bạn, khi bạn định nghĩa ra một biến, hệ thống sẽ căn cứ vào biến này để tạo ra các vùng nhớ, để lưu giữ các giá trị trong ứng dụng giúp cho bạn.
Mỗi biến đều có một kiểu dữ liệu riêng, kiểu dữ liệu này sẽ được hệ thống biết và cấp phát một “độ lớn” cho nó. Độ lớn của biến sẽ cho biết khả năng lưu trữ giá trị của biến. Bạn sẽ được nắm rõ về độ lớn lưu trữ của mỗi loại biến ở bài học này. Ngoài ra thì mỗi biến còn phải được bạn đặt một cái tên giúp hệ thống có thể quản lý, truy xuất dữ liệu trong vùng nhớ của biến đó.
Khai Báo Biến
Như khái niệm trên đây, chắc bạn cũng đã nắm phần nào, việc khai báo một biến thực chất là việc bạn sẽ đặt tên cho biến, rồi đặt một kiểu dữ liệu cho biến, và có thể lưu trữ giá trị ban đầu vào cùng nhớ của biến nữa.
Để khai báo một biến trong Java, bạn hãy ghi nhớ cú pháp sau:
kiểu_dữ_liệu tên_biến;
hoặc
kiểu_dữ_liệu tên_biến = giá_trị;
Mình giải thích một chút về cú pháp trên.
kiểu_dữ_liệu sẽ quyết định đến độ lớn của biến, các loại kiểu_dữ_liệu và các cách dùng sẽ được nói rõ hơn ở phần tiếp theo của bài học.
tên_biến là… tên của biến :)), cách đặt tên cho biến sẽ được mình nói rõ hơn ở phần bên dưới luôn.
Khi khai báo biến, bạn có thể “gán” cho biến một giá_trị ban đầu, việc gán giá trị này sẽ làm cho biến có được dữ liệu ban đầu ngay khi được tạo ra. Nếu một biến được tạo ra mà không có giá trị gì được gán, nó sẽ được gán giá trị mặc định, giá trị mặc định này sẽ tùy theo kiểu_dữ_liệu của biến mà chúng ta sẽ nói đến bên dưới.
Cuối cùng, sau mỗi khai báo biến bạn nhớ có dấu “;”để báo cho hệ thống biết là kết thúc việc khai báo, nếu không có “;” hệ thống sẽ báo lỗi ngay.
Thực Hành Khai Báo Biến
Nào, giờ thì bạn hãy mở InteliJ lên.
Thông thường nếu trước đó bạn đang thao tác sẵn với project cũ, chính là project Welcome, thì khi bạn mở IDE này lên, project cũ sẽ hiển thị ra ngay cho bạn tiến hành code. Còn nếu như thấy màn hình Welcome như hình dưới đây, thì đơn giản, hãy nhấn chọn vào project HelloWorld ở danh sách các project bên trái để mở project này lên.
Mở project HelloWorld từ màn hình Welcome
Với project HelloWorld đã được mở ra. Bạn hãy tìm và mở file MyFirstClass.java nếu như nó chưa được mở sẵn trong editor. Sau đó, bạn thử gõ thêm dưới dòng code mà bạn đã code từ bài trước các dòng khai báo biến như sau nhé. Chỉ là gõ cho quen thôi. Bạn sẽ có cơ hội được khai báo các biến ở các mục phía dưới.
public class MyFirstClass {
public static void main(String[] args) {
System.out.println("Hello World!");
double salary;
int count = 0;
boolean done = false;
long earthPopulation;
}
}
Đặt Tên Cho Biến
Như ví dụ ở trên, các tên biến được đặt tên là salary, count, done hay earthPopilation. Việc đặt tên cho biến đơn giản đúng không nào, đặt như thế nào cũng được, miễn sao bạn đọc lên được (ngôn ngữ của con người), và bạn thấy nó dễ hiểu và đúng với công năng của biến đó là được rồi.
Tuy nhiên thì việc đặt tên cho biến cũng không hoàn toàn tự do, có một số “luật” đặt tên sau đây, nếu bạn mắc phải một trong các quy tắc đặt tên này thì hệ thống sẽ báo lỗi ngay đấy.
Quy Tắc 1
Ký tự bắt đầu của tên biến phải là chữ cái, hoặc dấu gạch dưới (_), hoặc ký tự đô la ($). Ví dụ cho việc đặt tên biến đúng như sau.
int count; int Count; int _count; int $count;
Đúng
Còn đặt tên biến như sau sẽ bị lỗi. Vì các ký tự đầu tiên của chúng hoặc là một số, hoặc là một ký tự đặc biệt không được phép. Nếu không tin bạn cứ thử gõ vào IDE xem sao nhé.
int 5count; int 5Count; int #count; int /count;
Sai
Quy Tắc 2
Không được có khoảng trắng giữa các ký tự của biến. Ví dụ đặt tên biến như sau là sai.
int this is count;
Sai
Nếu bạn muốn tên biến trên được tách biệt rõ ràng từng chữ cho rõ nghĩa thì có thể đặt như sau.
int thisIsCount; int this_is_count; int This_Is_Count;
Đúng
Đến đây thì cho mình nói ngoài lề xíu: trong trường hợp biến có nhiều từ như ví dụ trên, việc bạn chọn muốn đặt theo kiểu nào trong 3 cách đúng như trên đều được, chúng đều là các cách đặt tên biến phổ biến ngày nay. Thậm chí một trong số cách đó còn có những cái tên thú vị.
Chẳng hạn biến thisIsCount được gọi là cách đặt tên theo camelCase (đặt kiểu con lạc đà), có lẽ là bởi hình dáng của nó. Với cách này thì chữ đầu tiên this được viết thường, nên trông thấp nhỏ như phần đầu lạc đà. Các chữ cái ở mỗi từ tiếp theo sẽ viết hoa IsCount, từng chữ viết hoa làm chúng nhô lên cao như những cái bứu trên lưng con lạc đà vậy.
Còn biến this_is_count được gọi là cách đặt tên theo snake_case (đặt kiểu con rắn), cũng bởi đặc điểm hình dáng của biến. Với cách đặt tên này thì các chữ cái đều viết thường hết (cũng có người viết hoa mỗi chữ cái đầu như với This_Is_Count, nhưng cách đặt này làm chúng ta tốn thời gian gõ tên biến hơn) và được nối với nhau bởi dấu gạch dưới. Việc đặt tên này làm cho biến bị kéo dài ra giống như con rắn vậy. Cách đặt này giúp chúng ta rất dễ đọc từng từ vì chúng cách biệt khá rõ ràng.
Với lập trình Java thì các bạn nên chọn ra cho mình một phong cách đặt tên biến rõ ràng, đừng nhập nhằng lúc thì camelCase lúc thì snake_case. Với mình thì mình khuyên bạn nên đặt tên biến theo kiểu camelCase (bạn sẽ thấy từ đây về sau mình sẽ dùng cách đặt tên này) vì đó là “lệ” đặt tên biến chung của các ngôn ngữ Pascal, Java, C# hay Visual Basic rồi.
Lưu ý là đặt kiểu nào cho biến cũng được nhưng nhớ đừng có chữ nào cũng viết hoa hết như ThisIsCount vì nó rất dễ nhầm lẫn với đặt tên cho class mà bạn sẽ học ở các bài sau, hay THIS_IS_COUNT vì nó lại nhầm với hằng số mà bạn cũng sắp được làm quen ở bài hôm nay nhé.
Quy Tắc 3
Không chứa ký tự đặc biệt bên trong tên biến như !@#%^&*. Ví dụ đặt tên biến như sau là sai.
int c@unt; int count#; int count*count;
Sai
Quy Tắc 4
Không được đặt tên biến trùng với keyword. Keyword là các từ khóa mà ngôn ngữ Java dành riêng cho một số mục đích của hệ thống. Các keyword của Java được liệt kê trong bảng sau.
abstract
continue
for
new
switch
assert
default
goto
package
synchronized
boolean
do
if
private
this
break
double
implements
protected
throw
byte
else
import
public
throws
case
enum
instanceof
return
transient
catch
extends
int
short
try
char
final
interface
static
void
class
finally
long
strictfp
volatile
const
float
native
super
while
Ví dụ đặt tên biến như sau là sai.
boolean continue = true; long class; int final;
Sai
Tuy nhiên bạn có thể đặt tên biến có chứa keyword bên trong đó mà không bị bắt lỗi, như ví dụ sau.
boolean continue1 = true; long classMySchool; int finalTarget;
Đúng
Kiểu Dữ Liệu Của Biến
Như đã nói ở trên, mỗi biến đều phải có một kiểu_dữ_liệukèm theo nó. Kiểu dữ liệu sẽ báo cho hệ thống biết biến đó có “độ lớn” bao nhiêu, độ lớn này sẽ cho biết khả năng lưu trữ giá trị của biến.
Việc chọn một kiểu dữ liệu cho biến là phụ thuộc ở bạn. Thông thường bạn nên dựa trên công năng của biến đó, chẳng hạn như biến thuộc kiểu ký tự hay kiểu số, với kiểu số thì lại là số nguyên hay số thực. Hoặc bạn có thể dựa trên khả năng lưu trữ giá trị của biến đó, như biến là số integer hay số long, số float hay số double.
Chúng ta hãy bắt đầu làm quen với 8 kiểu dữ liệunguyên thủycủa biến thông qua sơ đồ sau.
Gọi là kiểu dữ liệu nguyên thủy vì chúng là các kiểu dữ liệu cơ bản và được cung cấp sẵn của Java. Về mặt lưu trữ thì kiểu dữ liệu nguyên thủy lưu trữ dữ liệu trong chính bản thân nó, việc sử dụng kiểu này cũng rất đơn giản, và không dính líu gì đến hướng đối tượng cả. Ngược lại với kiểu dữ liệu nguyên thủy là kiểu dữ liệu hướng đối tượng sẽ được mình nói ở các bài sau khi bạn đã nắm được kiến thức căn bản của Java.
Sơ đồ các kiểu dữ liệu nguyên thủy trong Java
Nhìn nhiều vậy thôi chứ các kiểu dữ liệu nguyên thủy mà chúng ta cần quan tâm chính là các ô màu xanh lá cây, bao gồm các kiểu int, short, long, byte, float, double, char, và boolean. Các ô màu khác chỉ là gom nhóm các kiểu dữ liệu lại để chúng ta dễ nhớ và dễ sử dụng hơn thôi
Chúng ta cùng nhau đi vào từng loại kiểu dữ liệu để biết rõ hơn.
Kiểu Số Nguyên
Kiểu này dùng để lưu trữ và tính toán các số nguyên, bao gồm các số nguyên có giá trị âm, các số nguyên có giá trị dương và số 0. Sở dĩ có nhiều kiểu số nguyên như trên, là vì tùy vào độ lớn của biến mà bạn sẽ khai báo kiểu dữ liệu tương ứng, chúng ta cùng xem qua bảng giá trị của các kiểu dữ liệu số nguyên như sau.
Kiểu Dữ Liệu
Bộ Nhớ Lưu trữ
Độ Lớn Của Biến
byte
1 byte
Từ –128 Đến 127
short
2 byte
Từ –32,768 Đến 32,767
int
4 byte
Từ –2,147,483,648 Đến 2,147,483, 647
long
8 byte
Từ –9,223,372,036,854,775,808 Đến 9,223,372,036,854,775,807
Theo như bảng trên thì bạn thấy việc chọn lựa độ lớn cho kiểu là rất quan trọng, như với kiểu là byte, hệ thống sẽ chỉ cấp phát cho chúng ta vùng nhớ lưu trữ đúng 1 bytedữ liệu, với vùng nhớ này bạn chỉ được phép sử dụng độ lớn của biến từ -128 đến 127 mà thôi.
Ví dụ bạn khai báo biến như sau là hợp lệ.
byte month = 5; short salaryUSD = 2000;
Đúng
Còn khai báo như sau sẽ vượt ra ngoài khả năng lưu trữ của biến và vì vậy bạn sẽ bị báo lỗi ngay.
byte day = 365; short salaryVND = 40000000;
Sai
Do đó khi sử dụng kiểu dữ liệu cho biến bạn phải cân nhắc đến độ lớn lưu trữ của chúng. Bạn không nên lúc nào cũng sử dụng kiểu dữ liệu long cho tất cả các trường hợp vì như vậy sẽ làm tiêu hao bộ nhớ của hệ thống khi chương trình được khởi chạy. Bạn nên biết giới hạn của biến để đưa ra kiểu dữ liệu phù hợp. Ví dụ nếu dùng biến để lưu trữ các tháng trong năm, thì kiểu byte là đủ. Hoặc dùng biến để lưu tiền lương của nhân viên theo VND, thì dùng kiểu int, hoặc thậm chí là kiểu long luôn vì biết đâu có người thu nhập đến hơn 2 tỷ VND mỗi tháng (eo ôi!).
Nếu không khai báo giá trị cho biến, thì biến kiểu số nguyên sẽ có giá trị mặc định là 0 (hoặc 0L đối với kiểu long).
Lưu ý nhỏ đối với giá trị mặc định của các kiểu dữ liệu.
Như trên mình có nói là, nếu không khai báo giá trị cho biến, thì biến kiểu số nguyên sẽ có giá trị mặc định là 0 (hoặc 0L đối với kiểu long). Ở các mục bên dưới, với từng loại kiểu dữ liệu khác nhau, mình cũng có nói từng loại giá trị mặc định tương ứng. Tuy nhiên nếu bạn nào đã từng biết chút Java và có thử nghiệm các kiểu giá trị mặc định như đoạn code sau.
public static void main(String[] args) {
int vacationDay;
System.out.println(vacationDay);
}
Bạn cứ nghĩ là nó sẽ in ra console giá trị 0 đúng không? Sai rồi, IDE sẽ báo lỗi như sau.
Tưởng đâu không lỗi nhưng IDE báo lỗi lạ lắm
Theo như lỗi trên thì IDE bắt chúng ta phải khai báo giá trị cho biến trước khi dùng vào việc gì đó. Nếu bạn thử chọn gợi ý Initialize variable ‘vacationDay’ thì sẽ thấy biến vacationDay được tự sửa bằng cách gán giá trị ban đầu là 0.
int vacationDay = 0;
System.out.println(vacationDay);
Điều này có nghĩa là vacationDay không có giá trị mặc định ban đầu như mình có nói. Vậy bạn có thể nhớ nhanh ở mục này là, giá trị mặc định của một biến chỉ dùng cho trường hợp khi biến này đóng vai trò là thuộc tính của lớp mà bạn sẽ tìm hiểu sau. Còn với vai trò là biến cục bộ bên trong một phương thức như ví dụ trên, bạn vẫn phải khai báo tường minh một giá trị mặc định ban đầu cho biến.
Kiểu Số Thực
Kiểu này dùng để lưu trữ và tính toán các số thực, chính là các số có dấu chấm động. Cũng giống như kiểu số nguyên, kiểu số thực cũng được chia ra thành nhiều loại với nhiều độ lớn khác nhau tùy theo từng mục đích, như bảng sau.
Kiểu Dữ Liệu
Bộ Nhớ Lưu trữ
Độ Lớn Của Biến
float
4 byte
Xấp xỉ ±3.40282347E+38F
double
8 byte
Xấp xỉ ±1.79769313486231570E+308
Với sự thoải mái trong cấp phát bộ nhớ của kiểu số thực thì bạn không quá lo lắng đến việc phân biệt khi nào nên dùng kiểu float hay double. Ví dụ sau đây cho thấy trường hợp dùng kiểu số thực.
float rating = 3.5f; double radius = 34.162;
Đúng
Sở dĩ với kiểu float ở trên phải để chữ f vào cuối khai báo float rating = 3.5f;là vì thỉnh thoảng chúng ta phải nhấn mạnh cho hệ thống biết rằng chúng ta đang xài kiểu float chứ không phải kiểu double, nếu bạn không để thêm f vào cuối giá trị thì hệ thống sẽ báo lỗi. Tương tự bạn cũng có thể khai báo double radious = 34.162d; nhưng vì hệ thống đã hiểu đây là số double rồi nên bạn không có chữ d trong trường hợp này cũng không sao.
Nếu không khai báo giá trị cho biến, thì biến kiểu số thực sẽ có giá trị mặc định là 0.0f đối với kiểu float và 0.0d đối với kiểu double.
Kiểu char
Kiểu char dùng để khai báo và chứa đựng một ký tự. Bạn có thể gán một ký tự cho kiểu này trong một cặp dấu nháy đơn như ‘a’ hay ‘B’ như ví dụ sau.
char thisChar = 'a';
Đúng
Bạn phải luôn nhớ là ký tự ‘a’ được khai báo ở trên phải nằm trong cặp nháy đơn chứ không phải nháy kép nhé. Nháy kép là dành cho chuỗi sẽ được nói đến ở bài học sau. Và nhớ là nếu không có nháy cũng sai. Ví dụ sau khai báo sai kiểu char.
Ngoài việc khai báo như trên, kiểu char còn được dùng theo mã Unicode. Mã Unicode bắt đầu bằng ‘\u0000’ và kết thúc bằng ‘\uffff’. Lưu ý là với cách dùng kiểu mã Unicode này, bạn vẫn phải dùng nháy đơn cho việc khai báo. Ký hiệu \u cho biết bạn đang dùng với mã Unicode chứ không phải ký tự bình thường. Với cách khai báo theo kiểu mã Unicode này, bạn có thể đưa vào chương trình một số ký tự đặc biệt, hãy thử thực hành code như sau và in ra log, bạn sẽ thấy hiệu quả của Unicode nhé.
public class MyFirstClass {
public static void main(String[] args) {
char testUnicode1 = '\u2122';
char testUnicode2 = '\u03C0';
System.out.println("See this character " + testUnicode1 + " and this character " + testUnicode2);
}
}
Nếu không khai báo giá trị cho biến, thì biến kiểu char sẽ có giá trị mặc định là ‘\u0000’.
Kiểu boolean
Khác với C/C++, kiểu boolean trong ngôn ngữ Java chỉ được biểu diễn bởi hai giá trị là true và false mà thôi. Do vậy mà kiểu dữ liệu này chỉ được dùng trong việc kiểm tra các điều kiện logic, chứ không dùng trong tính toán, và bạn cũng không thể gán một kiểu số nguyên về kiểu boolean như trong C/C++ được.
Khai báo một kiểu boolean đúng như sau.
boolean male = true; boolean graduated = false;
Đúng
Việc khai báo một biến boolean như sau là sai.
boolean male = 1;
Sai
Nếu không khai báo giá trị cho biến, thì biến kiểu boolean sẽ có giá trị mặc định là false.
Hằng – Const
Hằng Số, hay còn gọi là const, là viết tắt của từ constant. Hằng cũng tương tự như biến, nhưng đặc biệt ở chỗ nếu một biến được khai báo là hằng thì nó sẽ không được thay đổi giá trị trong suốt chương trình.
Vì các ví dụ trên đây chỉ giúp cho các bạn khai báo một biến mà không đá động gì đến việc thay đổi giá trị biến đó, nhưng thực ra một biến có thể bị thay đổi giá trị nhiều lần trong suốt quá trình thực thi của ứng dụng, bạn sẽ làm quen với việc thay đổi giá trị của biến ở các bài sau. Còn hằng thì không có sự thay đổi nào cả, nếu bạn cố tình thay đổi hay gán lại giá trị mới của hằng sau khi nó được khai báo, bạn sẽ nhận được thông báo lỗi.
Để khai báo một hằng số, bạn cũng khai báo giống như biến nhưng thêm final vào trước khai báo. Bạn sẽ được biết nhiều hơn đến hằng số qua bài học riêng về từ khóa final. Giờ thì bạn có thể xem ví dụ sau để hiểu sơ về hằng.
final float PI = 3.14f;
final char FIRST_CHARACTER = 'a';
final int VIP_TYPE = 1;
Bạn nên tập khai báo hằng bằng các ký tự viết hoa như ví dụ trên đây, điều đó giúp chúng ta dễ dàng phân biệt được đâu là biến và đâu là hằng sau này.
Kết Luận
Chúng ta vừa xem qua cách khai báo các biến và hằng. Nếu bạn vẫn còn mông lung về ngôn ngữ Java ở bài học này cũng không sao, mọi thứ chỉ mới bắt đầu, và rất cần nỗ lực từ phía bạn. Bạn sẽ được học sâu hơn các kiến thức về ngôn ngữ Java này ở các bài sau.
Cảm ơn bạn đã đọc các bài viết của Yellow Code Books. Bạn hãy ủng hộ blog bằng cách: – Đánh giá 5 sao ở mỗi bài viết nếu thấy thích. – Comment bên dưới mỗi bài viết nếu có thắc mắc. – Để lại địa chỉ email của bạn ở thanh bên phải để nhận được thông báo sớm nhất khi có bài viết mới. – Chia sẻ các bài viết của Yellow Code Books đến nhiều người khác. – Ủng hộ blog theo hướng dẫn ở thanh bên phải để blog ngày càng phát triển hơn.
Bài Kế Tiếp
Bạn sẽ được học cách sử dụng các phép toán trong Java, và kết hợp với việc khai báo biến và hằng của bài học hôm nay để viết một số ví dụ tính toán thú vị.
Chắc hẳn bạn biết rõ về C/C++ nên mới thắc mắc về con trỏ. Trong Java không còn khái niệm con trỏ nữa đâu bạn. Nhưng như vậy không phải là Java bỏ hẳn con trỏ đâu, việc sử dụng con trỏ chỉ còn được thực hiện ở các tầng dưới mà các lập trình viên Java không trực tiếp tương tác đến như bên C/C++. Bỏ con trỏ đi theo mình thấy cũng sẽ đỡ nhức đầu cho lập trình viên hơn ^^
Trong Java không còn sử dụng con trỏ, theo mình biết khái niệm tham chiếu references trong Java cũng gần giống với con trỏ. Bạn có thể google “Phan biet giua pointer va references” để hiểu rõ hơn.
Ôi, 2 triệu mà *5 thì kiểu long dư sức thể hiện bạn à. Vậy trường hợp của bạn có thể lý giải là bạn đã vô tình sử dụng số thực để tính toán trong biểu thức nào đó với số long kia, khiến hệ thống tự ép kiểu về số thực, nên mới ra kết quả 1.E07 đấy nhé.
Mình mới xem lại thấy vẫn đủ mà bạn :)). Bạn chú ý nếu xem code trên các màn hình nhỏ, như tablet hay điện thoại thì các khung code có thanh trượt ngang để xem thêm các dòng bị ẩn khỏi màn hình đấy nhé.
Cảm ơn bài viết của bạn rất nhiều :”))) mình cũng đang học Java basic và code lỗi ở phần overloading methods mà không biết là lỗi gì, đọc bài của bạn mới thấy phần “vì thỉnh thoảng chúng ta phải nhấn mạnh cho hệ thống biết rằng chúng ta đang xài kiểu float chứ không phải kiểu double, nếu bạn không để thêm f vào cuối giá trị thì hệ thống sẽ báo lỗi” mình mới thấy mấy phần kia học không tới nơi tới chốn :((
Kiểu con trỏ thì sao Ad ơi?
Chắc hẳn bạn biết rõ về C/C++ nên mới thắc mắc về con trỏ. Trong Java không còn khái niệm con trỏ nữa đâu bạn. Nhưng như vậy không phải là Java bỏ hẳn con trỏ đâu, việc sử dụng con trỏ chỉ còn được thực hiện ở các tầng dưới mà các lập trình viên Java không trực tiếp tương tác đến như bên C/C++. Bỏ con trỏ đi theo mình thấy cũng sẽ đỡ nhức đầu cho lập trình viên hơn ^^
Trong Java không còn sử dụng con trỏ, theo mình biết khái niệm tham chiếu references trong Java cũng gần giống với con trỏ. Bạn có thể google “Phan biet giua pointer va references” để hiểu rõ hơn.
Cảm ơn Ad và bạn Hải Ham Học đã giải đáp. Mình sẽ tìm hiểu thêm, nếu có gì thắc mắc sẽ hỏi tiếp 😀
E dùng biến kiểu long nhập vào số 2 triệu sau đó dùng phương thức *5 thì nó lại ra số 1.0E7????? Ad giải thik gium mình vs
Ôi, 2 triệu mà *5 thì kiểu long dư sức thể hiện bạn à. Vậy trường hợp của bạn có thể lý giải là bạn đã vô tình sử dụng số thực để tính toán trong biểu thức nào đó với số long kia, khiến hệ thống tự ép kiểu về số thực, nên mới ra kết quả 1.E07 đấy nhé.
À bạn có thể đọc ở Java Bài 6 của mình để biết rõ hơn việc hệ thống tự ép kiểu như thế này 😉
Rất hay và bổ ích, em đã học hỏi được nhiều từ những bài viết của anh. Em xin cảm ơn.
Kiểu double bị sai giá trị rồi
Cảm ơn bạn nhé, mình đã sửa lại rồi
Phần vd mã code ngay trên phần “Đặt tên cho biến” bị thiếu 1 dấu mở ngoặc nhọn của Main method r thì phải?
Mình mới xem lại thấy vẫn đủ mà bạn :)). Bạn chú ý nếu xem code trên các màn hình nhỏ, như tablet hay điện thoại thì các khung code có thanh trượt ngang để xem thêm các dòng bị ẩn khỏi màn hình đấy nhé.
Cảm ơn bài viết của bạn rất nhiều :”))) mình cũng đang học Java basic và code lỗi ở phần overloading methods mà không biết là lỗi gì, đọc bài của bạn mới thấy phần “vì thỉnh thoảng chúng ta phải nhấn mạnh cho hệ thống biết rằng chúng ta đang xài kiểu float chứ không phải kiểu double, nếu bạn không để thêm f vào cuối giá trị thì hệ thống sẽ báo lỗi” mình mới thấy mấy phần kia học không tới nơi tới chốn :((