Mức độ kiến thức cần thiết để hiểu bài viết: người mới bắt đầu. Bạn đang trong quá trình nghiên cứu nhiệm vụ Cú pháp Java và đang tiến gần hơn đến các cấp độ ban đầu.
Bạn mới bắt đầu học Java. Bạn bị tấn công dồn dập bởi các thuật ngữ như thể đến từ một thứ dồi dào. Bạn có rất nhiều thông tin kỹ thuật và đôi khi bạn bị nhầm lẫn giữa ba cây thông. Tin tôi đi, vì bạn đã tham gia lập trình rồi nên SẼ LUÔN LÀ NHƯ VẬY (lúc này, ngoài màn hình vang lên một tiếng cười đáng ngại, và một giọng nói trầm lặng cắt ngang giữa câu thì thầm “Chạy đi... hãy tự cứu mình trước khi đã quá muộn rồi…”). Lỗi sẽ ám ảnh bạn trong suốt quãng đời lập trình còn lại, ngay cả khi bạn là nhà phát triển giỏi nhất. Tuy nhiên, điều này hoàn toàn không đáng sợ như người ta tưởng.
Nếu bạn mới bắt đầu học JavaRush thì rất có thể bạn đã gặp phải những vấn đề được nêu trong bài viết. Trong mọi trường hợp, chúng tôi hoan nghênh các nhận xét mô tả các vấn đề bạn gặp phải trong những tháng đầu học Java. |
Vấn đề cấp 0: Nhầm lẫn với toán tử so sánh (==) và toán tử gán (=).
Đây là một vấn đề rất phổ biến đối với những người chuyển từ ngôn ngữ lập trình khác. Và nói chung, từ khi học tiểu học, chúng ta đã quen với việc
(=)
đây là dấu bằng. Một thủ thuật đơn giản có thể được sử dụng để ghi nhớ là: nếu bạn biết rằng bạn chỉ quan tâm đến một trong các giá trị (bạn gán giá trị này cho giá trị kia) thì bạn sử dụng một
=
dấu " " duy nhất, nếu không thì nếu bạn quan tâm đến tất cả các biến và các giá trị (bạn so sánh chúng) bạn cần có
==
dấu " " kép.
Vấn đề: Sử dụng toán tử so sánh (==) để kiểm tra tính tương đương của chuỗi
Phải làm gì: Hãy nhớ rằng
không có đối tượng Java nào có thể được kiểm tra tính tương đương bằng cách sử dụng(==)
, vì toán tử này được thiết kế để kiểm tra tính bằng nhau của các kiểu nguyên thủy.
Đối với các đối tượng bạn cần sử dụng
.equals()
. Và
String
trong ngôn ngữ Java, nó không gì khác hơn là một đối tượng (và
immutable
).
Đối tượng được đánh dấu Immutable là đối tượng có trạng thái không thể thay đổi sau khi được tạo. Trong Java , điều này có nghĩa là tất cả các trường phiên bản của một lớp được đánh dấu là final và là trường nguyên thủy (hoặc cũng vậy immutable ). |
Vấn đề: Nối chuỗi trong vòng lặp
Đừng tự mình thử điều này! Mỗi khi các chuỗi được nối, một đối tượng mới sẽ được tạo
String
(như chúng ta đã tìm ra ở trên, các chuỗi
immutable
là bất biến). Đến một lúc nào đó bạn sẽ hết bộ nhớ hoặc chương trình sẽ bắt đầu mất quá nhiều thời gian để hoàn thành.
Giải pháp. Sử dụng
StringBuilder
thay thế
String
khi nối nội dung trong một vòng lặp. Lớp này
StringBuilder
được sử dụng khi bạn cần thực hiện nhiều thay đổi đối với chuỗi ký tự. Và những dòng như vậy, không giống như
String
, không phải là
immutable
.
Vấn đề: Ngoại lệ NullPointer
Loại ngoại lệ này xảy ra khi chúng ta cố gắng sử dụng một con trỏ null
null
trong khi thực tế chúng ta cần một đối tượng thực.
Tất cả các kiểu nguyên thủy đều có giá trị mặc định. Vì vậy, y int là 0 , và y boolean là false . Giá trị mặc định của bất kỳ loại tham chiếu nào, tức là các đối tượng, là null . Nó không phải là một đối tượng hay một kiểu, nó là một giá trị đặc biệt. Về cơ bản có nghĩa là “không có gì ở đây cả”. |
Phải làm gì: Nếu mã của bạn được viết theo cách mà tại một thời điểm nào đó đối tượng của bạn có thể chấp nhận giá trị
null
, bạn cần thêm "kiểm tra
null
", đặc biệt nếu bạn không tự tạo đối tượng. Cũng nên nhớ rằng tốt hơn là trả về các bộ sưu tập trống hơn là một tập hợp
null
các 's. Sẽ thật tuyệt nếu thêm xác thực cho getters và setters.
Vấn đề: vì lý do nào đó vòng lặp if/while/for không hoạt động
if (something.equals («что-то еще»)); {
System.out.println («Почему я не работаю???»);
}
Có chuyện gì thế này? Thật đơn giản: một dấu chấm phẩy thừa đã làm hỏng máu của hàng trăm nghìn lập trình viên Java mới vào nghề. Chà, bạn không cần nó sau
if ()
. Từ quan điểm ngôn ngữ, cú pháp như vậy khá chấp nhận được nên trình biên dịch sẽ không phàn nàn về nó. Nhưng nó chấm dứt câu lệnh điều kiện và mã bên trong khối
{}
sẽ không bao giờ thỏa mãn điều kiện trên.
Giải pháp: Hãy nhớ logic thiết kế. Dấu “
;
” có nghĩa là sự kết thúc của một khối nào đó, nhưng ở đây mọi thứ chỉ mới bắt đầu.
Sự cố: Cố gắng truy cập các biến thành viên không tĩnh từ các phương thức tĩnh (chẳng hạn như chính)
Giải pháp . Vấn đề này liên quan đến sự hiểu biết về khái niệm này
static
. Nếu một phương thức được đánh dấu bằng từ này, điều đó có nghĩa là chúng ta không cần khởi tạo lớp đó để gọi phương thức chính. Vì vậy, giải pháp là phải hiểu rõ về “số liệu thống kê” và hiểu bản chất của chúng.
Vấn đề: Cố gắng phát minh lại bánh xe bằng cách phát triển các thư viện và công cụ hiện có
Giải pháp. Nó thực sự không phải là một vấn đề lớn. Đối với người mới bắt đầu, đây là một bài tập hữu ích hơn. Tuy nhiên, nếu bạn muốn tập trung vào kết quả, chẳng hạn như tạo cơ sở dữ liệu thuê bao thuận tiện, thì việc tìm kiếm thuê bao trong danh bạ điện thoại chỉ là một trong những kết quả của ứng dụng của bạn. Trong trường hợp này, không cần phải viết thuật toán tìm kiếm nhị phân. Sử dụng cái hiện có (chúng tôi đảm bảo với bạn, ai đó đã viết nó trước bạn và nó nằm trong thư viện tiêu chuẩn). Vì vậy hãy nghiên cứu các thư viện chuẩn Java trong tài liệu của Oracle. Tìm hiểu Google, làm quen với việc đọc Stack Overflow và đặt câu hỏi về
trợ giúp JavaRush ! ...Tất nhiên, đây không phải là tất cả những vấn đề của người mới bắt đầu. Hãy mô tả của bạn trong phần bình luận!
Bạn có muốn đọc các bài viết liên quan đến Java không? Tham gia nhóm Nhà phát triển Java .
Có rất nhiều thứ thú vị ở đây.
GO TO FULL VERSION