对象的创建与使用
创建与使用
创建对象语法如下:
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