java数据类型概述

跟php、javaScript等弱类型语言相比,java是一种强类型(strongly typed)编程语言,
体现在下面2点:

  • 变量必须先申明、后使用
  • 指定类型的变量只能接受与之匹配的值

 

java数据类型

java负数立方根 java负数是什么类型_数据

 下面主要对基本数据类型做一个解释:

 

 整数类型

 1 字节(byte) = 8 位(bit),在计算机中,正数用原码表示,负数用补码表示,因此4种整数类型表数范如下(详细见《【转】负数在计算机中的表示 》):

java负数立方根 java负数是什么类型_数据_02

 

note:

整数默认是int类型,如果要转为Long,需要加上L或者l。

 

浮点类型

同样的,浮点数表数范围如下:

java负数立方根 java负数是什么类型_数据类型_03

 

note:

1.浮点数默认是double,如果要定义为float,需要加上F或者f。

2.浮点数有十进制和科学计数法2种表现形式。

 

字符类型

char型(字符型)数据在内存中占用2个字节。char型数据用来表示通常意义上的字符,每个字符占2个字节,Java字符采用16位的Unicode编码,它的前128字节编码与ASCII兼容字符的存储范围在\u0000~\uFFFF(65,535,即2的16次方-1),在定义字符型的数据时候要注意加' ',比如 '1'表示字符'1'而不是数值1。

char c = '1';
        System.out.println(c);
        char d = '\u0031';
        System.out.println(d); //c、d输出的值是一样的

 

note:

1.char是用单引号,字符串用双引号。

2.这块要复习下askii码、unicode等编码相关知识。

 

布尔型

数据值只有true或false,适用于逻辑计算。

note:

boolen本来只需要1个bit位就可以表示,但是目前占用的是1个字节(8个bit),这是因为大部分计算机分配内存的最小单元是1字节。

 

 

数据类型转换

java提供的7种数值类型直接可以相互转换。

 

自动类型转换

小转大,相当于把小瓶里的水倒入大瓶,不会有任何问题。

 

java负数立方根 java负数是什么类型_java负数立方根_04

 

强制类型转换

大转小,转换的格式是:(targetType)value。
如果大瓶子里的水很多,将会引起溢出,从而造成数据丢失,因此这种转换也被称为“缩小转换(narrow conversion)”。

 

引用数据类型

基本数据类型在栈中直接分配内容;引用数据类型的数据在栈中,对象的引用在堆中。

JVM的内存空间:
 a. Heap 堆空间:分配对象 

 b. Stack 栈空间:临时变量 



 c.Code 代码区 :类的定义,静态资源 

Student stu = new Student(); //new 在内存的堆空间创建对象
stu.study(); //把对象的地址赋给stu引用变量

 

上例实现步骤:
 a.JVM加载Student.class 到Code区

 b.new Student()在堆空间分配空间并创建一个Student实例

  c.将此实例的地址赋值给引用stu, 栈空间。



自动装箱拆箱

在java数据类型的基础上,要理解装箱拆箱机制。

装箱:把基本类型用它们相应的引用类型包装起来,使其具有对象的性质。int包装成Integer、float包装成Float

拆箱:和装箱相反,将引用类型的对象简化成值类型的数据

Integer a = 100; //这是自动装箱  (编译器调用的是static Integer valueOf(int i))
int     b = new Integer(100); //这是自动拆箱