Java基础知识回顾之面对对象基础理解

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_18948359/article/details/83720787

Java 对象的引用

说明

  1. 类的描述是公共特征,类必须通过对象才可以使用
  2. 声明对象指的是未开辟堆的内存对象,如果直接是使用此对象,会出现"NullPointerException",对象可以通过关键字 new 来进行堆内存空间的开辟,有了堆内存引用的对象才称为实例化对象
  3. 堆内存保存的是对象中所有属性的内容,而栈内存保存的是堆内存的地址数值(为了简单理解,才称栈内存保存的是对象名称)
  4. 垃圾空间指的是没有任何栈内存指向的堆内存空间,会被 GC(垃圾回收机制) 不定时进行回收
class Book{
    // 这种是没有封装性
    // 由于没有使用 private 关键字来修饰变量所以下面的代码可以直接给 类赋值
	String title;
	double price;
	public void getInfo(){
		System.out.println("图书名称:"+ this.title + ",价格为:"+ this.price);
	}
}

public class Test {

	public static void main(String[] args) {
		// 分别创建两个 Book 实例, 使用new关键字会开辟一个新的 堆内存空间
		Book bookA = new Book();	// bookA 一个栈内存,指向 new 开辟的内存空间
		Book bookB = new Book();	// 
		
		bookA.price = 89.8;
		bookA.title = "Java 开发"; 	// 给 booA 这个对象赋值,
		
		bookB.price = 69.8;
		bookB.title = "JSP 开发";	// 给 booB 这个对象赋值
		
		bookA.getInfo();
		bookB.getInfo();
		
		// 将 bookA 的地址引用,赋值给 bookB,此时 bookB 之前的赋值会被覆盖,然后之前的值会被视为 垃圾,会被 GC 回收
		bookB = bookA;		
		bookB.price = 100.1;	// 此时 bookA 和 bookB 都是指向同一个 堆内存空间, bookB的值改变,那么 bookA 的信息也就会跟着变化
		
		bookA.getInfo();	// 图书名称:Java 开发,价格为:100.1
	}
}

Java构造器

构造方法与普通方法的区别

  • 构造方法是在实例化新对象(new)的时候只调用一次
  • 普通方法是在实例化对象产生之后可以随意调用多次

在实际工作之中,构造方法的核心作用:在类对象实例化的时候设置属性的初始化内容。构造方法是为了属性初始化准备的。

对象的声明以及实例化的区别

class Book{
    public Book(){
        System.out.println("*************");
    }
}

public class Test {
	public static void main(String[] args) {
		Book book = null;	// 声明
		book = new Book();	// 实例化
	}
}

匿名对象

既然有了构造方法的概念,其实就可以根据此方法使用匿名对象。之前定义都是属于有名对象,所有的对象都给了一个名字。但是这个名字真正使用的时候调用的肯定是堆内存空间。即:真实的对象都保存在了堆内存空间之中,如果没有栈指向的对象就被称为

下面省下了 Book 类,以及 Book 的构造器和 getter 与 setter 方法。

public class Test {

	public static void main(String[] args) {
		
		// 没有名声一个栈对象的名字指向,Book 就是一个匿名对象
		new Book("Java 开发", 200).getInfo();
	}
}

由于匿名对象没有其他对象对其引用,所以只能使用一次,使用过后,就会被视为垃圾,等待 GC 回收

猜你喜欢

转载自blog.csdn.net/qq_18948359/article/details/83720787