分享
 
 
 

数据类型

王朝other·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

数据类型

数据类型指明了变量或表达式的状态和行为。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型

这种使用可能会导致溢出或精度的下降,最好不要使用。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有