深入Java数据类型

Java的数据类型分为两大类,一类是基本数据类型,还有一类就是引用数据类型。

1、基本数据类型

Java一共有8种基本数据类型,分别是byte,short,int,long,float,double,boolean和char。它们存储的都是数据量比较小的数据,只需要一个或几个字节。下图是基本类型的大小及范围:

基本数据类型在被创建时,在栈上给其划分一块内存,将数值直接存储在栈上。例如:基本数据类型的定义是通过诸如int a = 3; long b = 255L;的形式来定义的,称为自动变量。值得注意的是,自动变量存的是字面值,不是类的实例,即不是类的引用,这里并没有类的存在。如int a = 3; 这里的a是一个指向int类型的引用,指向3这个字面值。这些字面值的数据,由于大小可知,生存期可知(这些字面值固定定义在某个程序块里面,程序块退出后,字段值就消失了),出于追求速度的原因,就存在于栈中。

  另外,栈有一个很重要的特殊性,就是存在栈中的数据可以共享。假设我们同时定义:              int a = 3;              int b = 3;  编译器先处理int a = 3;首先它会在栈中创建一个变量为a的引用,然后查找有没有字面值为3的地址,没找到,就开辟一个存放3这个字面值的地址,然后将a指向3的地址。接着处理int b = 3;在创建完b的引用变量后,由于在栈中已经有3这个字面值,便将b直接指向3的地址。  这样,就出现了a与b同时均指向3的情况。特别注意的是,这种字面值的引用与类对象的引用不同。  假定两个类对象的引用同时指向一个对象,如果一个对象引用变量修改了这个对象的内部状态,那么另一个对象引用变量也即刻反映出这个变化。  相反,通过字面值的引用来修改其值,不会导致另一个指向此字面值的引用的值也跟着改变的情况。 如上例,我们定义完a与b的值后,再令a=4;那么,b不会等于4,还是等于3。在编译器内部,遇到a=4;时,它就会重新搜索栈中是否有4的字面值,如果没有,重新开辟地址存放4的值;如果已经有了,则直接将a指向这个地址。因此a值的改变不会影响到b的值。 

2、引用数据类型

引用数据类型是除开基本数据类型以外的数据类型,它主要是用来指向某个对象,有点像C/C++里面的指针。对象保存的数据一般都比较大,如果在传参数或赋值的时候,每次都把数据完全拷贝一次很影响效率。因此,Java就为所有操作对象的类型定义了一种引用类型的数据。对象一般是通过new语句创建出来的,它保存在堆空间中,可以被多个引用类型变量引用。当某个引用修改了对象的数据后,其他的引用也是可以看到这些改变的。

引用数据类型在被创建时,首先要在栈上给其引用(句柄)分配一块内存,而对象的具体信息都存储在堆内存上,然后由栈上面的引用指向堆中对象的地址。 例如,有一个类Person,有属性name,age,带有参的构造方法, Person p = new Person("Tom",20); 在内存中的具体创建过程是: 1.首先在栈内存中位其p分配一块空间; 2.在堆内存中为Person对象分配一块空间,并为其各个属性设初值;

3.根据类Person中对属性的定义,为该对象的两个属性进行赋值操作;

4.调用构造方法,为两个属性赋值为"Tom",20;(注意这个时候p与Person对象之间还没有建立联系); 5.将Person对象在堆内存中的地址,赋值给栈中的p;通过句柄p可以找到堆中对象的具体信息。

时间: 2024-10-26 03:53:35

深入Java数据类型的相关文章

Java数据类型

一.Java数据类型 1.基本数据类型 2.引用数据类型 二.基本数据类型   1.整数类型:bytr,short,int,long   2.浮点数据类型:float,double   3.字符类型:char   4.布尔类型:bollean 类型名称         字节空间             类型说明    byte          1字节(8位)       存储1个字节数据    short         2字节(16位)      兼容性考虑,一般不用    int     

Java数据类型简单总结

