Java朝花夕拾の基本类型和引用类型

Java中数据类型可分为两大类:引用类型(reference)和基本类型(primitive)。

1)基本类型

基本类型有8种:boolean、char、byte、short、int、long、float、double。它们都有相应的包装类,这些包装类都属于引用类型,它们依次是:Boolean、Character、Byte、Short、Integer、Long、Float、Double。

2)引用类型

所有Java对象都是通过对象引用(Object References)进行访问的,类似于C++中的指针,这个引用指向堆heap中的某块区域,实际的对象存在于heap中。

例如,声明如下代码:

int prim = 10;

Integer refer = new Integer(10);

这两者在内存中的布局如下图所示:


至此,有人可能会想:当这两种类型作为函数参数传递时,到底是值传递(value)还是引用传递(reference),还是两种类型各自为政?其实Java中的函数参数都是以值方式传递的。见代码片段:

import java.awt.Point;

/**
 * Java中参数都以传值方式传递,而不是传引用方式传递
 * @author ASCE1885
 *
 */
public class PassByValue {
	
	public static void modifyPoint(Point pt, int in) {
		//这里的pt是入参pt的引用的副本,而不是入参pt的副本,即Java以传值方式传递pt的引用
		//也就是说,pt和入参pt现在指向的是同一个Point对象,详见图示
		pt.setLocation(5, 5);
		in = 15; //这里的in其实是入参in的一个副本,所有的更改都是对in而言,跟入参in无关
		System.out.println("During modifyPoint " + "pt = " + pt + "and in = " + in);
	}
	
	public static void main(String[] args) {
		Point p = new Point(0,0);
		int i = 10;
		
		System.out.println("Before modifyPoint " + "p = " + p + "and i = " + i);
		modifyPoint(p, i);
		System.out.println("After modifyPoint " + "p = " + p + "and i = " + i);
		
	}

}







上面代码的输出是:



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值