对象的创建与使用

创建与使用

创建对象语法如下:

var obj = new 类名(参数列表);

使用分为两种情况:

非静态属性和方法的调用及静态属性和方法的使用:

对象.属性
对象.方法(参数列表)
=============================
类名.属性
类名.方法(参数列表)

内存解析

一个Persion类如下:

class Person
{
    String name;
    int age;
    int id = 0;

    // 构造器
    public Person (String name, int age)
    {
        this.name = name;
        this.age = age;
        ++id;
    }

}

对我们创建一个对象时,内存中是结构图是怎么样的呢?

var person = new Person("james", 36);

匿名对象

所谓匿名对象,即new出一个对象,但没有将其赋值给一个变量。

package com.studyjava.unit1;

public class T8
{
    public static void main (String[] args)
    {
        new Person().sayHello();  // 匿名对象
    }
}

class Person
{
    public void sayHello ()
    {
        System.out.println("Hello!");
    }
}

使用null引用

一个对象变量包含一个对象的引用,或者包含一个特殊的值null,后者表示没有引用任何对象。

如果对null值应用一个方法,会产生一个NullPointerException异常。

java9中,对于null值的判断提供了两个便利方法:

严格型requireNonNull()、宽松型requireNonNullElse

Objects.requireNonNull(obj, "The obj is null");
// 当obj不是null时,返回obj,否则抛出异常

name = Objects.requireNonNullElse(n, "unknow");
// 当obj不是null时,返回n,否则返回unknow