精华内容
下载资源
问答
  • 值类型变量和引用类型变量的区别

    千次阅读 2017-12-02 11:25:09
    值类型数据的存储空间在栈空间中分配,引用类型数据则在堆空间分配。 由系统管理栈空间的所有操作,包括进栈和出栈。当一个数据出栈后,其所分配到的存储空间由系统自动回收。 堆空间由CLR负责管理。 2、值...

    主要区别在于 系统在内存空间中为两者分配存储空间的方式不同。

    1、内存空间

    内存空间分为栈空间和堆空间。值类型数据的存储空间在栈空间中分配,引用类型数据则在堆空间分配。
    由系统管理栈空间的所有操作,包括进栈和出栈。当一个数据出栈后,其所分配到的存储空间由系统自动回收。
    堆空间由CLR负责管理。

    2、值类型变量

    C#中的值类型变量和C/C++中的普通变量(非指针变量)相似。当定义一个值类型变量并初始化时,系统会在栈空间中为这个变量分配存储空间,并将值存放在存储空间中。
                                     

    3、引用类型变量

    引用类型变量类似C/C++中的指针变量。例如 int *p,指针变量p存储的是某个整形变量的地址。而引用类型变量存储的则是某个对象的地址,而非变量或对象本身。
    事实上,当定义一个变量,不论是值类型变量还是引用类型变量,并初始化时,系统都是在栈空间中为他们分配对应的存储空间。所不同的是,引用类型变量所指向的对象的存储空间是在堆空间分配的。
    展开全文
  • 引用类型变量在声明后必须引用对象才能使用。 一个引用变量只能唯一指向一个对象,但同一个对象可被多个引用类型变量引用。 如:MyDate today; //将变量跟配给一个保存引用的空间(栈)  today = new MyDate();...

    引用类型变量在声明后必须引用对象才能使用。

    一个引用变量只能唯一指向一个对象,但同一个对象可被多个引用类型变量引用。

    如:MyDate today;  //将变量跟配给一个保存引用的空间(栈)

      today = new MyDate();  //给today变量开辟数据空间(堆),然后再执行赋值操作

      //引用变量赋值

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

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

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

     

    package testStack;
    
    class MyDate {
        public int year = 2017;
        public int month = 11;
        public int day = 17;
        
        public void show() {
            System.out.println(year+"/"+month+"/"+day);
        }
    }
    public class TestStack {
        //一个引用变量只能唯一指向一个对象,而一个对象可以有过个引用变量来引用
        public static void main(String[] args) {
            MyDate a;//声明一个引用变量,引用变量在占中开辟内存空间
            a = new MyDate();//在堆中创建一个对象,并把对象的地址赋值给引用变量
            MyDate b = new MyDate();
            MyDate c = new MyDate();
            MyDate d = c;//将c引用变量中保存的地址赋值给d变量
            
            a.show();    //2017/11/17
            b.show();    //2017/11/17
            c.show();    //2017/11/17
            d.show();    //2017/11/17
            
            System.out.println("===============");
            //a、b互不影响
            a.month = 12;
            a.show();    //2017/12/17
            b.show();    //2017/11/17
            b.day = 20;    
            a.show();    //2017/12/17
            b.show();    //2017/11/20
            
            System.out.println("===============");
            //c、d指向同一个地址,所以相互影响
            c.year = 1949;
            c.show();    //1949/11/17
            d.show();    //1949/11/17
            d.month = 10;
            c.show();    //1949/10/17
            d.show();    //1949/10/17
        }
    }

    原文参考:http://www.cnblogs.com/lialong1st/p/7864825.html

    展开全文
  • 在《Java核心技术 卷I》中,提到“不能再静态域或方法中引用类型变量”。

            在《Java核心技术 卷I》中,提到“不能在静态域或方法中引用类型变量”。示例代码如下:


           接着,下面的文字解释说:如果这个程序能够运行(也就是允许题目中所提的情况),就可以声明一个Singleton<Random>共享随机数生成器,声明一个Singleton<JFileChoose>共享文件选择器对话框。但是,这个程序无法工作。类型擦除之后,只剩下Singleton类,它只包含一个singleInstance域。因此,禁止使用带有类型变量的静态域和方法。


          上面的解释看得云里雾里的,后来才似有所悟,大概的意思是这样的吧:如果允许的话,由于静态的域和方法都是可以被类直接调用的,所以上面的情况就会出现T随时可能被修改的情况。打个比方,咱们设有类A 和 B,如果一个地方咱们调用Singleton<A>.getSingleInstance( ),得到的结果是A的对象a,如果后来又有一个地方,调用了Singleton<A>.getSingleInstance( ),那么等到的结果是什么呢? 还是A的对象a-----但咱们想得到的可是B的对象啊!   咱们再退一步,即使得到的是B的对象b,那么,将会导致前面的引用变量a指向b(因为这是个单例模式),这也不是咱们所希望的。


    网上有人说跟静态的初始化有关,但我个人觉得似乎跟静态初始化并无关系。因为咱们在调用这个类时,无论指定还是不指定T的类型,都不影响初始化吧?如果指定了,那就是T类型,如果没指定,至少也有T的原型来发挥作用啊!


            再强调一遍。抛开这个例子,咱们单独来看——为什么不能定义静态的泛型变量?

    public class Pair<T> {
    	
    	public static T t;
    	
    }

    如果允许,T就可能总是变化,Pair<String>、Pair<Integer>... ...,例如咱们想用Pair<String>去组成一个字符串,结果T却变成了Integer!

    好了,不知道大家懂这个意思没,其实我现在也是没有完全懂。如有更好的解释,欢迎大家在下面的评论里补充。





    展开全文
  • 引用类型和引用变量

    千次阅读 2019-05-09 19:48:44
    引用类型是一个对象类型,它的值是指向内存空间的引用,即地址,所指向...引用类型只给变量分配了引用空间,数据空间没有分配,因为不知道数据是什么。 举一个错误的例子: MyDate today; today.day=4; //错误,...

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

    基本类型举例说明:

    int a;

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

    引用类型只给变量分配了引用空间,数据空间没有分配,因为不知道数据是什么。

    举一个错误的例子:

    MyDate today;

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

    引用类型变量在声明后必须通过实例化开辟数据空间,才能对变量所指向的对象进行访问。例如:

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

    today =new MyDate(); //这句话是2步,首先执行new MyDate()

    today.day=4;     //给today变量开辟数据空间,然后再执行赋值操作

    而引用变量的赋值,例如:

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

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

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

     

    展开全文
  • Java的变量分为两大类:基本数据类型和引用数据类型。 其中基本类型变量有四类8种:byte short int long float double char boolean,除了8种基本数据类型变量,其他变量都是引用数据类型,如类、接口、...引用类型变量
  • c++ 源码中&&变量什么意思呢?

    千次阅读 2018-11-10 19:47:49
    很多刚学习的c++的朋友 可能都对这个&amp;&amp;的含义有点疑惑 这里的&amp;&amp;不是逻辑符号 而是二级指针 可以理解为引用引用
  • 不是接口变量,而是一个接口类型引用指向了一个实现给接口的对象,这是java中的一种多态现象 ,java中的接口不能被实例化,但是可以通过接口引用指向一个对象,这样通过接口来调用方法可以屏蔽掉具体的方法的实现...
  •  当代码执行到标记2的时候,array2处于栈空间中,array2也引用了new出来的数组的内存地址,即array1和array2均引用了new出来的数组的内存地址,至此出现了多个数组类型变量引用”同一个数组对象。  当代码...
  • Java对象和引用变量

    万次阅读 多人点赞 2016-08-31 00:45:30
    对于引用变量的深层含义,未必在初学的时候就能深刻理解, 所以理解好下面这两句话的真正含义非常重要Case cc=new Case();... 基本类型变量和对象的引用变量 存取速度比堆要快,仅次于寄存器,栈
  • 在java多态性中这样一句话: 实际调用的方法版本取决于对象的类型而不是引用变量类型。 此话什么意思?能否举个简单例子 public class Polymorphism { public static void main(String[] args) { //既然是多态,...
  • 对于刚接触不久面向对象的真小白童鞋来说,类的对象,对象的实例,对象的引用引用变量的问题以及莫过于没得对象虽然博主也没得对象,本文将逐个逐个讲解! 1.何谓对象? 在Java中有一句比较流行的话,叫做“万物皆...
  • 今天研究出了一个小问题,在C语言里引用汇编的变量,会是什么结果,汇编中的变量没有像C语言中int类型那样的类型约束,可以把数据当作任何类型处理,那么传到C语言中我们应该当作什么类型处理呢。 换句话说,在汇编...
  • 引用类型变量来说,对应内存所存储的值是一个引用,是对象的存储地址。 将一个变量赋值给另一个变量时,另一个变量就被赋了同样的值。对基本类型变量而言,就是将一个变量的实际值付给另一个变量。对引用类型变量...
  • Java对象与引用变量

    千次阅读 2019-08-19 14:59:26
    基本类型变量和对象的引用变量 存取速度比堆要快,仅次于寄存器,栈数据可以共享 存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。栈中主要存放一些基本类型变量 当超过变量的作用域后,Java会自动释放掉...
  • 常量引用变量引用的区别理解

    千次阅读 2014-09-08 21:38:33
    C++primer提到,引用就是对象的别名,换言之,
  • Yapi变量引用

    千次阅读 2019-06-27 09:34:43
    最近开始公司使用Yapi,记录一下这个接口文档管理工具集接口自动化一体的工具常用变量使用语法。 请求参数里获取其他接口的响应值 适用场景:请求参数的值要动态获取前面的接口返回的响应值时; 格式为:{{ $.测试...
  • 使用final关键字修饰一个变量时,是指引用变量不能变,引用变量所指向的对象中的内容还是可以改变的。
  • c#中提供的数据类型有两类,值类型和引用类型。 概念上,值类型,直接存储其值;引用类型,存储对其值的引用。 内存空间上,值类型在栈中操作;引用类型在堆中分配存储单元。 其中对于栈和堆的理解参考知乎。 ...
  • --引用变量 --打开oracle的输出口 --set serveroutput on declare --定义引用变量,查询并打印1232的姓名和薪水 --pename varchar2(20);--这2句和下面的2句效果一致 --psal number; pename emp.ename%type...
  • Java中引用变量与对象

    千次阅读 2017-05-16 16:41:32
    Java中的引用变量相当于C语言中的指针,它的作用是指向某个对象....t 是 一个引用变量,指向了一个Child类型的对象.内存中,你首先声明了一个Child类型引用变量,然后你创建了一个Child对象,并 把这个对象
  • JAVA 入坑教程 | 章节三 变量类型

    千次阅读 2017-02-17 11:11:33
    引用类型变量的名字是复杂数据的存储地点。Java语言支持的变量类型有三大类: 局部变量 成员变量 类变量(静态变量)类变量也称为静态变量,在类中以static关键字声明,但必须在方法构造方法和语句块之外。 无论一个...
  • 怎么理解变量变量什么

    千次阅读 2017-09-30 14:17:36
    任何一门高级语言在讲解语法的时候必会讲...或者说变量什么呢? 我们可以这样理解:计算机的程序的运行的实质就是一系列的运算。我们可以简单的把这种运算理解成+ - * / 四则运算(描述不准确,但是我们可以这样理
  • c语言中变量引用传递和指针

    万次阅读 多人点赞 2017-08-02 19:25:15
    掌握了引用变量和指针,才能深入掌握面向过程的函数调用机制。 引用变量存储的是变量的地址,指针存储的也是变量的地址,所以本质上来说二者是一样的。 使用引用变量,子函数中所有的操作会直接修改主函数中的...
  • java中final修饰的变量引用不可变,还是对象不可变... 答案是引用不可变,引用的对象还是可以改变的。 在这里我要强调一下,不知道有没有小白和我一样,以为string之所以是一个不可变的字符串常量,是因为string是...
  • C++ 引用 什么是引用

    千次阅读 多人点赞 2019-04-15 02:00:36
    先举几个栗子:“及时雨”宋江、“卧龙”诸葛亮...概念:引用是为已存在的变量取了一个别名,引用引用变量共用同一块内存空间 格式:类型& 引用变量名(对象名) = 引用实体; int& ra = a; ra为a的引用 ...
  • Java内部类不能引用本地变量

    万次阅读 2015-10-18 23:26:59
    Java新手可能会经常碰到提示 “Variable is accessed from... 意思就是,在内部类中不能引用本地变量,需要声明为常量。 于是上网查阅,发现了两篇有意思的文章。 第一篇 http://blog.csdn.net/woshichunchun/ar
  • java中的引用类型概念

    千次阅读 2016-07-15 14:07:45
    1、什么是引用类型引用类型(reference type)指向一个对象,不是原始值,指向对象的变量是引用变量。在java里面除去基本数据类型的其它类型都是引用数据类型,自己定义的class类都是引用类型,可以像基本类型一样...
  • 这篇写得很好,以下内容也都取自于这篇大佬的博客 ... 1.首先,说一下什么变量变量就是计算机内存中的一小块内存单元,储存在这一小块内存单元中的值叫做变量...而当一个变量指向一个对象时,这个变量就叫做引用...
  • 谈谈JavaScript中的变量、指针和引用

    千次阅读 2018-03-09 16:39:24
    我们可能产生这样一个疑问:编程语言中的变量到底是什么意思呢? 事实上,当我们定义了一个变量a时,就是在存储器中指定了一组存储单元,并将这组存储单元命名为a。变量a的值实际上描述的是这组存储单元中存放的...
  • 主数据类型有int,long,byte,float,boolean等8种,java虚拟机会给每个主数据类型分配存储空间,每个有独立存储空间,不能共享。  int c = 10;   int d = c;   c++;   d--;   System.out.printf("c=%d, d...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 190,026
精华内容 76,010
关键字:

引用类型变量是什么意思