第一行我们可以用于创建对象,在哪种情况下我们可以使用2和3?
答案 0 :(得分:2)
第一种方法实际上创建了一个名为Test的实例,并将其分配给变量test。
Test test =new Test(); // ' ; ' missing
第二个只为测试分配一个空指针。
Test test =null;
第三种方式不分配任何要测试的东西,除非它是一个实例变量,在这种情况下它会为它赋值null。
Test test ;
答案 1 :(得分:2)
你显然不“知道”以下创建对象的“方法”,因为只有一种“方式”实际上(假设添加了适当的分号以允许行编译)。
Test test = new Test();
这是在直接Java语法中实际创建对象的唯一方法。对象创建可以通过在幕后使用new关键字的方法进行模糊处理,但归结为使用new关键字和构造函数调用。
Test test = null;
将此变量设置为null不会创建任何名称为test的Test对象的持有者。但是null不是一个对象,也没有创建任何东西。
Test test;
这一行与在类中将test设置为null完全相同,但在一个方法中,它允许持有者的声明允许它在另一行中进一步设置。但是,如果Java编译器在进一步的代码中读取之前无法确定实际设置此变量的路径,则会出现语法错误。要解决此错误,可以像上一行一样将其设置为null。
答案 2 :(得分:0)
Test test;
在这种情况下,没有制作对象。这只在堆栈中创建测试变量。它是Type is Test对象类型。
Test test=null;
在这种情况下,您为该referens分配空值。
Test test =new Test();
这意味着,你在堆中创建了一个新的对象。这个对象是在堆中生成的。
我认为这是java的基本内容。你做进一步的研究。 谢谢。
答案 3 :(得分:0)
public class Test{
int a ;
public Test(){
}
public class Test(int a){
this.a = a ;
}
public static void main(String args[]){
//To define a variable of type Test
Test t ;
//Defining another variable of type Test
Test t2;
//To instantiate an object of type Test using no argument constructor
//Now t holds a reference to object created by new Test()
t = new Test();
//Pass the Object reference in t to t2 variable
t2 = t ;
//To instantiate an object using one argument constructor Test(int a)
//Now t will hold reference to object created by new Test( 2)
//That makes old Test instance created by no argument constructor eligible to be cleanedup by garbage collector
t= new Test(2);
//now to release the reference to object created by new Test(2) , we set null
//In better words, we are setting the reference to "null", so that variable t no longer point to the test instance"
//For better understanding, search for database/JDBC programming example to see how we use "null" in finally block
t = null;
}
通常使用null来取消引用特定变量引用的任何对象。