Java数据类型分为基本数据类型与引用数据类型。
html
byte:Java中最小的数据类型,在内存中占1个字节(8 bit),取值范围-128~127,默认值0web
short:短整型,2个字节(16 bit),取值范围-32768~32717,默认值0数组
int:整型,用于存储整数,在内存中占4个字节,取值范围-2147483648~2147483647,默认值0svg
long:长整型,在内存中占8个字节-263~263-1,默认值0L.net
float:浮点型,在内存中占4个字节,用于存储带小数点的数字(与double的区别在于float类型有效小数点只有6~7位),默认值0指针
double:双精度浮点型,用于存储带有小数点的数字,在内存中占8个字节,默认值0xml
char:字符型,用于存储单个字符,内存中占2个字节,取值范围0~65535,默认值为空htm
boolean:布尔类型,占1个字节,用于判断真或假(仅有两个值,即true、false),默认值false对象
Java语言自己不支持C++中的结构(struct)或联合(union)数据类型,它的复合数据类型通常都是经过类或接口进行构造,类提供了捆绑数据和方法的方式,同时能够针对程序外部进行信息隐藏。引用类型分3种(5种):类,接口,数组(枚举,注解);blog
类(Class):全部的类,不管是Java自身已经存在的,仍是用户后来建立的;
Objec类: 它是全部类的父类,每一个类都实现这个类的方法;用Object 能够定义全部的类;
String类: String类表明字符串,
接口(interface): 系统自带或者用户建立的
数组(array): 系统自带或者用户建立的
#基本数据类型和引用类型的区别主要在于基本数据类型是分配在栈上的,而引用类型是分配在堆上的
# #不管是基本数据类型仍是引用类型,他们都会先在栈中分配一块内存,对于基本类型来讲,这块区域包含的是基本类型的内容;而对于引用类型来讲,这块区域包含的是指向真正内容的指针,真正的内容被手动的分配在堆上。
(1) String str1 = “abcd"的实现过程:首先栈区建立str1引用,而后在String池(常量池:独立于栈和堆而存在,存储不可变量)中寻找其指向的内容为"abcd"的对象,若是String池中没有,则建立一个,而后str指向String池中的对象,若是有,则直接将str1指向"abcd”;
(2) String str3 = new String(“abcd”)的实现过程:直接在堆中建立对象。若是后来又有String str4 = new String(“abcd”),str4不会指向以前的对象,而是从新建立一个对象并指向它,因此若是是执行str3==str4 则返回值是false,由于两个对象的地址不同,若是是执行str3.equals(str4),返回true,由于内容相同。
本文参kao其余文章,原文在:https://www.cnblogs.com/Latiny/p/8099581.html