Java数据类型简单总结 一:Java数据类型总的分为两大类:基本数据类型和引用数据类型. 基本数据类型:byte.short.int.long.float.double.char.boolean八种. 引用数据类型: 1:除了基本数据类型之外都是引用数据类型, 2:API类:String.File 3:自定义类:Test01...... 4:数组:int [ ].String [ ] 二:基本数据类型 1:分类 数据类型 位(bit) 取值范围 数据类型 位 取值范围 byte 8 -128~

java 数据类型

java 是一种强类型编程语言,说明java 程序中用到的所有变量都必须是有明确定义的数据类型. java 数据类型可以分为基本数据类型 和 引用数据类型. 基本数据类型: 数值类型 :整数类型 (byte.short.int.long) .浮点类型 (float.double) 字符类型 :char 布尔类型 :boolean 引用数据类型: 类(class) .数组 .接口(interface) 基本数据类型 和 引用数据类型的差别在于 :基本类型的变量和对象句柄存储在栈内存中,占用大小固定

Java数据类型(二)、Java运算符、流程控制

一.程序写作(创建对象的初始化过程) 1.目的/结果:输出一段话"..." 2.步骤: (1)创建一个基础类,main: (2)创建一块内存空间,用来存储这段话 ①先定义属性,name,sex,age等: ②再定义方法,需要重新创建新的class类,但不需要新的ma方法: (3)调用系统方法/库方法println,实现输出结果 ①在原有的类中创建新对象,将新的class类中的方法调用过来: ②运行,输出所有的内容. //---------------------------------

Java数据类型(一)

Java数据类型分为两大类:基本数据类型和引用数据类型. 一.基本数据类型: 数据类型      位数      取值范围 byte        8      -128~127 short       16     -32768~32767 Int         32     -231 ~231-1 Long       64      -263 ~263-1 Float       32      / Double     64      / Char       16     '\u00

JAVA数据类型,变量,转换,常量,运算符

java数据类型: Java基本类型共有八种,基本类型可以分为三类: 1.字符类型char,用单引号赋值 2.布尔类型boolean 3.数值类型byte.short.int.long.float.double.数值类型又可以分为整数类型byte.short.int.long和浮点数类型float(直接赋值时必须在数字后加上f或F).double(赋值时可以加d或D也可以不加). java变量: 数据类型 变量名[=值][,变量名[=值]];int a;int b = 1;int c,d;int

Java数据类型总结

Java数据类型总结 java语言提供了八种基本类型.六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型. 1.整数:包括int,short,byte,long 2.浮点型:float,double 3.字符:char 4.布尔:boolean 基本型别 大小 最小值 最大值 boolean ----- ----- ------ char 16-bit Unicode 0 Unicode 2^16-1 byte 8-bit -128 +127 short 16-bit -2^1

oracle number对应java数据类型BigDecimal

 最近做数据库查询的时候遇到一个问题,数据库中为number类型的字段,在java类型中对应的有Integer和BigDecimal都会出现: 经测试发现当数据库为sql server和DB2时,用getObject()取出来时Integer类型,但是oracle 中取出来就会是Integer或者BigDecimal类型.原因是oracle与java类型对应于number长度有关,下面引用百度文库@skycity521的文库截图 遇到该类型问题,若要判断每个数据库和数据库字段长度不同对应的jav

java数据类型的种类以及存放的位置

java 数据类型分为基础数据类型.引用数据类型两大类. 其中基础数据类型包括8种:byte.short.int.long.float.double.char.boolean 引用数据类型包括3种:对象(class).接口(interface).array(数组) 图解: java数据类型图: ┏数值型━┳━整数型:byte short int long ┏基本数据类型━━┫ ┗━浮点型:float double ┃ ┣字符型:char 数据类型╋ ┗布尔型:boolean ┃ ┏类(class

Java数据类型的转换

Java数据类型的转换,基本类型的相互转换 1如何将字串 String 转换成整数 int? A. 有2个方法: 1). int i = Integer.parseInt([String]); 或 i = Integer.parseInt([String],[int radix]); 2). int i = Integer.valueOf(my_str).intValue(); 注: 字串转成 Double, Float, Long 的方法大同小异. 2 如何将整数 int 转换成字串 Stri