基本类型:

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

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运行时数据区的堆中。
引用放在栈中,具体的对象放在堆里

再谈java两种变量(基本类型和引用类型)(综合各路大神)的更多相关文章

  1. 浅谈Java两种并发类型——计算密集型与IO密集型

    转载:https://blog.csdn.net/u013070853/article/details/49304099 核心是可以分别独立运行程序指令的计算单元.线程是操作系统能够进行运算调度的最小 ...

  2. java形式参数分别是基本类型和引用类型的调用

    什么是形式参数,基本类型,引用类型? 形式参数(形参)百度百科里的解释是:在定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传入的参数. 通俗的说就是:形式参数是指在函数名后面的小括号里 ...

  3. excel让每个单元格的宽度随着字体自动变动的两种方式(有更好方法的大神,请忽略,求评论下)

    1.打开在EXCEL的工作表,点击工作表左上方的方框,选中整个工作表,将鼠标一致A列的右边线处,也就是A列和B列中间的分界线处,光标会变成十字,鼠标左键双击,列宽会调整到最恰当处.截图如下

  4. JS基本类型和引用类型的值

    JS中可以把变量分成两部分,基本类型和引用类型. 基本类型比较简单,包括:Undefined.Null.Boolean.Number和String,基本类型值就是简单的数据段:引用类型值可能由多个值构 ...

  5. 沉淀再出发:再谈java的多线程机制

    沉淀再出发:再谈java的多线程机制 一.前言 自从我们学习了操作系统之后,对于其中的线程和进程就有了非常深刻的理解,但是,我们可能在C,C++语言之中尝试过这些机制,并且做过相应的实验,但是对于ja ...

  6. Java Native Interface 二 JNI中对Java基本类型和引用类型的处理

    本文是<The Java Native Interface Programmer's Guide and Specification>读书笔记 Java编程里会使用到两种类型:基本类型(如 ...

  7. java两种同步机制的实现 synchronized和reentrantlock

    java两种同步机制的实现 synchronized和reentrantlock 双11加保障过去一周,趁现在有空,写一点硬货,因为在进入阿里之后工作域的原因之前很多java知识点很少用,所以记录一下 ...

  8. Scala的两种变量

    Scala有两种变量,val和var.val类似于Java的final变量,一旦初始化了,就不能再赋值了.var如同Java中的非final变量,可以在生命周期内被多次赋值.

  9. javascript变量中基本类型和引用类型的详解解读

    前言: Javascript语言中的变量和其他语言的变量有很大区别,javascript松散类型的本质,决定了它只是在特定时间时间保存特定值得名字而已.由于不存在定义某个变量必须保存何种数据类型值的规 ...

随机推荐

  1. 【Python基础学习五】列表,元祖,字典

    1.列表(list) 列表是Python的一种内置数据类型,list是一种有序的集合,可以随时添加和删除其中的元素,就像动态数组一样.获取list中的元素用角标获取,角标可以使用正角标,也可以使用负角 ...

  2. 练习题(登陆-进度条-微信接口判断qq-微信接口判断列车时刻表-)

    1.写一个用户的登陆注册的界面,用户的密码用hashlib加密存在文件中,登陆时候,用户的密码要和文件中的密码一致才行 def sha(password): #加密函数 passwd = hashli ...

  3. what's cloud computing? IaaS

    Cloud computing has changed the ITC industry. Companies like Amazon, Google and Microsoft have built ...

  4. jython安装与配置

    安装jython 0. 计算机中要安装jdk 1. 在官网www.jython.org上找到下载页面,然后下载jython-installe 2. 在cmd.exe中运行java -jar jytho ...

  5. ecshop常用二次开发修改

    修改ecshop支付宝的支付按钮  http://www.68ecshop.com/article-1081.html 去掉ecshop收货人信息页面的电子邮件必填和电话.手机选填一个  http:/ ...

  6. Redis3.0 配置文件说明

    背景: 以前有篇文章已经结果过了,现在复习一下,对Redis3.0进行说明: 参数说明: #redis.conf # Redis configuration file example. # ./red ...

  7. 设置UITableView的separatorInset值为UIEdgeInsetsZero,分隔线不最左端显示的问题

    一.问题描述 UITableView分割线要显示到最左端 查看UITableView的属性,发现设置separatorInset的值可以自定义分割线的位置. @property (nonatomic) ...

  8. ssh设置

    方法一:在/etc/hosts.allow中添加允许ssh登陆的ip或者网段 sshd:192.168.1.2:allowsshd:192.168.1.0/24:allow在/etc/hosts.de ...

  9. 用Myeclipse,包名上有小红叉(表示错误),但是包中的类都是没有错误的+struts2继承ActionSupport时package前面出错

    使用Eclipse 进行项目开发,在实现类中的方法前面如果添加@Override就提示“Multiple markers at this line”的错误,问题描述如下 应该是JDK版本的问题, 右击 ...

  10. js未定义判断

    if (typeof(homeType) == 'undefined') { //..... //..... } typeof函数判断,如果未定义的就会返回undefined,注意undefined ...