变量及其传递

本文深入探讨了Java中基本类型与引用类型的特性,通过具体示例解析了字段变量与局部变量的区别,并展示了变量传递机制的实际运作。

基本类型:其值直接存于变量中。

引用类型:除占据一定内存空间外,它所引用的对象实体(由new创建)也要占用一定的内存空间(我的理解是差不多就是C++创建了个变量  然后又搞了个指针指向它。。)

package com.pku.edu.ch5;

public class MyDate {
	private int day;
	private int month;
	private int year;

	public MyDate(int day, int month, int year) {
		super();
		this.day = day;
		this.month = month;
		this.year = year;
	}

	void addYear() {
		year++;
	}

	public void display() {
		System.out.println(year + "-" + month + "-" + day);
	}
	
	public static void main(String[] args) {
		MyDate m = new MyDate(2, 9, 2003); /*创建了一个对象实例 存储在堆中  m为引用变量 指向该对象实例 */
		MyDate n = m; //使得引用变量n也指向该对象实例
		m.addYear();
		m.display(); /* result: 2004-9-22*/
		n.display(); /* result: 2004-9-22*/ 
		//2引用变量输出的内容相同
	}
}

字段变量(field)和局部变量(local variable)

前者是在类中,后者是方法中定义的变量或者方法的参变量

区别:

1.字段变量为对象的一部分 存储在堆中 局部变量是存储在栈中的

2.生命周期不同。 (很自然 和C++完全一样)

3.初始值:field会自动赋初值。 而局部变量必须显示赋值

4. 局部变量只能被final修饰 因为它和类无关。


变量的传递:

JAVA是值传递的。

对于引用型的变量传递的是引用 (自己理解应该就是C++中的指针传递)。可以改变对象的属性 

package com.pku.edu.ch5;
public class TransByValue {
	public static void main(String[] args) {
		int a = 0;
		modify(a);
		System.out.println(a); // result 0
		int b[] = new int[1];
		modify(b);
		System.out.println(b[0]); // result 1
	}

	public static void modify(int a) {
		a++;
	}

	public static void modify(int b[]) {
		b[0]++;
		b = new int[5]; /* 将b指向一个新的引用 原来的b不会改变 学过C++的很好理解吧  就是指针传递*/
		System.out.println(b[0]); /*指向新的对象实例 b[0]为0 */
	}
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值