为什么我们要创建类的变量?

时间:2015-10-04 03:00:27

标签: java

第一行我们可以用于创建对象,在哪种情况下我们可以使用2和3?

  1. 测试测试=新测试();
  2. 测试测试= null;
  3. 测试;

4 个答案:

答案 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来取消引用特定变量引用的任何对象。