这几天对Java数据类型做了一下总结,参考了一些资料,具体内容如下,如有错误请指正。博文下方有此文PDF版下载链接。
Java数据类型精解
1 Java数据类型
Java变量包括如下两大类数据类型:
l 基本数据类型:
Ø 整数:byte、short、int、long
Ø 浮点数:float、double
Ø 字符类型:char
Ø 布尔类型:boolean
l 对象数据类型:
Ø Java类的实例对象类型。
1.1 基本数据类型
基本数据类型,是比较简单地表达一些基本的数据类型,包括一下几类:
l byte(字节型):计算机中1字节一般来说占8位。
l char(字符型):占2字节,也就是16位。
l short(短整型):占2字节,也就是16位。
l int(整型):占4字节,也就是32位。
l long(长整型):占8字节,也就是64位。
l float(单精度实型):小数点后保留7位有效数字,占32位。
l double(双精度实型):小数点后保留15位有效数字,占64位。
l boolean(字节型):占1字节,8位。
我们知道所有的数据都是以0和1的组合来存储的,例如整型数字1,在计算机中的实际存储形势为:
00000000 00000000 00000000 00000001
上面的每一个0或者每一个1都被称为1个位。
表一 基本数据类型
类型
|
字节数
|
位数
|
取值范围
|
举例
|
byte
|
1
|
8
|
-27~27-1的整数
|
-128,54,127
|
short
|
2
|
16
|
-215~215-1的整数
|
1348,6543
|
int
|
4
|
32
|
-231~231-1的整数
|
0,-1000,345678
|
long
|
8
|
64
|
-263~263-1的整数
|
987657897,-12
|
float
|
4
|
32
|
-231~231的整数
|
23.978,87F
|
double
|
8
|
64
|
-263~263的整数
|
2.0231,0.435D
|
char
|
2
|
16
|
-215~215的整数
|
400,A,z,x,-23
|
boolean
|
1
|
8
|
true,false
|
true
|
(1)float类型
数值有一个后缀——F,如果没有后缀F,那么默认为double。Double类型的数值也可以使用后缀D。当这些数字遇到取值范围错误时,会发生上溢(Overflow);而在遇到被零整除时,会发生下溢(Underflow)。
(2)字符类型:char
双引号则表示一个字串,它是Java的一个对象类型String,并不是数据类型。在Java中除了用这个\u的形式来表示字符外,还可以用换码序列来表示特殊字符。
\b 退格 \u0008
\t Tab 制表 \u0009
\n 换行 \u000a
\r 硬回车 \u000d
\"双引号 \u0022
\'单引号 \u0027
\ 反斜杠 \u005c
与变量定义一起使用,例子如下:
byte myByte=49;
byte myByte2=128; //错误,取值范围过大
short myShort=2345;
int myInt=123;
int myInt2=012; //012是用八进制表示的数字,以0开头的数字代表八进制数字。
int myInt3=0x12E5F; //0x12E5F是用十六进制表示的数字,以0x开头的数字代表八进制数字。
long myLong=23;
long myLong2=245L; //以L结尾表示该数值为长整型
float myFloat=456.56F; //以F结尾表示该数字为单精度实型
double myDouble=23.56789D; //以D结尾表示该数字为双精度实型
如果你对八进制和十六进制的转换不太清楚的话,首先要知道十进制、八进制和十六进制的成员。
l 十进制的基本成员:0、1、2、3、4、5、6、7、8、9
l 八进制的基本成员:0、1、2、3、4、5、6、7
l 十六进制的基本成员:0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F(其中A、B、C、D、E、F分别代表10、11、12、13、14、15)。
(1)八进制转十进制
例如,八进制数345转换成十进制数为:5*80+4*81+3*82
(2)十六进制转十进制
例如,十六进制数45转换成十进制数为:5*160+4*81
1.2 对象数据类型
Java是面向对象的程序设计语言,因此Java的数据类型中包括了对象数据类型。例如String对象、Date对象和数组对象等。
如下列所示:
String shenkxiao="Shenkxiao"; //字符串对象
Date time=new Date(); //日期对象
Hello Shenkxiao inst=new Hello Shenkxiao();//Hello Shenkxiao实例对象
表二 基本数据类型与对象数据类型对应关系
基本数据类型
|
byte
|
short
|
int
|
long
|
float
|
double
|
char
|
boolean
|
对象数据类型
|
Byte
|
Short
|
Integer
|
Long
|
Float
|
Double
|
Character
|
Boolean
|
因此,如下定义的两个变量a和b,虽然他们代表的值都是1,却是不同的类型,一个是简单数据类型,另一个是对象数据类型。
int a=1;
Integer b=new Integer(1);
此外,Java中还有很多其他对象类型。
1.3 引用数据类型
Java中所有对象都要通过对象引用访问,对象引用是指向对象存储所在堆中某个区域的指针,所有的对象数据类型都属于引用数据类型。例如下列所示,b和c都是引用类型:
int a=1; //基本数据类型
Integer b=new Integer(1); //对象引用
Integer c=b; //对象引用
引用类型和基本数据类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型哦数据结构存储,当引用类型和基本数据类型用做某个类得实例数据时所指定的默认值。对象引用实例变量的默认值为null,而基本数据类型实例变量的默认值与他们的类型有关。
许多程序的代码将同时包含基本数据类型及他们的对象封装。当检查它们是否相等时,同时使用这两种类型并了解它们如何正确相互作用和共存将成为问题。程序员必须了解这两种类型是如何工作和相互作用的,以避免代码出错。
例如,不能对原始类型调用方法,但可以对对象调用方法:
int a=1; //基本数据类型
a.hashCode(); //错误
Integer b=new Integer(1); //对象引用
b.hashCode(); //正确
使用基本数据类型无须调用new,也无需创建对象,这节省了时间和空间。混合使用基本数据类型和对象也可能导致与赋值有关的意外结果。看起来没有错误的代码可能无法完成你希望做的工作,例如:
int a=1; //基本数据类型
int b=2;
Point x=new Point(0,0);
Point y=new Point(1,1);
System.out.println("a is "+a);
System.out.println("b is "+b);
System.out.println("x is "+x);
System.out.println("y is "+y);
System.out.println("改变位置……");
a=b; //改变基本数据类型的值
a++; //改变基本数据类型的值
x=y; //引用类型
x.setLocation(5, 5); //修改对象的值
System.out.println("a is "+a);
System.out.println("b is "+b);
System.out.println("x is "+x);
System.out.println("y is "+y);
这段代码输出以下结果:
a is 1
b is 2
x is java.awt.Point[x=0,y=0]
y is java.awt.Point[x=1,y=1]
改变位置……
a is 3
b is 2
x is java.awt.Point[x=5,y=5]
y is java.awt.Point[x=5,y=5]
修改整数a和b的结果没什么意外的地方。b的值被赋予变量a,结果a的值增加了1。这一输出反映了我们希望发生的情况。但是,令人感到意外的是在赋值并调用setLocation之后x和y对象的输出。我们在完成x=y赋值之后特意对x调用了setLocation,x和y的值怎么会相同呢?我们毕竟将y赋予x,然后更改了x,这与我们对整数a和b进行的操作没什么不同。
这种混淆是由基本数据类型和对象的使用造成的。赋值对这两种类型所起的作用没什么不同,但它可能看起来有所不同,赋值使(=)左边的值等于右边的值。这一点对于基本数据类型(如前面的int a和b)是显而易见的。对于非基本数据类型(如Point 对象),赋值修改的是对象引用,而不是对象本身。因此,x和y引用同一个对象,所以对x执行的所有方和和对y执行的所有方法都作用于同一个对象。
1.4 数组数据类型
Java数组(array)是动态创建的索引对象,这一点和类非常相似,此外,同类一样,数组只能索引数组的实例或者null,如以下代码所示:
int[] myIntArray=new int[5]; //定义一个长度为5的数组,数组默认初始值是0
int myIntArray[]=new int[5]; //C 风格的声明方式也是可以的。 此处感谢mougaidong的建议
int[] anotherIntArray=null;
数组是Object类的继承,这样,Object类的所有方法都可以被数组调用,数组对象由元素组成,元素的数目也可以为0,在这种情况下称作数组为空。所有的数组都是从0开始对元素编号的,这意味着数组内的第一个元素的索引编号是数字0。所有对数组元素的访问都会在运行时接受检查,如果试图使用编号小于0或者大于数组长度的值来索引元素就会产生<
分享到:
相关推荐
Java 数据类型和 MySql 数据类型对应一览 在 Java 编程语言中,数据类型是指变量或函数可以持有的值的类型。 MySql 数据库也具有其自己的数据类型,用于存储和管理数据。在本文中,我们将对 Java 数据类型和 MySql ...
本资源“JAVA数据类型思维导图”提供了一种直观的方式来理解和记忆Java中的数据类型,包括基本数据类型和引用数据类型。下面将对这两个主要的数据类型进行详细解释。 1. 基本数据类型(Primitive Data Types) - ...
Java 数据类型练习 本文档总结了 Java 数据类型的一些基本概念和实践练习题,涵盖了基本类型、变量定义、常量、运算符、控制流、数组、随机数等多方面的知识点。 一、基本类型 Java 中有八种基本类型:byte、...
Java 数据类型和 MySql 数据类型对应表 在 Java 编程中,了解 Java 数据类型和 MySql 数据类型的对应关系非常重要。这是因为在 Java 应用程序中,我们经常需要与数据库进行交互,而 MySql 是一种常用的关系数据库...
### MySQL与Java数据类型对应详解 #### 概述 在进行数据库操作时,尤其是在使用Java进行MySQL数据库开发的过程中,正确地映射数据类型是至关重要的一步。本文将详细介绍MySQL中的各种数据类型及其在Java中的对应...
这是一个对java数据类型进行详细分类的思维导图,其与我的一篇博客中的图片是一致的。那张图片就是通过它导出的。使用的软件是novamind5。
22.java数据类型.zip22.java数据类型.zip22.java数据类型.zip22.java数据类型.zip22.java数据类型.zip22.java数据类型.zip22.java数据类型.zip22.java数据类型.zip22.java数据类型.zip22.java数据类型.zip22.java...
Oracle9i 数据类型、Java 数据类型以及 Schema 类型之间的对比主要关注它们在存储和处理数据时的差异。这些数据类型是编程和数据库管理中的基础,理解它们的关系对于开发与数据库交互的应用程序至关重要。 1. ...
这篇博客主要探讨了Java数据类型如何与Hibernate的类型映射进行对应。 首先,Java的基本数据类型在Hibernate中有对应的类型映射。例如,int型在Hibernate中通常映射为Integer类型,因为数据库字段可能允许为空...
#### 二、Java数据类型分类 Java的数据类型主要分为两大类:原始数据类型(Primitive Data Types)和引用数据类型(Reference Data Types)。 ##### 2.1 原始数据类型 原始数据类型包括整型、浮点型、布尔型和...
Java 数据类型是编程的基础,了解并熟练掌握它们的特性及转换方式对于任何Java开发者来说都至关重要。Java的数据类型主要分为两大类:基本数据类型(Primitive Data Types)和引用数据类型(Reference Data Types)...
JAVA数据类型思维导图,便捷整理思路,变量、变量操作、变量的分类、数据类型、变量的内存分析图、类型之间转换
资源:Java数据类型精解 作者:Shenkxiao 版本:1.0 pdf 主要内容: Java数据类型 1.1 基本数据类型 1.2 对象数据类型 1.3 引用数据类型 1.4 数组数据类型 上传理由:基础文档共享,对Java初学者有很大的...
### JAVA数据类型转换详解 #### 一、引言 在Java编程中,数据类型转换是一项基本且重要的技能。本文档将详细介绍Java中的数据类型转换,包括简单数据类型之间的转换、字符串与其他数据类型的转换以及一些实用的...
SQL的数据类型与Java数据类型的对应关系,是程序员必备的基础知识,欢迎大家下载。
当我们在使用Hibernate时,我们需要了解Java数据类型如何与SQL数据类型对应,以便正确地配置实体类和Hibernate的映射文件(通常是.hbm.xml文件或使用注解的方式)。例如,Java的`int`类型通常对应于SQL的`INTEGER`,...
C#和Java数据类型的等价类型 C#和Java都是面向对象的编程语言,它们都支持多种数据类型,以便于开发者在编程时可以选择合适的数据类型来存储和操作数据。本文将对C#和Java中的数据类型进行比较和分析,帮助开发者更...
这个压缩包“Java数据类型操作包含转换代码实例.rar”提供了丰富的代码示例,帮助初学者理解和掌握Java中数据类型的转换。下面将详细阐述相关知识点。 一、基本数据类型 Java的基本数据类型包括整型(byte, short, ...
在Java编程语言中,与数据库交互是常见的任务,这就涉及到`java.sql.Types`枚举类,它是Java数据类型与数据库字段类型之间的桥梁。`java.sql.Types`定义了一系列常量,这些常量代表了SQL标准中的数据类型,使得我们...
Java数据类型与各数据库类型映射一览表 本资源提供了 Java 数据类型与各数据库类型的映射关系表,涵盖了 Java.sql.Type 值、IBM DB2、Oracle、Sybase、SQL Server、Informix 等多个数据库管理系统。该表格详细说明...