最新精品JAVA高级备课完美版Java基本数据类型Word格式文档下载.docx
《最新精品JAVA高级备课完美版Java基本数据类型Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《最新精品JAVA高级备课完美版Java基本数据类型Word格式文档下载.docx(9页珍藏版)》请在冰豆网上搜索。
一个char代表一个16-bit无符号的(不分正负的)Unicode字符。
一个char文字必须包含在单引号内(‘’)。
‘a’
‘\t’一个制表符
‘\u?
?
’一个特殊的Unicode字符。
应严格按照四个16进制数字进行替换
和在C语言中一样,Java也支持转义字符。
Java中使用“\”将转义字符与一般的字符区分开来。
Java中的转义字符
转义序列
含义
\b
退格
\t
水平制表
\n
换行
\f
换页
\r
回车
\”
双引号
\’
单引号
\\
反斜杠
2、String不是原始类型,而是一个类(class),它被用来表示字符序列。
字符本身符合Unicode标准,且上述char类型的反斜线符号适用于String。
与C和C++不同,String不能用\0作为结束。
String
不是一个原始数据类型,它是一个类
具有用双引号引用的文字
“The
quickbrownfoxjumpedoverthelazydog.”
可按如下情形使用:
Stringgreeting=“GoodMorning!
!
\n”;
Stringerr_meg=“recordnotfound!
”;
三.整数类──byte,short,int,long
在Java编程语言中有四种整数类型,每种类型可使用关键字byte,short,int和long中的任意一个进行声明。
整数类型的文字可使用十进制、八进制和16进制表示,如下所示:
2十进制值是2
047首位的0表示这是一个八进制的数值
0xBBAC首位的0x表示这是一个16进制的数值
注意──所有Java编程语言中的整数类型都是带符号的数字。
整数数据类型—范围
IntegerLengthNameorTypeRange
8bitsbyte-27...27-1
16bitsshort-215...215-1
32bitint-231...231-1
64bitslong-263...263-1
int是最常用的整数类型。
但是如果你要表达很大的数,比如在地理信息系统中用整数地图上点的坐标,或表示国家财政预算,就需要用到长整型long。
整数类文字属int类型,除非在其后直接跟着一个字母“L”。
L表示一个long值。
请注意,在Java编程语言中使用大写或小写L同样都是有效的,但由于小写l与数字1容易混淆,因而,使用小写不是一个明智的选择。
上述文字的
long的形式如下:
2L十进制值是2,是一个long
077L首位的0表示这是一个八进制的数值
0xBAACL前缀0x表示这是一个16进制的数值
324932432023L
423432L
而短整型short和字节型byte常常用来处理一些底层的文件操作、网络传输,或者定义大数组。
Java的整数类型不依赖于具体的系统,每种类型在任何一种机器上占用同样的存储空间,比如,int总是32(4个字节)位,long总是64(8个字节)位。
在C++中,整数类型的大小是和具体的机器有关的,在SPARC机上运行正常的C++程序到了Intel586机上就可能会溢出,因为在SPARC机上,C++的int是64位的,而Intel586机上的C++的int是32位的。
但在Java中,这个问题不存在了,因为Java的整数类型不依赖于具体的系统。
四、浮点类──float和double
缺省为double
浮点变量可用关键字float或double来声明
如果一个数字文字包括小数点或指数部分,或者在数字后带有字母F或f(float)、D或d(double),则该数字文字为浮点。
浮点文字包括小数点或下列各项之一
E或e(增加指数值)
F或f(float)
D或d(double)
例如:
3.14一个简单的浮点值(adouble)
3.02E23一个大浮点值
2.718F一个简单的float长度值
123.4E+306D一个大的带冗余D的double值
浮点数据类型具有下列范围:
浮点长度名称或类型
32bitsfloat
64bitsdouble
注意──浮点文字除非明确声明为float,否则为double
如果您希望速度快一些,或者占用的空间少一些,您可以选择float型。
五数据类型转换
按照Java的语言规范,转换是指隐式的把一个表达式的类型(或值)改变成该表达式的周围的上下文能够接受的类型。
有时候这需要一个运行时期的操作,以检查转换是否有效,或者把表达式的运行时期值转换成适合新类型的形式。
转换规则:
1.两个操作数中有一个是double型,那么在运算前将另一个操作数也转换成double型。
2.两个操作数中有一个是float型,那么在运算前将另一个操作数也转换成float型。
3.两个操作数中有一个是long型,那么在运算前将另一个操作数也转换成long型。
显式的类型强制转换:
doubleresult;
result=1.5+3/2;
结果是2.5因为3/2按整数运算计算,结果是1。
强制转换:
result=1.5+(double)3/2;
结果是3。
能将任何一种类型强制转换成其他类型,但必须小心以免丢失数据信息。
显然,将较长的整型数据转换为较短的整型数据很有可能丢失信息。
如浮点类转化成整数一样。
当位数少的类型转化为位数多的类型时,自动类型转换
byte-shortintlongfloatdouble从前向后自动转换
当位数多的类型转化为位数少的类型时,强制类型转换
六、变量、说明和赋值
变量是内存中的一种存储位置。
它用标识符标识,您可以通过这个标识符来修改其中存储的值。
变量有相应的类型,这个类型是编译时期类型。
这种类型或者是基本类型,或者是复合类型。
基本类型的变量总是拥有那个确定的基本类型的值。
1、java变量的定义
在Java中,变量在使用之前必须要先定义。
变量定义的格式如下:
Java中的所有类型,除了null类型以外,都可以定义变量。
数据类型标识符[,标识符];
数据类型是指定义何种类型的变量,它必须是有效的Java类型;
标识符则是要定义的变量的名称,它必须是Java中合法的标识符。
方括号表示可选,在一条变量定义语句中,您可以定义一个或多个变量,多个变量中间用逗号隔开。
下面给出了一些变量定义的例子:
byterecordSize;
shortsalary;
intstudentsOfPKU=80;
longplanetNumber;
floatscoreofStudent=45.23f;
doubledistanceEarthToMoon;
charfirstNameOfChinesePeople;
booleanisBoy;
不能用Java中的关键字作为变量名。
2变量的初始化
Java程序中每个变量在使用前必须有一个值。
Java中不能引用没有值的变量,程序给出了一个错误的例子。
classTest
{
staticintx;
publicstaticvoidmain(String[]args)
intx;
intj=x;
}
会产生如下的编译错误:
Variable'
x'
maybeusedbeforeinitialization
(变量尚未初始化就被使用)
在Java中,变量在使用之前必须要先赋初值。
可以在变量定义的时候赋给它初始值。
intfoo=3;
doubledn=3.1415926D
也可以在变量定义之后再对它赋值。
intvalue;
……
value=1;
3、局部变量的作用域
作用域,是指一个标识符在程序中的有效范围。
这里,我们只讲局部变量的作用域,即在块中定义的变量的作用域。
块(block)是指用一对大括号{}括起来的一系列语句和变量声明。
比如,每个方法体都是一个块,在方法体内,也可以用{}定义块。
块可以嵌套。
程序清单4-6说明了块的概念。
这里所说的块仅指方法体和方法体中嵌套的块,不包括类体。
程序清单4-6
classBlock
{
publicstaticvoidmain(String[]args)
inta=3;
System.out.println(a+”在方法体中”);
{//此处定义了一个子块
intb=4;
System.out.println(b+“在第一层子块中”);
{//子块中又定义子块
intc=5;
System.out.println(c+“在第二层子块中”);
}
程序清单4-6执行结果如下:
3在方法体中
4在第一层子块中
5在第二层子块中
块在执行时按照从前到后,从左到右的顺序依次执行。
如果块中的所有语句都能正确执行,则块可以正确执行,否则,如果块中的某一条语句执行异常,那么整个块也会因同样的原因执行失败。
局部变量是在块中定义的。
局部变量的作用域是从它定义之处起到它所在的块结束之处,包括它的初始化部分。
如果在这个范围内重新定义了该变量(即定义了和该变量重名的变量),就会产生编译错误。
也就是说,局部变量的隐藏是不允许的。
程序清单4-7是一个错误的例子,它试图隐藏局部变量,结果会产生编译错误。
程序清单4-7
classScope
//在方法体中定义了局部变量a
System.out.println(a);
inta=8;
//错误!
此处不能再定义同名的局部变量
编译程序清单4-7时,编译器会产生如下错误:
a'
isalreadydefinedinthismethod
Errorexecutingjvc.exe.
错误信息表明变量a在main方法中已经定义了,在内层块中不能重新定义以隐藏外层定义的变量a。
但是,在两个不存在包含关系的块中定义相同名字的变量是允许的,因为它们的作用域不相交。
程序清单4-8示例了两个没有嵌套关系的块中变量的作用域。
程序清单4-8
classScope2
{//第一个子块
//在第一个子块中定义局部变量a
System.out.println(“在第一个块中的变量a=“+a);
}//第一个块中定义的局部变量a的作用域到此结束
{//第二个子块
//在第二个子块中定义局部变量a
System.out.println(“在第二个块中的变量a=“+a);
}//第二个块中定义的局部变量a的作用域到此结束
程序4-8的输出结果如下:
在第一个块中的变量a=3
在第二个块中的变量a=8