当前位置:文档之家› Java 基本数据类型取值范围讲解

Java 基本数据类型取值范围讲解

Java 基本数据类型取值范围讲解一、Java的类型词语理解:1) 原始数据类型,简单类型,基本类型都是一个含义;2)复合类型,扩展类型,复杂类型、引用类型都是一个含义;3)浮点类型,实数、实型都是一个含义;4)逻辑型、布尔型都是一个含义;5)本人个人认同的类型分类:阅读时需要理解:定点:定点的意思是把小数点定在末尾,小数点后没有数字的数据,Java中通常把它们称为整数;常量:就是直接的值;变量:放置常量的容器,除了放置常量之外,也可以给变量一个运算式,变量中的值是可变的;二、Java数据类型基本概念:数据类型在计算机语言里面,是对内存位置的一个抽象表达方式,可以理解为针对内存的一种抽象的表达方式。

接触每种语言的时候,都会存在数据类型的认识,有复杂的、简单的,各种数据类型都需要在学习初期去了解,Java是强类型语言,所以Java对于数据类型的规范会相对严格。

数据类型是语言的抽象原子概念,可以说是语言中最基本的单元定义,在Java里面,本质上讲将数据类型分为两种:基本类型和引用数据类型。

基本类型:简单数据类型是不能简化的、内置的数据类型、由编程语言本身定义,它表示了真实的数字、字符和整数。

引用数据类型:Java语言本身不支持C++中的结构(struct)或联合(union)数据类型,它的复合数据类型一般都是通过类或接口进行构造,类提供了捆绑数据和方法的方式,同时可以针对程序外部进行信息隐藏。

三、Java中的数据类型与内存的关系在Java中,每个存放数据的变量都是有类型的,如:char ch;float x;inta,b,c;ch是字符型的,就会分配到2个字节内存。

不同类型的变量在内存中分配的字节数不同,同时存储方式也是不同的。

所以给变量赋值前需要先确定变量的类型,确定了变量的类型,即确定了数据需分配内存空间的大小,数据在内存的存储方式。

四、Java数据类型在内存中的存储:1)基本数据类型的存储原理:所有的简单数据类型不存在“引用”的概念,基本数据类型都是直接存储在内存中的内存栈上的,数据本身的值就是存储在栈空间里面,而Java语言里面八种数据类型是这种存储模型;2)引用类型的存储原理:引用类型继承于Object类(也是引用类型)都是按照Java里面存储对象的内存模型来进行数据存储的,使用Java内存堆和内存栈来进行这种类型的数据存储,简单地讲,“引用”是存储在有序的内存栈上的,而对象本身的值存储在内存堆上的;区别:基本数据类型和引用类型的区别主要在于基本数据类型是分配在栈上的,而引用类型是分配在堆上的(需要java中的栈、堆概念),基本类型和引用类型的内存模型本质上是不一样的。

例1:我们分析一下”==“和equals()的区别。

首先,我定以两个String对象String a="abc";String b="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原码:0000 1010 它在计算机中的存储就是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的位数。

所以要注意这类问题;二、java类型介绍1、概述:Java中的数据类型分为引用数据类型和基本数据类型。

引用数据类型分3种:类,接口,数组;基本数据类型又分布尔类型和数值类型;布尔类型:boolean(逻辑型)trure or false 默认是false;数值类型分定点类型和浮点类型;定点类型分整数类型和字符型;2、JAVA 变量的默认初始化类型默认初始化值boolean f alseint 0short 0float 0.0double 0.0char \u0000long 0byte 0object null3、类型详细讲解:1)整数类型:byte、short、int、long都是表示整数的,只不过他们的取值范围不一样。

byte(字节类型) 一个byte 8位,取值范围为-128~127,占用1个字节(-2的7次方到2的7次方-1)默认是0short(短整型) 一个short 16位,取值范围为-32768~32767,占用2个字节(-2的15次方到2的15次方-1)默认是0int(整型) 一个int 32位,取值范围为(-2147483648~2147483647),占用4个字节(-2的31次方到2的31次方-1)默认是0long(长整型) 一个long 64位,取值范围为(-9223372036854774808~9223372036854774807),占用8个字节(-2的63次方到2的63次方-1)默认是0L或0l推荐用大写;可以看到byte和short的取值范围比较小,而long的取值范围太大,占用的空间多,基本上int可以满足我们的日常的计算了,而且int也是使用的最多的整型类型了。

