Java创建对象,Java的局部变量和实例变量

  1. 创建对象的过程(内存图)
    Person类创建对象的过程
    Person类创建对象的过程
    Person类创建对象-3个引用指向2个对象
    Person类创建对象-3个引用指向2个对象
  2. 局部变量和实例变量的区别
package com.briup.day03;
/*
局部变量和实例变量的区别
**A:在类中的位置不同
成员变量:在类中方法外
局部变量:在方法定义中或者方法声明上

**B:在内存中的位置不同
成员变量:在堆内存(成员变量属于对象,对象进堆内存)
局部变量:在栈内存(局部变量属于方法,方法进栈内存)

**C:生命周期不同
成员变量:随着对象的创建而存在,随着对象的消失而消失
局部变量:随着方法的调用而存在,随着方法的调用完毕而消失

**D:初始化值不同
成员变量:有默认初始化值
局部变量:没有默认初始化值,必须定义,赋值,然后才能使用。

局部变量名称可以和成员变量名称一样,在方法中使用的时候,采用的是就近原则。
基本数据类型变量包括哪些:byte,short,int,long,float,double,boolean,char
引用数据类型变量包括哪些:数组,类,接口,枚举
 */
public class Person {
	public Person(){//没有返回值,一般public修饰,也可以用private
		System.out.println("无参构造器");
	}
	//显式初始化:hangou
	String name="hangou";
	public Person(String name) {
		System.out.println("初始化前:"+this.name);
		//构造器初始化
		this.name=name;
		System.out.println("初始化后:"+this.name);
		System.out.println("有参构造器");
	}
	//方法中定义局部变量
	/**
	 * 方法只是开辟一块栈空间,没有初始化。获取方法中的值,要传参才能使用money。
	 * 使用就是要拿到内存空间中的值。输出也是使用。
	 */
	public void make(double money) {
		System.out.println(money);
	}
	public static void main(String[] args) {
		/*
		 * 类加载器==》方法区(.class)==》栈(方法,局部变量,没有默认值)==》堆(成员变量,有默认值)
		 */
		//栈空间中的引用person指向
		Person person = 
				new Person("chouhan");
		//new创建堆区中的出来的Person对象
		//默认赋值:String类型是null,显式赋值是hangou,初始化赋值chouhan
		System.out.println(person.name);
		
		//调用方法并传参
		person.make(8899);
		
		//创建第2个对象,在堆区中开辟新的内存空间
		Person person2 = new Person("choudan");
		System.out.println(person2);
		
		/**
		 * person3只是标识了一块内存空间,左边表示在栈中开辟了内存空间,但没有new对象,
		 * 说明没有在堆中开辟内存,=person,也就是把person这个引用的值赋值给person3
		 */
		//两个引用指向了同一个对象
		Person person3=person;
		System.out.println(person);
		System.out.println(person3);
	}
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值