您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
免费发信息

详细比较Java中的基本类型变量和引用类型变量

2024/4/29 17:07:00发布5次查看
基本类型:
基本类型自然不用说了,它的值就是一个数字,一个字符或一个布尔值。
引用类型:
是一个对象类型,值是什么呢?它的值是指向内存空间的引用,就是地址,所指向的内存中保存着变量所表示的一个值或一组值。 
举例说明:   
 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的存储空间中
如下图示
引用传递 和 值传递
引用类型:除了在函数传值的时候是引用传递,在任何用=向对象变量赋值的时候都是引用传递。
值传递:基本类型的传递都属于值传递,和c语言一样,当把java的基本数据类型(如 int,char,double等)作为入口参数传给函数体的时候,传入的参数在函数体内部变成了局部变量,这个局部变量是输入参数的一个拷贝,所有的函 数体内部的操作都是针对这个拷贝的操作,函数执行结束后,这个局部变量也就完成了它的使命,它影响不到作为输入参数的变量。这种方式的参数传递被称为值 传递。
/*define a class*/class mydate{ string year; string month; string day; string date; public mydate(){ year = "1900"; month ="01"; day = "01"; date = year + "." + month + "."+ day; } public string tostring(){ return date; } }public class objref{ mydate mydate1 = new mydate(); mydate mydate2 = mydate1;// = 使 mydate1和 mydate2将指向同一内存空间 //mydate mydate2 = new mydate();//从新new一个对象,则mydate1和mydate2是指向不同的内存空间的: //引用空/间和数据空间都不一样 public void changeobj(mydate inobj){ inobj.date = "2007.09.26"; } public static void main(string[] args) { objref oref = new objref(); system.out.println("before call changeobj() method: " + oref.mydate1); oref.changeobj(oref.mydate1); system.out.println("after call changeobj() method: " + oref.mydate1); system.out.println("after call changeobj() method: " + oref.mydate2);//验证“= mydate1和 mydate2将指向同一内存空间“这一结论 } }
相关文章:
java四种引用类型的具体介绍
解析java中的引用类型的概念
javascript 基本数据类型和引用类型的区别详解
以上就是详细比较java中的基本类型变量和引用类型变量的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录