java中private User user;和User user = new User();的具体区别?

来源:百度知道 编辑:UC知道 时间:2024/06/09 02:23:24

前者只是在栈中占有一块空间,值为null
后者在栈和堆中都分配了空间,栈中的值指向堆中的地址

  首先,private User user;是定义一个类的私有的User字段,private修饰符表示只能在类内访问user字段,一般指供类中的方法使用。如果要在其他类中使用,必须提供相应的接口才能访问。

  而User user = new User();是实例化一个User对象,它可能存在方法中,表示实例化一个User对象。也可能是在定义类字段的时候,如果实在定义类的字段那么他的修饰符默认的是包级别的。就是说可以在同一个包中直接访问user对象,而不必通过接口。下面是一个简单的例子演示一下这两个之间的区别。

public class ModifiedTest
{
    public static void main(String[] args)
    {
        UserTest1 t1 = new UserTest1();
        t1.getUser().sayHi();
        UserTest2 t2 = new UserTest2();
        t2.user.sayHi();
    }
}
class UserTest1
{
    private User user