Java数据类型

java的数据类型分为两类:

1.基本数据类型和引用类型

   基本数据类型分为:整型、浮点型,布尔型

   引用类型包括: 对象、接口、数组、null

基本数据类型保存的就是变量的值,而引用类型保存的是变量的地址。

比如:int[] a = new int[4]; 这时变量a的值是数组的地址保存在栈上,而具体的数组值保存在堆上 。所以java中没有指针的概念,对象的赋值都是传递的地址。

   

2.基本数据类型:

2.1 整型

整型有byte short int long char,分别用8、16、32、64、16bits表示。有些地方可能不会把char列入整型范畴,但本质上char类型是int的一个子集。整型的宽度不应该被看成整数所占用的内存空间大小,而应当理解成定义为整型的变量或者表达式的行为。JVM可以自由使用它们希望的、任何大小的内存空间,只要类型的行为符合规范。byte short int long都是有符号的,用2的补码(two‘s-complement)表示。而char用16位表示,它是无符号的,表示的是UTF-16编码集。

byte由1个字节8位表示。取值范围为:[-128, 127]. 

 short用16位表示,取值范围为:[- 2^15, 2^15 - 1]

int 32 bits, [- 2^31, 2^31 - 1].

long 64 bits, [- 2^63, 2^63 - 1,默认值为0L].

char 16 bits, [0, 65535], [0, 2^16 -1],从'u0000'到'uffff'。无符号,默认值为'u0000'。

public class 整型 {
   byte b;
   short s;
   int i;
   long l;
   char c;
   boolean bool;
   public static void main(String[] args){
     整型 a = new 整型();
     
     System.out.println("b = "+a.b);
     System.out.println("s = "+a.s);
     System.out.println("i = "+a.i);
     System.out.println("l = "+a.l);
     System.out.println("c = "+a.c);
     System.out.println("bool = "+a.bool);
   }
}

结果:

2.2浮点型

浮点型默认是double,5.12就是double类型

float 32 bit表示

double 64bit表示

float a = 10.2f/F

double d = 10.2(d/D)

默认值:0.0

** float num=3.14;//是错误的,3.14默认double类型。

 2.3 boolean

boolean类型只有两个值true和false,默认为false。

 3.基本数据类型之间的转换

首先将7种类型按下面顺序排列一下:

byte <(short=char)< int < long < float < double   (如果从小转换到大,可以自动完成,而从大到小,必须强制转换。short和char两种相同类型也必须强制转换。)

转换分为自动转换和强制转换。对于自动转换(隐式),无需任何操作,而强制类型转换需要显式转换,即使用转换操作符(type)。首先将7种类型按下面顺序排列一下:

4.表达式中的自动类型提升

除了赋值以外,表达式计算过程中也可能发生一些类型转换。在表达式中,类型提升规则如下:

》所有byte/short/char都被提升为int。

》如果有一个操作数为long,整个表达式提升为long。float和double情况也一样。

例如:

short value=5;

value = value-2;//value将自动升级到int类型,再赋值给value就会出错!value是short类型,需要强制转换。

原文地址:https://www.cnblogs.com/jycboy/p/5299113.html