数据类型
数据类型指明了变量或表达式的状态和行为。Java的数
据类型如下所示:
Java不支持C、C++中的指针类型、结构体类型和共用体类型。
本章我们主要介绍简单类型。
常量与变量
一、常量
Java中的常量值是用文字串表示的,它区分为不同的类型
,如整型常量123,实型常量1.23,字符常量‘a’,布尔常量true、
false以及字符串常量" This is a constant string."。
与C、C++不同,Java中不能通过#define命令把一个标识符定
义为常量,而是用要害字final来实现,如final double PI =3.14159(有
关final的用法见[6.2.3])。
二、变量
变量是Java程序中的基本存储单元,它的定义包括变量名
、变量类型和作用域几个部分。
①变量名是一个合法的标识符,它是字母、数字、下划
线或美元符"$"的序列,Java对变量名区分大小写,变量名不能
以数字开头,而且不能为保留字。合法的变量名如:myName、
value-1、dollar$等。非法的变量名如:2mail、room#、class(保留
字)等,变量名应具有一定的含义,以增加程序的可读性。
②变量类型可以为上面所说的任意一种数据类型。
③变量的作用域指明可访问该变量的一段代码。声明一
个变量的同时也就指明了变量的作用域。按作用域来分,变量
可以有下面几种:局部变量、类变量、方法参数、例外处理参
数。局部变量在方法或方法的一块代码中声明,它的作用域
为它所在的代码块(整个方法或方法中的某块代码)。
类变量在类中声明,而不是在类的某个方法中声明,它的
作用域是整个类。
方法参数传递给方法,它的作用域就是这个方法。
例外处理参数传递给例外处理代码,它的作用域就是例
外处理部分。
在一个确定的域中,变量名应该是唯一的。通常,一个域
用大括号{}来划定。
④变量的声明格式为:
type identifier[=value][,identifier[=value]… ];
例如:inta,b,c;
doubled1,d2=0.0;
其中,多个变量间用逗号隔开,d2=0.0对实型变量d2赋初值
0.0,只有局部变量和类变量是可以这样赋初值的,而方法参数
和例外处理参数的变量值是由调用者给出的。
整型数据
一、整型常量:
与C,C++相同,Java的整常数有三种形式:
①十进制整数,如123,-456,0
②八进制整数,以0开头,如0123表示十进制数83,-011表示十
进制数-9。
③十六进制整数,以0x或0X开头,如0x123表示十进制数
291,-0X12表示十进制数-18。
整型常量在机器中占32位,具有int型的值,对于long型值,则
要在数字后加L或l,如123L表示一个长整数,它在机器中占64位。
二、整型变量:
整型变量的类型有byte、short、int、long四种。下表列出
各类型所在内存的位数和其表示范围。
int类型是最常使用的一种整数类型。它所表示的数据范围足够大,而且适合于32位、
64位处理器。但对于大型计算,常会碰到很大的整数,超出int类型所表示的范围,这时要使用
long类型。
由于不同的机器对于多字节数据的存储方式不同,可能是从低字节向高字节存储,也
可能是从高字节向低字节存储,这样,在分析网络协议或文件格式时,为了解决不同机器上
的字节存储顺序问题,用byte类型来表示数据是合适的。而通常情况下,由于其表示的数据
范围很小,轻易造成溢出,应避免使用。
short类型则很少使用,它限制数据的存储为先高字节,后低字节,这样在某些机器中会出
错。
三、整型变量的定义,如:
byte b; //指定变量b为byte型
short s; //指定变量s为short型
int i; //指定变量i为int型
long l; //指定变量l为long型
浮点型(实型)数据
一、实型常量
与C,C++相同,Java的实常数有两种表示形式:
①十进制数形式,由数字和小数点组成,且必须有小数点,如0.123,.123,123.,123.0
②科学计数法形式。如:123e3或123E3,其中e或E之前必须有数字,且e或E后面的指数必须
为整数。
实常数在机器中占64位,具有double型的值。对于float型的值,则要在数字后加f或F,如
12.3F,它在机器中占32位,且表示精度较低。
二、实型变量
实型变量的类型有float和double两种,下表列出这两种类型所占内存的位数和其表示范
围。
数据类型所占位数数的范围
float323.4e-038~3.4e+038
double641.7e-308~1.7e+308
双精度类型double比单精度类型float具有更高的精度和更大的表示范围,经常使用。
三、实型变量定义,如
floatf;//指定变量f为float型
doubled;//指定变量d为double型
[注]与C、C++不同,Java中没有无符号型整数,而且明确规定了整型和浮点型数据所占的
内存字节数,这样就保证了安全性、鲁棒性和平台无关性。
字符型数据
一、字符常量
字符常量是用单引号括起来的一个字符,如‘a’,‘A’。另外,与C、C++相同,Java也提供转
义字符,以反斜杠(\)开头,将其后的字符转变为另外的含义,下表列出了Java中的转义字符。
与C、C++不同,Java中的字符型数据是16位无符号型数据,它表示Unicode集,而不仅仅是
ASCII集,例如\u0061表示ISO拉丁码的‘a’。
转义字符描述
\ddd 1到3位8进制数据所表示的字符(ddd)
\uxxxx 1到4位16进制数所表示的字符(xxxx)
\' 单引号字符
\\ 反斜杠字符
\r 回车
\n 换行
\f 走纸换页
\t 横向跳格
\b 退格二、字符型变量
字符型变量的类型为char,它在机器中占16位,其范围为0~65535。字符型变量的定义如
:
char c='a'; //指 定 变 量 c为 char型 ,且 赋 初 值 为 'a'
与C、C++不同,Java中的字符型数据不能用作整数,因为Java不提供无符号整数类型。但
是同样可以把它当作整数数据来操作。
例如:
int three=3;
char one='1';
char four=(char)(three+one);//four='4'
上例中,在计算加法时,字符型变量one被转化为整数,进行相加,最后把结果又转化为字
符型。
三、字符串常量
与C、C++相同,Java的字符串常量是用双引号("")括起来的一串字符,如"Thisisastring.\n"。但
不同的是,Java中的字符串常量是作为String类的一个对象来处理的,而不是一个数据。有关
类String,我们将在第七章讲述。
布尔型数据
布尔型数据只有两个值,true和false,且它们不对应于任何整数值。在流控制中常用到它
。
布尔型变量的定义如:
boolean b=true; //定 义 b为 布 尔 型 变 量 ,且 初 值 为 true
举例
例1.下例中用到了前面提到的数据类型,并通过屏幕显示它们的值。
public class SimpleTypes{
public static void main( String args[] ){
byte b=0x55;
short s=0x55ff;
int i=1000000;
long l=0xfffL;
char c='c';
float f=0.23F;
double d=0.7E-3;
boolean bool=true;
System.out.println("b = "+b);
System.out.println("s = "+s);
System.out.println("i = "+i);
System.out.println("l = "+l);
System.out.println("c = "+c);
System.out.println("f = "+f);
System.out.println("d = "+d);
System.out.println("bool = "+bool);
}
}
编译并运行该程序,输出结果为:
C:\>java SimpleTypes
b = 85
s = 22015
i = 1000000
l = 4095
c = c
f = 0.23
d = 0.0007
bool = true
各类数值型数据间的混合运算
一、自动类型转换
整型、实型、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型
,然后进行运算。转换从低级到高级,如下图:
转换规则为:
① (byte或 short) op int→ int
② (byte或 short或 int) op long→ long
③ (byte或 short或 int或 long) op float→ float
④ (byte或 short或 int或 long或 float) op double→ double
⑤ char op int→ int
其中,箭头左边表示参与运算的数据类型,op为运算符(如加、减、乘、除等),右边表示
转换成的进行运算的数据类型。
例2
public class Promotion{
public static void main( String args[ ] ){
byte b=10;
char c='a';
int i=90;
long l=555L;
float f=3.5f;
double d=1.234;
float f1=f*b;
// float * byte -> float
int i1=c+i;
// char + int -> int
long l1=l+i1;
// long + int ->ling
double d1=f1/i1-d;
// float / int ->float, float - double -> double}
}
二、强制类型转换
高级数据要转换成低级数据,需用到强制类型转换,如:
int i;
byte b=(byte)i; //把int型变量i强制转换为byte型
这种使用可能会导致溢出或精度的下降,最好不要使用。
分享到:
相关推荐
ECMAScript 中有 5 种简单数据类型(也称为基本数据类型):Undefined、Null、Boolean、Number和 String。还有 1种复杂数据类型——Object,Object 本质上是由一组无序的名值对组成的。ECMAScript 不支持任何创建...
C++数据类型及取值范围 1.基本数据类型: ①字符类型:char(字符型) 例:‘A’,’b’ ②整数类型:int(整型) 例:4563, 234, 885634 ③浮点类型:float(单精度型)、double(双精度型) 例:3.1456 , 0.9e12 ④空值...
一些初学JAVA的朋友可能会遇到JAVA的数据类型之间转换的苦恼,例如,整数和float,double型之间的转换,整数和String类型之间的转换,以及处理、显示时间方面的问下面笔者就开发中的一些体会介绍给大家。 我们知道,...
数据类型就是对内存位置的抽象表达。程序员可以利用多种数据类型:某些由编程语言定义,某些由外部库定义,还有些则由程序员来定义。很多编程语言都依赖于特定的计算机类型和对数据类型属性的具体编译实现,比如word...
修复8字节数据类型,为数组时的BUG..测试通过,未实际使用到项目中...有问题在帖子里回复...注:自定义数据类型文本 必须跟 当前的数据类型一致,否则崩溃没商量...工作原理是根据 自定义数据类型 文本,来保存,还原...
默认情况下,AIDL只支持下列数据类型: Java八种基础数据类型(如 int、long、char、boolean 等); String字符串; CharSequence字符序列; List列表,List中的所有元素须是前面提到的数据类型,或者是Parcelable...
Python数据类型,在内存中存储的数据可以有多种类型。例如, 一个人的名字可以用字符来存储, 年龄可以用数字来存储, 爱好可以用集合来存储等等。Python有五个标准的数据类型: Numbers(数字) String(字符串)...
Java数据类型和MySql数据类型对应一览
资源名称:Java编程基础知识变量与数据类型资源目录:【】11957c6aed0bbd30e284837b53bc3a6f【】2.Java编程基础知识变量与数据类型1.数据类型初阶【】2.Java编程基础知识变量与数据类型10.浮点类型【】2.Java编程...
组态王的数据类型,详细的介绍,内存离散变量、I/O离散变量、2.内存实型变量、I/O实型变量
易语言自定义数据类型变量保存源码,自定义数据类型变量保存,CLSave
图的抽象数据类型实现 数据结构实验 广工 链表实现
SQL的数据类型与Java数据类型的对应关系,是程序员必备的基础知识,欢迎大家下载。
Oracle的数据类型: 1、CHAR数据类型,该类型是固定长度的字符串,如果没指定大小,则默认占用一字节,如果输入的值小于指定的长度,则数据库用空格填充至固定长度,如果用户输入的值大于指定的长度,则数据库...
oracle和sql数据类型
整数型数据包括bigint型、int型、smallint型和tinyint型。 浮点数据类型包括real型、float型、decimal型和numeric型。
用VBA获取access表名和各个表字段的数据类型
数据类型是数据的一种属性,表示数据所表示信息的类型。任何一种计算机语言都定义了自己的数据类型。当然,不同的程序语言都具有不同的特点,所定义的数据类型的各类和名称都或多或少有些不同。SQLServer提供了25种...
sqlserver数据库类型对应Java中的数据类型
实验项目名称: 抽象数据类型的实现 实验项目性质: 设计性实验 所属课程名称: 数据结构 以教材中讨论的各种抽象数据类型为对象,利用C语言的数据类型表示和实现其中某个抽象数据类型。 本资源包括了可执行文件、源...