在通常情况下,如果JAVA中出现了一个整数数字比如35,那么这个数字就是int型的,如果我们希望它是byte型的,可以在数据后加上大写的B:35B,表示它是byte型的,同样的35S表示short型,35L表示long型的,表示int我们可以什么都不用加,但是如果要表示long型的,就一定要在数据后面加“L”。

1.1)定点常量定点常量是整型常数,它可用十进制、八进制、十六种进制三种方式来表示。

十进制定点常量:如123、-456、0。

八进制定点常量:以0前导,形式为0dd...d。

如0123表示十进制数83,-011表示十进制数-9。

十六进制定点常量:以0x或0X开头,如0x123表示十进制数291,-0X12表示十进制数-18。

1.2)定点变量定点变量即整型变量,可细分成字节型变量、整型变量、短整型变量和长整型变量四种。

对各种定点变量的开销内存字节数和数值范围作简要说明。

需要注意的是,如果要将一定点常量赋值给一个定点变量,需要查验常量是否在该变量的表达范围内,如超出范围程序会编译出错。

2)char型(字符型)Java中一个字符(char)表示Unicode字符集中的一个元素。

Unicode字符由16位组成,因此,有(65535)个不同的字符可用,Unicode字符集包含所有不同语言的字符,以及数学、科学、文字中的常用符号,所以给了我们很大的灵活性。

字符由单引号括起来的单个字符表达,通常用16进制表示,范围从‟u0000‟到‟uFFFF‟(u告诉编译器你在用两个字节[16位]字符信息表示一个Unicode字符)。

用于存放字符的数据类型,占用2个字节,采用unicode编码,它的前128字节编码与ASCII兼容,字符的存储范围在\u0000~\uFFFF,在定义字符型的数据时候要注意加' ',比如'1'表示字符'1'而不是数值1。

2.1)字符常量字符常量指用单引号括起来的单个字符,如…a‟,…A‟,请特别注意,字符的定界符是单引号,而非双引号。

除了以上所述形式的字符常量值之外,Java还允许使用一种特殊形式的字符常量值,这通常用于表示难以用一般字符来表示的字符,这种特殊形式的字符是以一个“\”开头的字符序列,称为转义字符。

Java中的常用转义字符见表2-12.2)字符变量以char定义的变量,如char c='a';要特别加以说明的是,Java的文本编码采用Unicode集,Java字符16位无符号型数据,一个字符变量在内存中占2个字节。

注:char c = ' 1 ',我们试着输出c看看,System.out.println(c);结果就是1,而如果我们这样输出呢System.out.println(c+0);结果却变成了49,这是因为0是int型,进行了向上类型转换,结果是个int型。

如果我们这样定义c看看,char c = ' \u0031 ';输出的结果仍然是1,这是因为字符'1'对应着unicode编码就是\u0031 。

3)浮点类型:分float和double是表示浮点型的数据类型,他们之间的区别在于他们的精确度不同。

3.1)浮点常量即带小数点的实型数值,可以由直接带小数点的数值和科学计数法两种形式来表示:带小数点的数值形式:由数字和小数点组成,如0.123、.123、123.、123.0。

科学计数法表示形式:由一般实数和e±n(E±n)组成,如12.3e3、5E-3,它们分别表示12.3乘以10的3次方,5乘以10的-3次方。

需要注意的是,e或E之前必须有数字,且e或E后面的指数必须为整数。

3.2)浮点变量浮点变量有单精度变量和双精度变量之分,不同的精度开销的内存字节数和表达的数值范围均有区别。

两种浮点变量占内存字节数和数值范围浮点常量也有单精度和双精度之分,前面列出的常量均是双精度常量,如果要特别说明为单精度常量,可以数据末尾加上f或F作为后缀,如12.34f。

相关主题