我问过这个问题Adding objects to an array。现在它提出了另一个问题。
这有什么区别: 对于班级患者:
public Patient(String ptNo, String ptName, int procType) throws IOException
{
Patient.patientNo = ptNo;
Patient.patientName = ptName;
Patient.procedureType = procType;
}
和此:
public Patient(String ptNo, String ptName, int procType) throws IOException
{
this.patientNo = ptNo;
this.patientName = ptName;
this.procedureType = procType;
}
我以为他们是一回事?
修改 我在Patient类中创建了这些。
private static String patientNo;
private static String procedureDate;
private static String patientName;
答案 0 :(得分:4)
this
用于访问属于对象的属性,而Classname用于访问属于类的属性。属于类/ static
属性的属性意味着这些属性将由所有对象共享。
答案 1 :(得分:3)
使用this
访问类的非静态成员,而ClassName
用于访问静态成员。类的非静态字段对于类的每个实例都是唯一的,而static
字段对于所有实例都是通用的。
class Test{
String txt;
static String sTxt;
public Test(String t) {
this.txt = t; // accessing the instance variable using this
}
}
class Test2{
void someMethod(){
Test t = new Test("someString");
Test.sTxt; // Accessing the static member, using classname
}
}
答案 2 :(得分:3)
public Patient(String ptNo, String ptName, int procType) throws IOException
{
Patient.patientNo = ptNo;
Patient.patientName = ptName;
Patient.procedureType = procType;
}
此代码仅在所有三个变量都是静态的情况下才能工作
public class Patient
{
static String patientNo;
static int procedureType;
static String patientName;
public Patient(String ptNo, String ptName, int procType) throws IOException
{
Patient.patientNo = ptNo;
Patient.patientName = ptName;
Patient.procedureType = procType;
}
}
这样的事情
public Patient(String ptNo, String ptName, int procType) throws IOException
{
this.patientNo = ptNo;
this.patientName = ptName;
this.procedureType = procType;
}
将适用于非静态变量,“this”仅用于避免混淆,表示正在调用其构造函数的对象。实施例
Patient p = new Patient("A","B",1);
与说
相同 p.patientNo = ptNo;
p.patientName = ptName;
p.procedureType = procType;
修改强>
“这个”在这样的情况下来救援
public class Patient
{
String patientNo;
int procedureType;
String patientName;
public Patient(String patientNo, String patientName, int procedureType) throws IOException
{
this.patientNo = patientNo; // variables in LHS are class members, RHS are method parameters
this.patientName = patientName;
this.procedureType = procedureType;
}
}
答案 3 :(得分:2)
this
用于访问对象属性。它通常用于访问类的非静态变量,因为它们与对象关联。
className
通常用于访问静态变量,因为静态变量与类相关联。
静态变量在类加载时初始化,其中仅在创建类的对象时初始化对象变量。