`

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

    博客分类:
  • java
 
阅读更多

java中的类型概念名的说法不一、让我很是迷茫,我个人的理解整理,如有错误还请高人指点,!

 一、Java的类型词语理解:

1) 原始数据类型,简单类型,基本类型都是一个含义;

2)复合类型,扩展类型, 复杂类型、引用类型都是一个含义;

3)浮点类型,实数、实型 都是一个含义

4)逻辑型、布尔型 都是一个含义;

5)本人个人认同的类型分类:

阅读时需要理解

定点:定点 的意思是把小数点定在末尾,小数点后没有数字的数据,Java中通常把它们称为整数;

常量 :就是直接的值;

变量 :放置常量的容器,除了放置常量之外,也可以给变量一个运算式,变量中的值是可变的;

二、Java数据类型基本概念:

   数 据类型在计算机语言里面,是对内存位置的一个抽象表达方式,可以理解为针对内存的一种抽象的表达方式。接触每种语言的时候,都会存在数据类型的认识,有复 杂的、简单的,各种数据类型都需要在学习初期去了解,Java是强类型语言,所以Java对于数据类型的规范会相对严格。数据类型是语言的抽象原子概念, 可以说是语言中最基本的单元定义,在Java里面,本质上讲将数据类型分为两种:基本类型和引用数据类型。

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

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

三、 Java中的数据类型与内存的关系

在Java中,每个存放数据的变量都是有类型的,如:

char ch;   float x;   int a,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 false
int 0
short 0
float 0.0
double 0.0
char \u0000
long 0
byte 0
object null

3、类型详细讲解:

1) 整数类型 :byte、short、int、long都是表示整数的,只不过他们的取值范围不一样
byte(字节类型) 一个byte 8位,取值范围为-128~127,占用1个字节(-2的7次方到2的7次方-1) 默认是0
short(短整型) 一个short 16位,取值范围为-32768~32767,占用2个字节(-2的15次方到2的15次方-1) 默认是0
int(整型)        一个int 32位,取值范围为(-2147483648~2147483647),占用4个字节(-2的31次方到2的31次方-1) 默认是0
long(长整型)   一个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-1

2.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。如果要特别指明一个浮点常量是双精度常量,数据末尾不需要添加后缀,或者在数据末尾加上d或D作为后缀,如12.34d。

float (单精度浮点型) 一个float 32位,占用4个字节, 例3.2F,默认是0.0f , 3.402823e+38 ~ 1.401298e-45(e+38表示是乘以10的38次方,同样,e-45表示乘以10的负45次方)。
double (双精度浮点型) 一个dobule 64位  占用8个字节, 例3.2, 默认是0.0, 1.797693e+308~ 4.9000000e-324 占用8个字节

注: double型比float型存储范围更大,精度更高,所以通常的浮点型的数据在不声明的情况下都是double型的。

     如果要表示一个数据是float型的,可以在数据后面加上“F”。 

     浮点型的数据是不能完全精确的,所以有的时候在计算的时候可能会在小数点最后几位出现浮动,这是正常的。

相关介绍:

  在Java基本类型在使用字面量赋值的时候,有几个简单的特性如下:

  1】当整数类型的数据使用字面量赋值的时候,默认值为int类型,就是直接使用0或者其他数字的时候,值的类型为int类型,

            所以当使用    long a = 0这种赋值方式的时候,JVM内部存在数据转换。

  2】浮点类型的数据使用字面量赋值的时候,默认值为double类型,就是当字面两出现的时候,JVM会使用double类型的数据类型。

  3】从JDK 5.0开始,Java里面出现了自动拆箱解箱的操作,基于这点需要做一定的说明:

  对应原始的数据类型,每种数据类型都存在一个引用类型的封装类,分别为Boolean、Short、Float、Double、Byte、Int、 Long、Character,这些类型都是内置的封装类,这些封装类(Wrapper)提供了很直观的方法,针对封装类需要说明的是,每种封装类都有一 个xxxValue()的方法,通过这种方法可以把它引用的对象里面的值转化成为基本变量的值,不仅仅如此,每个封装类都还存在一个valueOf(String)的方法直接把字符串对象转换为相应的简单类型。

  在JDK 5.0之前,没有存在自动拆解箱的操作,即Auto Box操作,所以在这之前是不能使用以下方式的赋值代码的:

Integer a = 0; //这种赋值方式不能够在JDK 1.4以及以下的JDK编译器中通过

但是JDK 5.0出现了自动拆解箱的操作,所以在JDK 5.0以上的编译器中,以上的代码是可以通过的

参考于:http://book.51cto.com/art/201003/189014.htm

来自于:http://hi.baidu.com/630270730/blog/item/3562fff25d24fcd90b46e00b.html

分享到:
评论

相关推荐

    java基本数据类型PPT教案学习.pptx

    本教程主要讲解了Java的基本数据类型,包括标识符、关键字、数据类型、常量和变量等核心概念。 1. **标识符**: - 标识符是程序员为变量、类、方法等创建的名称,必须遵循一定的规则。它们可以由字母、下划线(_)...

    java课件1-2章25个例题Java语言概述、基本数据类型、运算符与表达式

    “第02章 基本数据类型(1).ppt”和“第02章 基本数据类型(2).ppt”则可能深入讲解了Java中的各种基本数据类型,包括它们的用法、取值范围以及在实际编程中的应用。 通过学习这些课件,无论是备课还是自我提升,都能...

    java基本语法1

    强制类型转换是数据类型取值范围大的转为取值范围小的,需要加强制转换符,也就是(要转换的数据类型)。 Java 的基本语法包括标识符、命名规范、关键字、保留字、基本数据类型、数据类型转换等知识点。这些知识点...

    java学习资料第二章Java基本数据与运算

    本章节主要讲解了基本数据类型的使用方法。 ##### 基本数据类型 基本数据类型包括数值型、字符型、布尔型等。具体如下: - `byte`:占1个字节,取值范围-128至127。 - `short`:占2个字节,取值范围-32768至32767...

    java数据类型经典模式大全.rar_java 技巧

    在“java数据类型经典模式大全”中,可能会深入讲解如何有效地使用每种数据类型,包括它们的取值范围、运算规则以及在实际编程中的应用场景。例如,当处理大量数据时,可能会讨论使用哪种整型更合适,或者在精度和...

    Android应用编程基础第6篇】Java语言的数据类型

    所有的基本数据类型都具有固定的取值范围和占用固定大小的内存空间,这是Java语言跨平台和可移植性的关键。基本数据类型所占用的内存空间不会因为运行的操作系统不同而有所改变。在Java中,基本数据类型的变量存储在...

    Java程序设计课件:第2章 基本数据类型与基本操作.ppt

    总结来说,Java的第二章主要讲解了基本数据类型的使用、操作和表示方式,以及它们在实际编程中的应用。掌握这些基础知识是成为一名合格的Java程序员的关键步骤。了解数据类型、基本操作、标识符和关键字的概念,能...

    Java基本语法

    本文将详细讲解Java中的基本数据类型转换以及引用数据类型。 首先,让我们探讨基本数据类型之间的转换。Java中有两种类型的转换:自动类型转换和强制类型转换。 1. 自动类型转换(Autoboxing): - 当一个小范围...

    Java读取json文件,并转化为map取值

    本教程将深入讲解如何使用Java读取JSON文件,并将其内容转化为Map以便进行取值操作。 首先,我们需要引入处理JSON的库。Java标准库并不直接支持JSON操作,所以我们通常会使用第三方库,如`org.json`或`...

    JAVA课件具体讲解

    这些数据类型有固定的大小和取值范围,例如,boolean只有true和false两个值,byte的取值范围是-128到127。 引用数据类型包括数组、对象和接口。它们在内存中是通过引用(类似于C语言中的指针)来访问的。在Java中,...

    java变量讲解

    - 记住不同数据类型取值空间的大小。 - 注意各个类型的默认值。 - 对于 `float` 类型的值,后面必须加上 "f" 或 "F"。 - 布尔类型的默认值为 `false`。 - 数组元素下标从0开始,长度为 n 的数组合法下标取值...

    JAVA基础思维导图【xmind格式】.zip

    首先,"java基本数据类型A.xmind"和"java基本数据类型B.xmind"这两张思维导图主要介绍了Java中的八种基本数据类型,包括整型(byte, short, int, long)、浮点型(float, double)、字符型(char)以及布尔型...

    javaSE基础字符编码、数据类型-5

    在"Java零基础-数据类型-整数型.mp4"中,可能讲解了它们的取值范围、默认值以及如何进行运算。 2. **字符型(char)**:Java中的char类型占用2个字节,它能存储Unicode字符。与其他语言不同,Java的char可以表示任何...

    Java课件--java基础知识(一)

    本文将深入讲解Java中的标识符、关键字和基本数据类型。 首先,我们来理解什么是标识符和关键字。标识符是Java程序中用于命名类、变量、方法、类型等的字符序列。例如,当我们创建一个名为"Student"的类,"Student...

    疯狂Java讲义视频1-9章

    5. Java基本数据类型:讲解了Java中的基本数据类型,包括整型(byte、short、int、long)、浮点型(float、double)和字符型(char),以及布尔型(boolean)。这些数据类型的取值范围、存储方式以及它们在程序中的...

    Java电子教案 第二章

    第二章深入讲解了基本数据类型,这是Java编程的基础。Java提供了八种基本数据类型,包括四种整数类型(byte、short、int、long)、两种浮点类型(float、double)、一种逻辑类型(boolean)和一种字符类型(char)。...

    java数据处理与流程控制.pptx

    Java提供了两种基本的数据类型:基本数据类型和引用数据类型。基本数据类型包括数值型(如整数类型byte, short, int, long和浮点类型float, double)、字符型(char)以及布尔型(boolean)。这些类型由Java语言直接支持...

    java算法研究分析

    书中还列出了Java的基本数据类型的默认值、存储空间和取值范围。 在描述算法的章节,方法(methods)作为Java中的重要组成部分被提及。方法是执行特定任务的函数或过程,例如Java的Math类中提供了许多数学计算的...

    数据结构java语言描述课后答案.docx

    - **数据类型**:是一类数据的集合,定义了该类数据的取值范围和操作集合。 - **数据操作**:对数据执行的操作,如插入、删除、查找等。 - **算法**:解决问题或完成任务的明确指令集。 - **算法的时间复杂度**...

    JAVA语法讲解

    基本数据类型包括int(整型,4字节,取值范围约±20亿)、byte(字节型)、short(短整型)、long(长整型)、float(单精度浮点型,4字节)、double(双精度浮点型)、boolean(布尔型,true或false)、char(字符...

Global site tag (gtag.js) - Google Analytics