01/10/2018, 08:42
Tại sao khi ko dùng từ khóa this để phân biệt biến toàn cục vs tham số thì máy nó chạy ra đối vs số là 0 còn vs kiểu String là null
mn cho e hỏi là tại sao khi ko dùng từ khóa this để phân biệt biến toàn cục vs tham số thì máy nó chạy ra đối vs số là 0 còn vs kiểu String là null vậy ạ,e b ko dùng this là sai nhưng sao nó chyaj ra vậy thì e ko hiểu,giúp e vs ạ
Bài liên quan
có ví dụ không bạn .
public class Student10 {
int id;
String name;
}
Output:
0 null
0 null
Output:
111 Viet
222 Name
đây bác trần ngọc khoa
Trong
class Student11
cũng có chứa biến thành viênint id và String name
.Như vậy khi bạn truyền vào hai tham số cũng có tên và kiểu giống như vậy thì môi trường Java (Java runtime enviroment) sẽ không phân biệt được cái nào là tham số và cái nào là biến thành viên. Con trỏ
this
dùng để phân biệt điều này.Bạn nên tham khảo thử:
http://vietjack.com/java/tu_khoa_this_trong_java.jsp
e hiểu r,cảm ơn 2 bác nhiều nhé
thực ra là e đã đọc ở vietjack r,do ko hiểu nên ms hỏi ,
Mình không hiểu mấy bố học ở đâu ra cái kiểu
Xây dựng hàm dùng tên tham số khác đi thì chết ai mà cứ sống chết dùng tham số giống thuộc tính để rồi thiếu
this
cái là “lỗi”. Trong C# mình luôn viết hàm tạo thế này :Có this hay không cũng chẳng ảnh hưởng, mà nếu hàm tạo phức tạp đọc cũng đỡ rối mắt.
Bạn thử xem bài viết này:
GP Coder – 1 Nov 17
Từ khóa this và super trong Java - GP Coder (Lập trình Java)
Hướng dẫn lập trình Java, Design Pattern, Spring, JSF, Primefaces, Collection, Multi-thread, Webservice, SQL, Report, Apache POI.
Bạn cho mình hỏi: bạn học ở đây ra kiểu code như vậy. Chẳng ai code như bạn đâu nhé, mình nghĩ bạn nên học lại lập trình hướng đối tượng.
bác thích đào mộ nhỉ.
https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/constructors
noz1995 học bên .Net nên theo style đó là bình thường
Style .NET và Java khác nhau, ngưng đào mộ + gây war
Ngoài ra còn một vài coding style mà .net và java khác nhau, tiêu biểu là bên .net họ đặt tên Interface với tiền tố
I
, VDIComparable
Dùng chung tên có vài ưu điểm
Khi nhìn vào arg bạn sẽ thấy là new_id, new_name, vậy new là new cái gì, chữ new này đứng ở góc độ class do bạn viết thì có vẻ hợp lý (mà cũng chẳng hợp lý lắm vì đã có old đâu mà có new nhỉ ), nhưng người khác dùng class của bạn thì sẽ rất dễ gây nhầm lẫn + tăng cognitive load (vì chữ new này chả dính dáng gì đến cuộc đời của họ cả)
Trường hợp tệ hơn là:
Người ta sẽ chả hiểu i,n,s là cái gì cả trừ phi đọc doc hoặc implement, cách đặt tên biến kiểu này là cực tệ, vi phạm nguyên tắc program to interfaces, not implementation.
// Mà hình như kiểu đặt trùng tên này trong chính stdlib của .NET Core họ vẫn áp dụng suốt mà, có riêng gì Java đâu nhỉ
Xin lỗi các bạn nếu mình nói sai. Nhưng bạn Nguyễn Văn Sang hỏi là về this trong java. Bạn Trần Hoàng trả lời như vậy, chẳng khác nào không hiểu this dùng để làm gì. DotNet mình không code nhiều nhưng cách đặt tên biến new_field như vậy có cần thiết không?
Ở chỗ này C# cũng ăn hành như Java.
Vấn đề là cách thức đặt tên không theo quy tắc gì nên bị loạn.
Với mình:
Tham số và biến trong hàm: viết thường.
Private : Có dấu _ và viết hoa chữ cái đầu các từ.
Public : Viết hoa chữ cái đầu các từ.
Constuctor thì đã có old đâu mà new
Lập account mới thì làm gì có ô new password.
Có thể bạn ấy không hiểu rõ vê this(java/.net). nhưng viết như bạn ấy cũng không có vấn đề gì cả(.net).
Người ta được học như thê thì viết thế là bình thường.
Mấy bác lam trong microsoft hay viết kiểu này này. -.- Nhiều lân đọc code thây hơi khó chịu
là sao ta.
Có nghĩa là ở trong cóntructor nghĩa là hàm đầu tiên khởi tạo giá trị cho íntance của object thì làm gì đã có giá trị old mà đặt tên biến có chữ new… LoL
Ví dụ