Java实训3.docx

上传人:b****2 文档编号:23547968 上传时间:2023-05-18 格式:DOCX 页数:69 大小:297KB
下载 相关 举报
Java实训3.docx_第1页
第1页 / 共69页
Java实训3.docx_第2页
第2页 / 共69页
Java实训3.docx_第3页
第3页 / 共69页
Java实训3.docx_第4页
第4页 / 共69页
Java实训3.docx_第5页
第5页 / 共69页
点击查看更多>>
下载资源
资源描述

Java实训3.docx

《Java实训3.docx》由会员分享,可在线阅读,更多相关《Java实训3.docx(69页珍藏版)》请在冰豆网上搜索。

Java实训3.docx

Java实训3

Java实训3——基本程序设计(维信科技)

3.1变量与数据类型

变量是利用声明的方式,将内存中的某个块保留下来以供程序使用。

可以声明为块记载的数据类型为整型、字符型、浮点型或是其他数据类型,作为变量的保存之用。

本章将就变量及各种数据类型做一个基础性地介绍。

数据类型在程序语言的构成要素里,占有相当重要的地位。

Java的数据类型可分为原始数据类型与引用数据类型。

原始数据类型也称为基本数据类型,它们包括了最基本的boolean、byte、char、short、int、long、float与double等类型。

另一种数据类型为引用数据类型,它是以一种特殊的方式指向变量的实体,这种机制类似于C/C++的指针。

这类的变量在声明时是不会分配内存的,必须另外进行开辟内存空间的操作,如字符串与数组均属于这种数据类型。

3.1.1变量与常量(维信科技,山西最专业的IT实训)

下面先来看一个简单的实例,好让读者了解Java里变量与常量之间的关系,下面的程序里声明了两种Java经常使用到的变量,分别为整型变量num与字符变量ch。

为它们赋值后,再把它们的值分别显示在显示器上:

范例:

TestJava3_1.java

01//下面的程序声明了两个变量,一个是整型,一个是字符型

02publicclassTestJava3_1

