Java系列之传值还是传址,你清楚了吗?

前言

Java有两大数据类型:基本型和引用型基本型有int(整型)、short(短整型)、长整型(long)、byte(字节型)、float(单精度型)、double(双精度型)、char(字符型)以及boolean(布尔型)8种类型。

基本数据类型
占字节数默认值包装类
int40Integer
short20Short
long80LLong
byte10Byte
float40.0fFloat
double80.0dDouble
char2Character
boolean1/8(即1位)flaseBoolean

实践出真理,我们可以看一下它们所占的字节数和它们的默认值:

public class test2 {
    static int i;
    static short s;
    static long l;
    static byte b;
    static float f;
    static double d;
    static char ch;
    static boolean bool;

    public static void main(String[] args) {

        System.out.println("int型占"+Integer.SIZE/8+"个字节,默认值 ="+i);//SIZE以bit为单位
        System.out.println("short型占"+Short.SIZE/8+"个字节,默认值 ="+s);
        System.out.println("long型占"+Long.SIZE/8+"个字节,默认值 ="+l);
        System.out.println("byte型占"+Byte.SIZE/8+"个字节,默认值 ="+b);
        System.out.println("float型占"+Float.SIZE/8+"个字节,默认值 ="+f);
        System.out.println("double型占"+Double.SIZE/8+"个字节,默认值 ="+d);
        System.out.println("char型占"+Character.SIZE/8+"个字节,默认值 ="+ch);
        System.out.println("boolean型"+"默认值 ="+bool);
    }
}

 运行结果如下:

引用型则有数组[ ]、类class 以及接口interface 三种类型,由用户自定义。

OK,简单介绍完Java的两大数据类型,下面我们来说一下,传值和传址到底有什么不同。

讲重点 

首先,我们要知道,Java中定义一个变量,这个变量会存放在哪里,堆中,栈中,还是哪里?

首先,基本数据类型、数据的引用变量,都存放在栈中,而new 出来的对象(包括数组,集合等)则存放在堆中

当我们定义一个变量时,Java就在栈中开辟一块空间,用来存储它的值,基本数据类型的值,就是它所定义的值,而引用变量的值其实是地址;当我们new 一个对象时,Java会在堆中开辟一块空间,并给它分配一个地址值,这个地址值通常都会赋值给它的引用变量,所以说:引用变量的值就是地址。当我们调用一个函数时,其实都是把实参的值传给形参,只不过引用变量的值是地址,所以就变成传址,本质上就是传值。

但是呢,基本类型的包装类和String 类特殊 , 它们的值就是值,而不是地址。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值