java值类型与引用类型_旺旺老师Java学习解决方案_第一季

讲解:值类型,引用类型

-------------------------------------------------------------------------------

很多同学学过C语言,知道C语言可以声明指针类型的变量。那就会问,java中有没有指针呢?您一定要明确回答:“java中没有指针。问题并没有到此终结,您要紧接着说“java底层封装了指针”。对,Java底层封装了指针,但我们要说java中没有指针,也就是不能创建指针类型的变量。

但也并不是所有的类型都封装了指针,根据这点不同,java的数据类型分为两类,即:值类型(基本数据类型)和引用类型。

²  值类型:又称基本数据类型和基元数据类型。

没封装指针的变量,它们在java中只有8个,其中大部分我们前几章已经学些过,包括int, short, float, lang, double, char, boolean, byte。这里大家发现它们首字母小写,所以它们并不是类,也没有属性和方法。声明值类型变量,只会在中分配一块内存空间

²  引用类型:就是底层封装指针的数据类型。

这部分包含的比较多,包括或自定义或系统提供的所有类;后面学习的所有抽象类,接口;以及前面学习使用的所有数组。他们在内存中分配两块空间,第一块内存分配在栈中,只存放别的内存地址,不存放具体数值,我们也把它叫指针类型的变量,第二块内存分配在堆中,存放的是具体数值,如对象属性值等。

下面我们看一个综合案例,首先我们看一个类Student的代码: 

Class Student {

    // 属性:由变量实现

    String stuId;

    String stuName;

    int stuAge;

 

    // 行为:由函数(方法)实现

    void lesson(String lessonName) {

       System.out.println("我在上" + lessonName + "课");

    }

}

 

关于Student类,旺旺就不做过多的解释,我们看如何创建这个类的对象,我们知道,通过类名对象名 =  new 类名()创建对象。则有下列代码:

Class RunStudent {

    public static void main(String[] args) {

       // Student是自定义类,是指针类型变量,分配两块内存空间

       Student zhouxingxing = new Student();

// String类是系统类,也是指针类型变量,分配两块内存空间

            String name = new String("旺旺");

// int,char是值类型,只分配一块内存空间

            int a = 10;

char b = ‘m’;

 

// 对象名.属性名访问对象的属性,访问包括赋值和取值

       zhouxingxing.stuId = "9527";

       zhouxingxing.stuName = "周星星";

       zhouxingxing.stuAge = 25;

           

    }

}

 

Student zhouxingxing = new Student();这行代码在内存中就创建了两块内存空间,第一块在栈中,名字叫zhouxingxing,它就相当于指针类型的变量,我们看到它并不存放学生姓名年龄等具体的数值,而是存放堆中第二块内存的地址35DF(实际使用中这里的内存地址不一定是35DF,请大家注意),第二块才存放具体的数值,如学生编号,姓名,年龄等信息。如下图所示:

 

还有数组内部也封装了指针,即便是基本数据类型的数组,也封装了指针,数组也是引用类型。比如代码int[] arr = new int[]{232431};如下图所示:

旺旺老师教学视频下载地址:http://www.verycd.com/groups/@g481346/790989.topic,欢迎大家下载

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值