03{

04publicstaticvoidmain(Stringargs[])

05{

06intnum=3;//声明一整型变量num,赋值为3

07charch='z';//声明一字符变量ch,赋值为z

08System.out.println(num+"是整数!

");//输出num的值

09System.out.println(ch+"是字符!

");//输出ch的值

10}

11}

 

输出结果:

3是整数!

z是字符!

在TestJava3_1中,声明了两种不同类型的变量num与ch,并分别将常量3与字符“z”赋值给这两个变量,(维信科技,山西最专业的IT实训)最后再将它们显示在显示器上。

声明一个变量时,编译程序会在内存里开辟一块足以容纳此变量的内存空间给它。

不管变量的值如何改变,都永远使用相同的内存空间。

因此,善用变量将会是一种节省内存的方式。

常量是不同于变量的一种类型,它的值是固定的,例如整数常量、字符串常量。

通常给变量赋值时,会将常量赋值给它,在程序TestJava3_1中,第6行num是整型变量,而3则是常量。

此行的作用是声明num为整型变量,并把常量3这个值赋给它。

相同的,第7行声明了一个字符变量ch,并将字符常量'z'赋给它。

当然,在程序进行的过程中,可以为变量重新赋值,也可以使用已经声明过的变量。

3.1.2Java的变量类型

在Java中规定了八种基本数据类型变量来存储整数、浮点数、字符和布尔值。

如图3-1所示:

图3-1Java的变量类型

在这里只是先介绍基本数据类型,引用数据类型会在以后的章节中介绍。

3.1.3基本数据类型

到目前为止,相信读者已经对Java有了一些初步的认识,如果想在程序中使用一个变量,就必须先声明,(维信科技,山西最专业的IT实训)此时编译程序会在未使用的内存空间中寻找一块足够能保存这个变量的空间以供这个变量使用。

Java的基本数据类型如表3-1所示。

表3-1Java的基本数据类型

数据类型

字节

表示范围

long(长整数)

8

-9223372036854775808~9223372036854775807

int(整数)

4

-2147483648~2147483647

short(短整数)

2

-32768~32767

byte(位)

1

-128~127

char()

1

0~255

boolean()

1

布尔值只能使用true或false

float()

4

-3.4E38(-3.4×1038)~3.4E38(3.4×1038)

double()

8

-1.7E308(-1.7×10308)~1.7E308(1.7×10308)

3.1.3.1整数类型

当数据不带有小数或分数时,即可以声明为整数变量,如3,-147等即为整数。

Java中,整数数据类型可以分为long、int、short及byte四种:

long为64位,也就是8个字节(bytes),可表示范围为-9223372036854775808到9223372036854775807;int为32位,(维信科技,山西最专业的IT实训)也就是4个字节,表示范围为-2147483648到2147483647;若是数据值的范围在-32768到32767之间时,可以声明为short(短整数)类型;若是数据值更小,在-128到127之间时,可以声明为byte类型以节省内存空间。

举例来说,想声明一个短整型变量sum时,可以在程序中做出如下的声明:

shortsum;//声明snum为短整型

经过声明之后,Java即会在可使用的内存空间中,寻找一个占有2个字节的块供sum变量使用,同时这个变量的范围只能在-32768到32767之间。

3.1.3.1.1常量的数据类型

有趣的是,Java把整数常量的数据类型均视为int型,因此,如果在程序中使用了超过2147483647这个大小的常量,编译时将发生错误,如下面的范例:

范例:

TestJava3_2.java

01

//下面这段程序说明了值的可取范围的问题

02

publicclassTestJava3_2

03

{

04

publicstaticvoidmain(Stringargs[])

05

{

06

longnum=329852547553;

//声明一长整型变量

07

System.out.println(“num=“+num);

08

}

09

}

如果编译上面的程序代码,将会得到下列的错误信息:

TestJava3_2.java:

5:

integernumbertoolarge:

329852547553longnum=329852547553;

这是因为把整数常量看成是int类型,但329852547553这个整数已超出了int类型所能表示的范围,因此虽然把num的类型设为long(维信科技,山西最专业的IT实训),但编译时仍然会发生错误。

要解决这个问题,只要在整数常量后面加上一个大写的“L”即可,此举代表该常量是long类型的整数常量。

所以只要把第6行的语句改成:

06longnum=329852547553L;

即可成功地编译运行。

3.1.3.1.2数据类型的最大值与最小值

Java提供了long、int、short及byte四种整数类型的最大值、最小值的代码,以方便设计者使用。

最大值的代码是MAX_VALUE,最小值是MIN_VALUE。

如果要取用某个类型的最大值或最小值,只要在这些代码之前,加上它们所属的类的全名即可。

举例来说,如果程序代码里需要用到长整数的最大值,如图3-2所示的语法表示。

图3-2代码的表示法

由上面的语法可知,如果要使用某个类型的代码,则必须先指定该类型所在的类库以及该类型所属的类,但因java.lang这个类库属于常用类库,(维信科技,山西最专业的IT实训)所以默认的Java程序会将它加载,因此在实际的应用上设计者可以将它省略。

Java所提供的整数的最大值与最小值的标识符及常量值,可在表3-2中查阅。

若是读者现在不懂什么叫类库也没有关系,现在只要会使用它就行了。

表3-2整数常量的特殊值代码

Long

int

使用类全名

java.lang.Long

java.lang.Integer

最大值代码

MAX_VALUE

MAX_VALUE

最大值常量

9223372036854775807

2147483647

最小值代码

MIN_VALUE

MIN_VALUE

最小值常量

-9223372036854775808

-2147483648

short

byte

使用类全名

java.lang.Short

java.lang.Byte

最大值代码

MAX_VALUE

MAX_VALUE

最大值常量

32767

127

最小值代码

MIN_VALUE

MIN_VALUE

最小值常量

-32768

-128

下面程序是输出Java定义的四种整数类型的常量的最大和最小值,可以将程序与上表做对照、比较。

范例:

TestJava3_3.java

01//下面这段程序调用了表3-2中的方法,可以得到数据类型的最大值和最小值

02publicclassTestJava3_3

03{

04publicstaticvoidmain(Stringargs[])

05{

06longlong_max=java.lang.Long.MAX_VALUE;//得到长整型的最大值

07intint_max=java.lang.Integer.MAX_VALUE;//得到整型的最大值

08shortshort_max=Short.MAX_VALUE;//得到短整型的最大值

09bytebyte_max=Byte.MAX_VALUE;//得到Byte型的最大值

10

11System.out.println("LONG的最大值:

"+long_max);

12System.out.println("INT的最大值:

"+int_max);

13System.out.println("SHORT的最大值:

"+short_max);

14System.out.println("BYTE的最大值:

"+byte_max);

15}

16}

输出结果:

LONG的最大值:

9223372036854775807

INT的最大值:

2147483647

SHORT的最大值:

32767

BYTE的最大值:

127

程序TestJava3_3列出了各种整数类型的最大值,通过它的运行,读者可以了解到Java对于整数的最大值、最小值的规定。

(维信科技,山西最专业的IT实训)读者可以自己改写程序,输出一下最小值。

3.1.3.1.3溢出的发生

当整数的数据大小超出了可以表示的范围,而程序中又没有做数值范围的检查时,这个整型变量所输出的值将发生紊乱,且不是预期的运行结果。

在下面的程序范例中,声明了一个整型的数,并把它赋值为整型所可以表示范围的最大值,然后将它分别加1及加2。

范例:

TestJava3_4.java

01//整数值如果超出了自己所可以表示范围的最大值,会出现溢出

02publicclassTestJava3_4

03{

04publicstaticvoidmain(Stringargs[])

05{

06intx=java.lang.Integer.MAX_VALUE;//得到整型的最大值

07

08System.out.println("x="+x);

09System.out.println("x+1="+(x+1));

10System.out.println("x+2="+(x+2));

11}

12}

输出结果:

x=2147483647;x+1=-2147483648;x+2=-2147483647

当最大值加上1时,结果反而变成表示范围中最小的值;当最大值加上2时,结果变成表示范围中次小的值,这就是数据类型的溢出。

读者可以发现,这个情形会出现一个循环,若是想避免这种情况的发生(维信科技,山西最专业的IT实训),在程序中就必须加上数值范围的检查功能,或者使用较大的表示范围的数据类型,如长整型。

当声明了一整数i,其表示的范围为-2147483648~2147483647之间,当i的值设为最大值2147483647,仍在整数的范围内,但是当x加1或加2时,整数x的值反而变成-2147483648和-2147483647,成为可表示范围的最小及次小值。

上述的情形就像计数器的内容到最大值时会自动归零一样。

而在整数中最小值为-2147483648,所以当整数x的值最大时,加上1就会变成最小值-2147483648,也就是产生了溢出。

可以参考图3-3来了解数据类型的溢出问题。

图3-3数据类型的溢出

为了避免int类型的溢出,可以在该表达式中的任一常量后加上大写的“L”,或是在变量前面加上long,作为强制类型的转换。

以TestJava3_5为例,在下面的程序中加上防止溢出的处理,为了让读者方便比较,特地保留一个整数的溢出语句。

范例:

TestJava3_5.java

01//下面的这段程序当整型发生溢出之后,用强制类型进行转换

02publicclassTestJava3_5

03{

04publicstaticvoidmain(Stringargs[])

05{

06intx=java.lang.Integer.MAX_VALUE;

06

08System.out.println("x="+x);

09System.out.println("x+1="+(x+1));

10System.out.println("x+2="+(x+2L));

11System.out.println("x+3="+((long)x+3));

12}

13}

 

输出结果:

x=2147483647

x+1=-2147483648

x+2=2147483649

x+3=2147483650

程序说明:

1、第6行声明int类型的整数变量x,并赋值为整数最大值,即2147483647。

2、第8行输出x的值,即:

2147483647。

3、第9行输出x+1的值,此时溢出发生,运行结果变成-2147483648。

4、第10行输出x+2的值,为了避免溢出发生,在表达式的常量部分2后加上L,执行结果变成2147483649。

5、第11行输出x+3的值,为了避免溢出发生,在表达式的整数部分x之前加上long,执行结果变成2147483650。

由上面的程序可知,处理int类型的溢出,可以利用强制类型转换方式。

但是对于long类型的溢出,就没有处理办法了,此时就需要在程序中加上变量值的界限检查,在运行时才不会发生错误。

3.1.3.2字符类型

字符类型在内存中占有2个字节,可以用来保存英文字母等字符。

计算机处理字符类型时,是把这些字符当成不同的整数来看待(维信科技,山西最专业的IT实训),因此,严格说来,字符类型也算是整数类型的一种。

在计算机的世界里,所有的文字、数值都只是一连串的0与1。

这些0与1对于设计者来说实在是难以理解,于是就产生了各种方式的编码。

它们指定一个数值来代表某个字符,如常用的字符码系统ASCII。

虽然各类的编码系统合起来有数百种之多,却没有一种是包含足够的字符、标点符号及常用的专业技术符号。

这些编码系统之间可能还会有相互冲突的情形发生,也就是说,不同的编码系统可能会使用相同的数值来表示不同的字符,在数据跨平台的时候就会发生错误。

Unicode就是为了避免上述情况的发生而产生的,它为每个字符制订了一个唯一的数值,因此在任何的语言、平台、程序中都可以安心地使用。

Java所使用的就是Unicode字符码系统(维信科技,山西最专业的IT实训)。

举例来说,Unicode中的小写a是以97来表示,在下面的程序中可以看到,声明字符类型的变量ch1、ch2,分别将变量ch1的值设为97,ch2的值设为字符a,再输出字符变量ch1及ch2的内容。

范例:

TestJava3_6.java

01//字符类型也可以直接赋给数值,下面的这段程序就是采用这种赋值方式

02publicclassTestJava3_6

03{

04publicstaticvoidmain(Stringargs[])

05{

06charch1=97;

07charch2='a';

08

09System.out.println("ch1="+ch1);

10System.out.println("ch2="+ch2);

11}

12}

 

输出结果:

ch1=a

ch2=a

给字符变量在赋值可以使用数值和字符,它们都可以使程序正确地运行。

要注意的是,字符要用一对单引号('')括起。

举例来说,想在程序中输出一个包括双引号的字符串时(维信科技,山西最专业的IT实训),可把字符变量赋值为转义字符,再将它输出来,也就是说,在程序中声明一个字符类型变量ch,然后把ch设置为\",再进行输出的操作。

或者,也可以直接在要输出的字符串中加入特殊的转义字符。

表3-3为常用的转义字符:

表3-3常用的转义字符

转义字符

所代表的意义

转义字符

所代表的意义

\f

换页

\\

反斜线

\b

倒退一格

\'

单引号

\r

归位

\"

双引号

\t

跳格

\n

换行

以下面的程序为例,将ch赋值为“\"”(要以单引号(')包围),并将字符变量ch输出在显示器上,同时在打印的字符串里直接加入转义字符,读者可自行比较一下两种方式的差异。

范例:

TestJava3_7.java

01//下面这道程序表明了转义字符的使用方法

02publicclassTestJava3_7

03{

04publicstaticvoidmain(Stringargs[])

05{

06charch='\"';

07

08System.out.println(ch+"测试转义字符!

"+ch);

09System.out.println("\"helloworld!

\"");

10}

11}

输出结果:

"测试转义字符!

""helloworld!

"

不管是用变量存放转义字符,或是直接使用转义字符的方式来输出字符串,程序都可以顺利运行。

由于使用变量会占用内存资源(维信科技,山西最专业的IT实训),似乎显得有些不妥;当然也可以不必声明字符变量就可以输出转义字符,但如果在程序中加上太多的转移字符,以至于造成混淆而不易阅读时,利用声明字符变量的方式就是一个很好的选择。

3.1.3.3浮点数类型与双精度浮点数类型

在日常生活中经常会使用到小数类型的数值,如身高、体重等需要精确的数值时,整数就不能满足程序设计者的要求了。

在数学中,这些带有小数点的数值称为实数,在Java里,这种数据类型称为浮点数类型(float),其长度为4个字节,有效范围为-3.4×1038到3.4×1038。

当浮点数的表示范围不够大的时候,还有一种双精度(double)浮点数可供使用。

双精度浮点数类型的长度为8个字节,有效范围为-1.7×10308到1.7×10308。

浮点数的表示方式,除了指数的形式外,还可用带有小数点的一般形式来表示。

举例来说,想声明一个double类型的变量num与一个float类型的变量sum,并同时给sum赋初值3.0,可以在程序中做出如下的声明及设置:

doublenum;//声明sum为双精度浮点型变量

floatsum=3.0f;//声明sum为浮点型变量,其初值为3.0

声明之后,Java即会在可使用的内存空间中,寻找一个占有8个字节的块供num变量使用,其范围在-1.7×10308到1.7×10308之间,寻找另一个占有4个字节的块供sum变量使用,而这个变量的范围只能在-3.4×1038到3.4×1038之间。

在此例中,sum的初值为3.0。

下列为声明与设置float与double类型的变量时应注意的事项:

doublenum1=-6.3e64;//声明num1为double,其值为-6.3×1064doublenum2=-5.34E16;//e也可以用大写的E来取代

floatnum3=7.32f;//声明num3为float,并设初值为7.32f

floatnum4=2.456E67;//错误,因为2.456×1067已超过float可表示的范围

值得一提的是,使用浮点型数值时,默认的类型是double,在数值后面可加上D或是d,作为double类型的标识(维信科技,山西最专业的IT实训)。

在Java中,D或d是可有可无的。

在数据后面加上F或是f,则作为float类型的识别。

若是没有加上,Java就会将该数据视为double类型,而在编译时就会发生错误,错误提示会告诉设计者可能会失去精确度。

下面举一个简单的例子,在下面的程序里,声明一个float类型的变量num,并赋值为3.0,将num*num的运算结构输出到显示器上。

范例:

TestJava3_8.java

01//下面这道程序说明了浮点数类型的使用方法

02publicclassTestJava3_8

03{

04publicstaticvoidmain(Stringargs[])

05{

06floatnum=3.0f;

07System.out.println(num+"*"+num+"="+(num*num));

08}

09}

输出结果:

3.0*3.0=9.0

Java也提供了浮点数类型的最大值与最小值的代码,其所使用的类全名与所代表的值的范围,可以在表3-4中查阅:

表3-4浮点数常量的特殊值

float

double

使用类全名

java.lang.Float

java.lang.Double

最大值

MAX_VALUE

MAX_VALUE

最大值常量

3.4028235E38

107976931348623157E308

最小值

MIN_VALUE

MIN_VALUE

最小值常量

1.4E-45

4.9E-324

相同的,在类全名中,可以省去类库java.lang,直接取用类名称即可。

下面的程序是输出float与double两种浮点数类型的最大与最小值(维信科技,山西最专业的IT实训),读者可以将下面程序的输出结果与上表一一进行比较。

范例:

TestJava3_9.java

01//下面这道程序用于取得单精度和双精度浮点数类型的最大、最小值

02publicclassTestJava3_9

03{

04publicstaticvoidmain(Stringargs[])

05{

06System.out.println("float_max="+java.lang.Float.MAX_VALUE);

07System.out.println("float_min="+java.lang.Float.MIN_VALUE);

08System.out.println("double_max="+java.lang.Double.MAX_VALUE);

09System.out.println("double_min="+java.lang.Double.MIN_VALUE);

10}

11}

 

输出结果:

float_max=3.4028235E38

float_min=1.4E-45

double_max=1.7976931348623157E308

double_min=4.9E-324

3.1.3.4布尔类型

布尔(boolean)类

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1