Java八大基本类型
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Java⼋⼤基本类型
Java数据类型基本概念:
数据类型在计算机语⾔⾥⾯,是对内存位置的⼀个抽象表达⽅式,可以理解为针对内存的⼀种抽象的表达⽅式。
接触每种语⾔的时候,都会存在数据类型的认识,有复杂的、简单的,各种数据类型都需要在学习初期去了解,Java是强类型语⾔,所以Java对于数据类型的规范会相对严格。
数据类型是语⾔的抽象原⼦概念,可以说是语⾔中最基本的单元定义,在Java⾥⾯,本质上讲将数据类型分为两种:基本类型和引⽤数据类型。
基本类型:简单数据类型是不能简化的、内置的数据类型、由编程语⾔本⾝定义,它表⽰了真实的数字、字符和整数。
引⽤数据类型:Java语⾔本⾝不⽀持C++中的结构(struct)或联合(union)数据类型,它的复合数据类型⼀般都是通过类或接⼝进⾏构造,类提供了捆绑数据和⽅法的⽅式,同时可以针对程序外部进⾏信息隐藏。
基本数据类型:
类型描述
byte:Java中最⼩的数据类型,在内存中占8位(bit),即1个字节,取值范围-128~127,默认值0
short:短整型,在内存中占16位,即2个字节,取值范围-32768~32717,默认值0
int:整型,⽤于存储整数,在内在中占32位,即4个字节,取值范围-2147483648~2147483647,默认值0
long:长整型,在内存中占64位,即8个字节-263~263-1,默认值0L
float:浮点型,在内存中占32位,即4个字节,⽤于存储带⼩数点的数字(与double的区别在于float类型有效⼩数点只有6~7位),默认值0
double:双精度浮点型,⽤于存储带有⼩数点的数字,在内存中占64位,即8个字节,默认值0
char:字符型,⽤于存储单个字符,占16位,即2个字节,取值范围0~65535,默认值为空
boolean:布尔类型,占1个字节,⽤于判断真或假(仅有两个值,即true、false),默认值false
Java中的数据类型与内存的关系
在Java中,每个存放数据的变量都是有类型的,如:
char ch; float x; int a,b,c;
ch是字符型的,就会分配到2个字节内存。
不同类型的变量在内存中分配的字节数不同,同时存储⽅式也是不同的。
所以给变量赋值前需要先确定变量的类型,确定了变量的类型,即确定了数据需分配内存空间的⼤⼩,数据在内存的存储⽅式。
Java数据类型在内存中的存储:
1)基本数据类型的存储原理:所有的简单数据类型不存在“引⽤”的概念,基本数据类型都是直接存储在内存中的内存栈上的,数据本⾝的值就是存储在栈空间⾥⾯,⽽Java语⾔⾥⾯⼋种数据类型是这种存储模型;
2)引⽤类型的存储原理:引⽤类型继承于Object类(也是引⽤类型)都是按照Java⾥⾯存储对象的内存模型来进⾏数据存储的,使⽤Java内存堆和内存栈来进⾏这种类型的数据存储,简单地讲,“引⽤”是存储在有序的内存栈上的,⽽对象本⾝的值存储在内存堆上的;
区别:基本数据类型和引⽤类型的区别主要在于基本数据类型是分配在栈上的,⽽引⽤类型是分配在堆上的(需要java中的栈、堆概念),
基本类型和引⽤类型的内存模型本质上是不⼀样的。
例1:我们分析⼀下”==“和equals()的区别。
⾸先,我定以两个String对象
Stringa="abc";
Stringb="abc";
然后
if(a==b){
System.out.println("a==b");
}else{
System.out.println("a!=b");}
程序输出a!=b
原因:a和b的地址是不相同的,a==b⽐较的是两个变量的地址
例2:定义两个基本类型
int a=4;
int b=4;
if(a==b){System.out.println("a==b");}
else
{System.out.println("a!=b");}
输出:a==b
原因:==⽐较的是两个变量的内容
猜想:不论是基本数据类型还是引⽤类型,他们都会先在栈中分配⼀块内存,对于基本类型来说,这块区域包含的是基本类型的内容;⽽对于对象类型来说,这块区域包含的是指向真正内容的指针,真正的内容被⼿动的分配在堆上。
Java基本类型取值范围计算
从计算机组成原理的⾓度可以解释:
byte在计算机中是占8个字节的,⽽且byte 是有符号整形,⽤⼆进制表⽰时候最⾼位为符号位 0代表正数 1代表负数。
最⼤值:127 即2的7次⽅减去1;最⼩值:即2的7次前⾯加个负符号:-128 。
(包含开始,不包含结尾);
正数在计算机中是以原码形式存在的;
负数在计算机中是以其补码形式存在的,就是负数的绝对值的原码转为⼆进制再按位取反后加1。
下边这个10和-10为例来介绍的:10原码:00001010 它在计算机中的存储就是 0000 1010,-10 按照前⾯说的算除其绝对值为10,转为⼆进制 0000 1010 按位取反 1111 0101 再加1后:1111 0110,此为-10补码,好的,计算机中的1111 0110就是代表-10了。
我们来看 -128 绝对值128的⼆进制表⽰:1000 0000 按位取反 0111 1111 加1后:1000 0000,也就是说 -128在计算机中的表⽰就是 1000 0000 了,再来看⼀下-129 在计算机中的表⽰,绝对值129的范围已经超出了了byte的位数。
所以要注意这类问题;。