#Java基础类型及其封装类#2019.3.19

基于变量的数据类型,操作系统会进行内存分配并且决定什么将被储存在保留内存中。因此,通过给变量分配不同的数据类型,你可以在这些变量中存储整数,小数或者字字母。

Java 中有两种有效地数据类型:

  • 基本数据类型(8种)
  • 引用数据类型(类、数组、接口)

基本数据类型(Primitive)

Java 支持 8 种基本数据类型。原始数据类型是由该语言预先定义的并用关键词命名的。下面让我们深入学习一下这 8 种数据类型。

https://my.oschina.net/Bruce370/blog/511431#OSC_h3_2

字节型(byte)

  • 字节型是一种 8 位有正负的二进制整数
  • 最小值是 -128(-2^7)
  • 最大值是 127(2^7-1)
  • 默认值为 0
  • 字节型数据类型主要是为了在大型数组内节省空间,主要是替代整数由于字节型比整数小 4 倍。
  • 例如:byte a = 100 , byte b = -50
  • 包装类:java.lang.Byte((byte)128==>-128)

短整数(short)

  • 短整数是一种 16 位有正负的二进制整数
  • 最小值是 -32768(-2^15)
  • 最大值是 32767(2^15-1)
  • 短整数类型的数据也可以像字节型一样用于节省空间。短整数比整数小两倍
  • 默认值为 0
  • 例如:short s = 10000, short r = -20000
  • 包装类:java.lang.Short

整数型(int)

  • 整数型是一种 32 位有正负的二进制整数
  • 最小值是 - 2,147,483,648(-2^31)
  • 最大值是 2,147,483,647(2^31 -1)
  • 整数型一般默认被应用于整数值除非担心内存不够用。
  • 默认值为 0
  • 例如:int a = 100000, int b = -200000
  • 包装类:java.lang.Integer

长整型(long)

  • 长整型是一种 64 位有正负的二进制整数
  • 最小值是 -9,223,372,036,854,775,808(-2^63)
  • 最大值是 9,223,372,036,854,775,807 (2^63 -1)
  • 这种数据类型一般是在需要比整数型范围更大时应用。
  • 默认值为 0L
  • 例如:long a = 100000L, int b = -200000L
  • 包装类:java.lang.Long

浮点型(float)

  • 浮点型数据是一种单精度的 32 位 IEEE 754 标准下的浮点数据。
  • 浮点型数据主要是为了在大型浮点数字数组中节约内存。
  • 默认值是 0.0f。
  • 浮点型数据不能用于如货币这样的精确数据。
  • 例如:float f1 = 234.5f
  • 包装类:java.lang.Float

双精度型(double)

  • 双精度型数据是一种双精度的 64 位 IEEE 754 标准下的浮点数据。
  • 这种数据类型主要是默认被用于表示小数的值,一般是默认的选择。
  • 双精度型数据不能用于如货币这样的精确数据。
  • 默认值是 0.0d
  • 例如:double d1 = 123.4
  • 包装类:java.lang.Double

布尔型(boolean)

  • 布尔型数据代表一个信息比特。
  • 它只有两个可能的值:真(true)和假(false)
  • 这种数据类型用于真假条件下的简单标记。
  • 默认值是假(false)
  • 例如:boolean one = true
  • 包装类:java.lang.Boolean

字符型(char)

  • 字符型数据是简单的 16 位 Unicode 标准下的字符。
  • 最小值是: ‘\u0000’ (或 0)。
  • 最大值是: ‘\uffff’ (或 65,535 )。
  • 字符型数据可以用来储存任意字母。
  • 例如: char letter A(字符型的字母A) =‘A’
  • 包装类:java.lang.Character

引用数据类型

  • 引用数据类型是由类的编辑器定义的。他们是用于访问对象的。这些变量被定义为不可更改的特定类型。例如:Employee等。

  • 类对象和数组变量就是这种引用数据类型。

  • 任何引用数据类型的默认值都为空。

  • 一个引用数据类型可以被用于任何声明类型和兼容类型的对象。

  • 例如:Animal animal = new Animal(“dog”);

  • 实际上,JAVA中还存在另外一种基本类型void,它也有对应的包装类 java.lang.Void,不过我们无法直接对它们进行操作。

  • 基本类型存储在栈中,因此它们的存取速度要快于存储在堆中的对应包装类的实例对象。从Java5(1.5)开始,JVM可以完成基本类型和它们对应包装类之间的自动转换(装箱与拆箱)。因此我们在赋值、参数传递以及数学运算的时候像使用基本类型一样使用它们的包装类,但这并不意味着你可以通过基本类型调用它们的包装类才具有的方法。

  • 另外,所有基本类型(包括void)的包装类都使用了final修饰,因此我们无法继承它们扩展新的类,也无法重写(Override)它们的任何方法。

https://blog.csdn.net/oLaoHuBuChiRen1/article/details/51079738

封装类(Warpper)


原始类型 封装类
boolean<——>Boolean
char<——>Character
byte<——>Byte
short<——>Short
int<——>Integer
long<——>Long
float<——>Float
double<——>Double

引用类型和原始类型的行为完全不同,并且它们具有不同的语义。
引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。
对象引用实例变量的缺省值为null,而原始类型实例变量的缺省值与它们的类型有关(int为0)。
Java把内存划分成两种:一种是栈内存(一般存储地址),另一种是堆内存 (一般存储实例数据)

​ 在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配。而实际的对象是在存储堆内存中。

  • int i = 11; //直接在栈中分配空间

  • Integer i = new Integr(11); //实际对象是在堆内存中,而i(引用)是在栈内存中
    在堆中分配的内存,由java虚拟机的自动垃圾回收器来管理。
    因为在堆中分配空间所需的时间远大于从栈中分配存储空间,Java运行效率不够高。

    浅谈JVM垃圾回收机制


    待续…

你可能感兴趣的:(Java,SE)