黑马程序员技术交流社区
标题:
求大神告知引用类型和基本类型的区别,谢谢了
[打印本页]
作者:
643997890
时间:
2015-9-10 01:39
标题:
求大神告知引用类型和基本类型的区别,谢谢了
作者:
宋美涛
时间:
2015-9-10 01:39
基本类型:
基本类型自然不用说了,它的值就是一个数字,一个字符或一个布尔值。
引用类型:
是一个对象类型,值是什么呢?它的值是指向内存空间的引用,就是地址,所指向的内存中保存着变量所表示的一个值或一组值。
作者:
水果牛牛
时间:
2015-9-10 11:05
java的8种基本类型:
byte,short, char, int, long,float,double,boolean.
与此对应的,java提供了8种包装类型:
Byte,Short,Character,Integer,Long,Float,Double,Boolean.
它们之间的相互转换:例如:
double a=1;
//把double基本类型转换为Double包装类型
Double b=new Double(a);
//把Double包装类型转换为double基本类型
a=b.doubleValue();
所谓引用,就是指针了,就是说对象指向的不是数据本身,而是它所在的内存地址.
数组就是引用类型!
一般在传参的时候用的最多。
作者:
枕草虫
时间:
2015-9-10 14:20
byte、short、 char、 int、 long、 float、 double、 boolean 都是基本数据类型
其他全部都是引用数据类型
我的理解就是 基本数据类型的值会在栈内存中存在,
而引用数据类型的值在堆内存当中存在,在栈中存在的只是它们的地址引用
比如:String s = "abc"; 它的值不在栈内存中存在,可能在字符串常量池中,然后s拿到的只是它在常量池中的地址值
有可能有错,仅供参考
作者:
Java_EE
时间:
2015-9-10 14:59
java中的基本数据类型有8种:整型(字节型byte、短整型short、整型int、长整型long),小数类型(单精度float和双精度double),布尔类型(true或false);引用数据类型主要有三种:数组、类和接口。
作者:
严旭晟
时间:
2015-9-10 21:21
基本类型 vs 引用类型
这个主题可以涉及很多方面的知识,现在讲太多弊大于利,因此我只从几个点作为切入来讲:
1.设计
设想一下,Java作为一种面向对象的编程语言,为什么还需要基本类型这种对象化的类型?
首先,来分析一下,在Java中是如何定义对象的?
class Obj
{
//字段
int n = 12; //基本类型 变量
String name = "Obj"; //引用类型 变量
//方法
public void show()
{
System.out.println(this.name+": "+n);
}
}
Obj o = new Obj(); //引用类型 变量
o.show();
复制代码
以上,我们通过代码制定了对象生成的规范或类型---class Obj,当我们要生成Obj的对象时,我们就要按照这种规范的模子
来分配和赋值。注意到:
1.模子中的字段中既有引用变量,又有基本变量;
2.引用类型变量 和 基本类型变量存储内容不同
例如: n 中存储 字面值12本身;而 name存储字符串字面值在字符串常量池中的引用(地址)
结论一:设计目的
1.基本类型主要是从C语言过度到面向对象编程语言中的保留类型(内置类型),设计用来存储各种字面值本身,主要目的是用来
作为类的基本构件,以表达类的属性特性。
2.引用类型用来封装基本类型变量,是类的组合型构件,也是面向对象各种特点的主要承载体。
3.为了完善Java的完全面向对象,Java提供了对基本类型的各种封装类。
----比如:我们不能说,n具有面向对象的封装性,但是name变量却具有封装性;如toString()方法
可以说,没有引用型变量,根本无法面向对象。
如 int Integer
3.引用对象主要针对引用,因为对象体存储在堆空间,一般所占据的内存比基本类型变量中字面值所占空间大的多,操作对象无法
像操作字面值那样方便。因此,针对对象的操作(OOP中的大部分工作)不同于传统的针对基本类型变量的操作,也就引入了操作引用变量的折中方案。由于引用变量中存储的是对象实体的引用,操作变量实际上能沿着引用影响对象的实体。
结论二:内存分配
1.基本类型变量用于存储字面值,所占内存小。加上,操作基本类型变量比较频繁,为此存放在栈中。它的生成或消亡都比较高效。
2.引用类型变量也分配在栈中,但是它所存储的引用所指向的对象实体是在堆中或常量池中。
结论三:定义方式
1.左值右值结构: 对于基本类型其最完整的定义:基本类型 变量名 = 字面值(值表达式),其中=左边为左值结构,右边为右值结构
2.左右值结构结合new结构:
对于引用类型变量,既可以采用左右值结构:如 引用类型 变量名 = 引用变量(返回引用的表达式)
也可以采用new结构: 如 Obj o = new Obj();其中new结构部分将返回某类型的引用。
今天就讲这些...
作者:
严旭晟
时间:
2015-9-10 21:22
为什么还需要基本类型这种非对象化的类型?
作者:
maxwell247
时间:
2015-9-21 11:02
楼上已经讲得很详细了。
基本数据类型 primitive 就那8种。
引用数据类型 reference 可以理解为指针,指向 可垃圾回收的heap中。注意,引用是指向对象,不是对象本身。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2