zoukankan      html  css  js  c++  java
  • 再谈java两种变量(基本类型和引用类型)(综合各路大神)

    基本类型:

    基本类型自然不用说了,它的值就是一个数字,一个字符或一个布尔值。

     int  a;  
     a=250; //声明变量a的同时,系统给a分配了数据空间。

    引用类型:

    是一个对象类型,值是什么呢?它的值是指向内存空间的引用,就是地址,所指向的内存中保存着变量所表示的一个值或一组值。 

    引用类型就不是了,只给变量分配了引用空间,数据空间没有分配,因为谁都不知道数据是什么,整数,字符?我们看一个错误的例子:

    MyDate today;

    today.day = 4; //发生错误,因为today对象的数据空间未分配。

    那我们怎么给它赋值?引用类型变量在声明后必须通过实例化开辟数据空间,才能对变量所指向的对象进行访问。举个例子:

    MyDate today; //将变量分配一个保存引用的空间

    today = new MyDate();     //这句话是2步,首先执行new MyDate(),给today变量开辟数据空间,然后再执行赋值操作

    //引用变量赋值

    MyDate a,b;                    //在内存开辟两个引用空间

    a  =  new MyDate();     //开辟MyDate对象的数据空间,并把该空间的首地址赋给a

    b  =  a;                               //将a存储空间中的地址写到b的存储空间中

    一 引用变量: 1.

                            int a=1;

                            int &b=a;这里变量b称作是对变量a的引用(c语言中)

                      2. 而当变量指向一个对象时,这个变量就被称为引用变量(java中)

                比如A c=new A();
                c就是引用变量,它指向了一个A对象,也可以说它引用了一个A对象。我们通过操纵这个a来操作A对象。 此时,变量a的值为它所引用对象的地址

    二:引用变量(对象)的地址问题
    void func()
    {
        Object obj = new Object();//这个obj在函数的栈里。
    }

    class Test
    {
       private Object obj = new Object();//这个obj随对应的Test对象分配在堆里
    }
    对于方法中局部变量的引用存储在java运行时数据区的栈中,而对于实例变量则存储在java运行时数据区的堆中。
    引用放在栈中,具体的对象放在堆里

    成长就是将哭声调成静音的过程
  • 相关阅读:
    Winform中设置BackgroundWorker在取消时关闭后台进程不生效-没有跳出循环
    Ionic中自定义公共模块以及在自定义模块中使用ionic内置模块
    Ionic创建页面以及页面之间跳转、页面添加返回按钮、新增底部页面
    Ionic介绍以及搭建环境、新建和运行项目
    格式化输出(%用法和fomat用法)
    ubuntu1804搜狗输入法乱码问题解决
    python测试网站访问速度
    linux常用命令手册
    docker打包flask简单程序
    docker命令集锦
  • 原文地址:https://www.cnblogs.com/weixiaoling/p/6083384.html
Copyright © 2011-2022 走看看