04747 《Java语言程序设计(一)》教材电子版
Java 4747[例1.2]一个简单的小应用程序,用一同颜色显小两行文字:欢迎你学习Java语言。只要认真学习,多上机实习,一定能学好Jaa语言。import java applet.slmport java. awt.kpublic class Example1 2 extends Applet Ipublic void paint(graphics g)ig. setColor( Color.blue);/设置显示的颜色为blueg. drawString(“欢迎你学Java语言”,30,20);g. setcolor( Color.red);//设置显示的颜色为redg. drawstring(“只要认真学习,多上机实习,一定能学好Java语言。”,30,50)个小应用程序也出若干个类组成,其中必须有一个类,它继承系统提供的 Applet类,这个类是小应用程序的主类主类必须是 public的,源文件名必须与小应用程序的主类名相同。上述程序的源文件名必须是 Example_2.java。小应用程序的结构参见3.5节在结束这一节之前,先讨论一下稈序中经常出现的注释。注释是稈序中的说明文字,用于帮助阅读程序,它不是语句,不会影响程序的执行效率。Java语言的注释有三种形式行注释/变量r是贺的半径块注释/以下程序段是采用冒泡排序对数组元素实现从小到大排序*/文档注释/**类 Student是学生类*行注释用于简短地说明前面代码的意义或功能。注释内窣至行末结束,不能跨行。例如:int fontsize-30;//标题字体大小垬注释是多行注释,用于说眀下面程序段的算法、功能等,块注释不可嵌套使用。文档注释能被实用程序 javadoc接受,它能自动生成程序的HM文档。3Java程序的开发过程Jawa程序的廾发过程如图1.1所示。对」Java应用程序,先编写Java源程序,源程序经Java编译器编译后产生码文件,最后由Java解释器解释执行字节码文件。对于小应用程序,先编写源程序,然后经Java编译器编译后,产生字节码文件,最后由Web浏览器解释执行字节码文件以下以使用SUN公司提供的 Java jDK( java Developer’sKit为例,并假设 Java jDh安装在d:\java日录下,则在该目录下还应包含以下几个文件和子目录(1)子目录d:\ java bin,这个子目录是 Java jDK的核心,其中最主要的可执行文件有:1) Javac—编译器2)java--解释器3)jdb--调试器4) appletviewer-- java applet解释器(2)子目录d:\jawa\lib,这个子目录存储的是函数库。编写源稈序时,使用一个文字编辑器,输入源稈序文件,并保冇。键入编译命令,使用Java编译器编译Java源程序。键λ解释命令,通过解释器解释执行Java应用程序的字节码文件。对于小应用程序需通过攴持Jaⅴa的浏览器解释执行字节码文件。设输入前面所述Java程序,源文件名为 Example1_1.java,保存在D:\iava目录下Java编译器的使用格式是:Javac[选项]源文件例如,可用以下命令编译以上输入的Java应用程序:javac d: \java\ Example1 1. java编译时,可能编译器指定选项, java j编译器的选项参见表1-13/177Java 4747选项说明classpath<路径〉引用类的路径衣d<目录〉编译后类文件存放的目录g生成调试信息衣ng不生成调试信息表nowarn关闭编译器警告功能优化类文件verbose显小编译过程中的详细信息Jaa解释器java.exe用来解释执行Java类文件,解释器的使用格式为:java选项]类名[参数]其中,类名指定的类必须是 maino方法的,即是一个Java应用程序对于使用开发环境情况来说,编辑源稈序、编译、执行和调试直接使用环境提供的工具,使开发稈序变得非常简单。例如,使用 Eclipse开发环境。在 eclipse环境下开发Java程序的方法请参见附录F.4标识符和关键字如同别的程序语言一样,Java语言也有基木符号,由基木符号按一定的构词规则构成标识符等基木词汇,再由基木词汇和关键字按语言的句法构成Java程序。1.字符集Java语言使用 Uni code字符集,共有65535个字符,包括:(1)数字符10个(0~9)。(2)英文字母大、小写字符各26个(AZ和az)(3)下划线字符,关元符号。(4)文字字符,(汉字,日文片假名、平假名和朝鲜文字等)。(5)其他用于构成特殊符号的字符集。2.标识符标识符用于命名程序对象。例如,类名、变量名、方法名等。Java语言的标识符可以按以下规则任意命名:(1)由字母(包括英文字母、下划线字符、美元字符、文字字符)和数字字符组成。(2)限定标识符的第一个字符不能是数字符。例如,下列4个字符串都可以个为标识符:Boy$、$63Girl、颜色、小伙子而以下4个字符不能作为标识符:46A、%al、c+2、He1lo前两是因为首字符不合理,后两个含有不允许在标识符中出现的字符。除了按上述规则命名的习惯约定:般变量名、方法名用小写英文字母开头;文字和常数用人写字母命名;类名首字母用人写字母;包名全部用小写字丹。命名习惯是种公共约定,Java语言的语法并没有这种限制,但是培养良好的编程习惯有利于程序维护和协作开发。3.关键字为了表示程序结构、定义和修饰等,Java语言引入一组关键宇,参见附录A。关键字是上些英文单词,在语言中,关键字已经被赋予特定的意义,不能用这些关键字作为标识符命名程序对象。在Java语言中,关键字的作用有以下多个方面:描述程序结构、声明类、定义类旳成员、简单数据类型、值和变量、异常情况处理、实例(对象)的创建和检验、流程控制等。Java语言中所有关键字均由小写字丹组成。每个关键字在程序中出现有特定位置和使用方法的要求。关键字不可以用做变量、方法、类或标号的标识符(名字)。1.5基本数据类型Java语言是强类型语言,每个变量和表达式都有确定的类型,在变量赋值时要进行类型兼容性检验。数据类型可分4/177Java 4747为基本数据类型和非基本数据类型两大类基本数据类型也称为原始数据类型,是系统预先规定的一些常用类型。它们是:整数类型、浮点数(实数)类型、字符(文字)类型、逻辑类型(布尔型)非基本数据类型也称为复合数据类型,是由基本类型组合的新类型。非基本数据类型分为:数组、字符串、类、接本小节只介绍基本数据类型,非基本数据类型将在以后章节中分别介绍1.5.1逻辑类型逻辑类型用关键字 boolean标识,所以也称布尔型。逻辑类型只有貞和假两个值,true表示貞, false表示假。以下是逻辑变量定义的例子:boolean b boolean boo lboolean fIg1,lg2,美丽;/次定义多个变量boolean b1=true,b2= false,丑= false;//定义时可以赋初值逻辑变量用于记录某种条件成立与否,也用语句中作条件判断1.5.2字符类型字符类型用关键字char标识。字符型数据是一个字符,内部表示是字符的 Unicode代码,共用6535个不同的字符。在Java程序中,字符常量有普通字符和转义字符常两种。用单引号括住一个字符,表示一个普通字符常量。例如,’a’、’B’、’$’、’国’。对于被语言用作特定意义的字符,或者不能显式显示的字符,需用转义字符标记它们例如,换行符用n标记,水制表符用\t标记。常用的转义字符的标记方法见表1-2。其中,mn是用八进制代码表示的字符,umnn是用十六进制代码表示的字符。例如:\141表示字母a,wu0061也表示字母a.以下是字符变量定义的例子:char ch; char ch1,ch2,漂亮char ch3=‘A’,ch4=‘家’,丑=’假’;/)定义时可以赋给初值表12转义字符及其含义转义符含义b退格( Backspace键)换行符,光标位置移到下行首回车符,光标位置移到当前行首t水平制衣符(lab键)竖向退格符f走纸换页反斜杠符单引双引号符”nnnn为8进制数字,用八进制数据表示字符的代码unionn为16进制数字,用16进制数扼表示字符的代吗1.5.3整数类型整数是不带小数点和指数的数值数据。由于计算机只能表示整数的一个子集,表达更大范围内的整数需要更多的二进制位,Java语言将整型数据按数值范围大水不同分成四种(1)基本型:用int标识。4个字节,32位,取值范围是-2~2-1,即-21474836482147483647。(2)字节型:用byte标识。1个字节,8位,取值范围是-222-1,即-128~127(3)知整型:用 short标识。2个字节,16位,取值范围是-2"~2-1,即-23768~3276(4)长整型:用1ong标识。8个字节,64位,取值范围是2^21,即923372036854775808L~92337203685477807L每种整数类型处理不同范围的整数值,并且都是带符号的。整型常量冇十进制、八进制和十六进制三种写法。如下面的示例所示1234(|进制),0777(八进制,以数字0廾头),0x3ABC(|六进制,以0x开头,后随数字符和英文A到F),5333或5331(以字母L或1结尾是长整数)。以下是整型变量定义的实例:intI;intx,积;byte字节变量;//冖个字节整型变量,该变量的名为字节变量5/1Java 4747long z,sum;intw-12,len--1230; long big-9876L;//定义同时可以赋初值。5.4浮点数类型浮点数类型也称实型,浮点数是带小数点或指数的数值数据。Java语言的浮点数有单精度和双精度两种。1.单精度型单精度型用 float标识,占4个字节,32位,取值-103103。 float型常是的书写的方法是在实数之后加上字母F或f.例如:23.54f,12389.987F。2.双精度型双精度型用 double标识,占8个字节,64位,取值-10108。 double型常是的书写的方法有两种:种是直接写一个实数,或在实数后面加上字母D或d例如:123.5139、123.5139,123.5139d。另一种是科学计数法,用10的方幂表示(用字符e或E表示幂底10)。例如:123.24e40(科学计数法表示,值为123.24乘10的40次方)以下是浮点数类型变量定义的例子:float x,ydoublev-12.86,u-2431098.987Dfloat u=12. 36f浮点数类型与整数不同,当执行运算时如果岀现某种不正常的状态,浮点薮类型不会抛出异常。例如,如果用0除浮点数类型的变量,则计算结果是一个特别的无限值。习题1.指出Java语言的主要特点和Jaa程序的执行过程。答:主要特点:(1)强类型,(2)编译和解释,(3)自动无用内存回收功能,(4)面向对象,(5)与平台无关,(6)安全性,(7)分布式计算,(8)多线程。Java程序的执行过程:是解释执行。1. Javac[选项]源文件=编译2.java[选项]类名[参数]=执行2.说出开发与运行Java程序的主要步骤3.如何区分应用程序和小应用稈序?4.说出Java源文件的命名规则5.选择一种上机环境,参照实例,编写一个输出“ hello world!”字样的Java程序。6.Java语言使用什么字符集?共有多少个不同的字符?7.Java语言标识符的命名规则是什么8.Java有哪些基本数据类型,它们的常量又是如何书写的?9.指出下列内容哪些是Java语言的整型常,哪些是浮点数类型常量,哪些两者都不是。1)E-4,2)A4233)-1F-31,4)0 XABCL,5).32F31,6)087,7)0xL,8)003,9)0x12.5,10)077,11)11E,12)056,13)0.,14).06/1Java 4747第2章运算和语句本章主要内容(次重点10%)数据运算语句Java程序实例本章重点:算术运算、自增和自减运算、关系运算和逻辑,Java语句以及java程序实例。本章难点:自增和自减运算、位运算和移位运算,whie语句、do… while语句、for语句和Java程序实例。1数据运算在高级语言中,运算由表达式表示。表达式由运算符和运算分量组成,运算分量可以是常量、交量和方法调用。Java语言的基本运算可分成以下几类:赋值运算,算术运算,自增和自减运算,关系运算,逻辑运算,条件运算和字符串连接运算等。2.1.1赋值运算在Java语言中,符号“=”是赋佰运算符,不是“相等”(相等运算符是“=”,见关系运算符的叙述)。赋值运算分为两类:一是简单赋值运算;二是复合赋值运算。1.简单赋值运算简单赋值运算的一般形式如下:变量=表达式赋值运算的执行过程是(1)计算赋值运算符的右端的表达式(2)当赋值运算符两侧不一致时,将表达式值的类型自动转换成变量的类型(3)将表达式的值赋值给变量,即存储到与变量对应的存储单元中。完成一个赋值运算的表达式称为赋值表达式,赋值表达式是宄计算表达式的值,然后将表达式的值赋值给变量。例如,表达式ⅹ-x+1,表小完成表达式x+1的计算,将计算结果赋值给变量x这里的类型转换是指数值数据的类型自动转换,这样的自动转换只能由简单类型向复杂类型转换,不能从复杂的转换成简单的。即如下所小的从左到右转换:by te->short-int->long->float->double例如,以下代码说明int类型能自动转换成 double类型int j=3double y=2. 0j;//j的值为3,y的值为3.0以下则是不正确的代码, double类型不能自动转换成int类型Jaa语言约定赋佰运算也有值,它的值就是赋予变量的值,因此,赋运算的结果可以继续赋值。例如:intdouble y=2. 0y=j=3;//j的值为3,,y的值为3.0赋值运算符结合性“自右至左”,当连续有多上赋值运算时,是从右至左逐个赋值2.复合赋值运算在程疗中,经常遇到在变量现在值的基础上作某种修正的运算。例如这类运算的特点是:变量既要参与运算,又要接受赋值。为避免对冋一个变量的地址重复计算,引入复合赋值运算符。常用的复合赋值运算符有:例如x+=5;//等价」x=x+5ⅹ*=uv;//等价于ⅹ=x*(u+v),这里括号不能省略a=a=b2;//等价于a=a(a=a(b2)记θ为某个双目运算符,复合赋值运算7/177Java 4747xU=e的等效表达式为X=X 0当e是一个复杂表达式时,等效表达式的括号是必需的。2.1.2算术运算算术运算要求运算分量的类型是数值类型的(蹙数类型和浮点数类型)。运算时,只需一个运算分量的是单目运算,需两个运算分量的是双目运算。算术运算的运算符是单目算术运算符:+(取止)、一(取负双目算术运算符:+(加)、一(减)、*(乘)、/(除)、%(求余数)说明(1)加、减、乘、除和求余数运算都是双目运算符,结合性都是从左至右ε取正和取负是单目运算符,结合性是从右至左,其优先级高于+,%等双目运算符。(2)“/”为除法运算符,当除数和被除数均为整数类型数据时,则结果也是整数类型数据。例如7/4的结果为1。(3)“%”为求余数运算符,求余数运算所得结果的符号与被除的符号相同。例如:5%3的结果为2,-5%3的结果为-2,5%-3的结果为2用算术运算符、运算分量和括号连接起来,符合Java语言诰法规则的计算式,称为算术表达式。例如,如果变量ⅹ和y已经被正确声明,并且已绎赋予初值,则以下的式子就是一个正确的算术表达式:X*21y-(x5)2.1.3白增和自减运算自增运算符“+-”和自减运算符“-”是单目运算符,要求运算分量是数值类型的变量。其作用是变量的值增1或减1。这两个运算符与变量结合有以下四种可能形式++i前缀形式,表示在引用变量i之前,先使i加1,以加1后的i值为运算结果。i前缀形式,表示在引用变量i之前,先使i减1,以减1后的i值为运算结果i+后缀形式,表小在收用变量i之后,才使i加1,即以增1前的i值为运算结果。i—-后缀形式,表示在引用变量i之后,才使讠减1,即以减1前的讠值为运算结果例如:i-4:j++i;//i结果为5,j的结果为5i=4;j=i++;/i结果为5,j的结果为4i-4;j--i;//i结果为3,j的结果为3i=4;j=i一;//i结果为3,j的结果为4上述例了说明,对变量采用自增或自减,用前缀形式或用后缀形式,对变量本身来说,效果是相同的,但表达式的值不相同。前缀形式是变量运算之后的新值,后缀形式是变量运算之前的值自增自减运算能使程序更为简洁和高效,但在使用时需注意“++”和“-一”运算的运算只能是变量,不能是常量或表达式。例如,4++或(i+j)+都不是合法的。2.1.4关系运算关系运算用来表达两个表达式值的比较,运算结果是布尔型。有6上关系运算符:(小于)、<=(小于等于)、>(大于)>=(大于等于)、三=(等于)、!三(不等于)关系运算对左两侧的值进行比较,如果比较运算的结果成立,则值为true;不成立为 false上述6个关系运算符的优先级不完全相同。<的优先级高」==,!=。例如,表达式xycy)--(c(u+v)关系运算符的结合方向是自左至右。2.1.5逻辑运算逻辑运算用于描述逻辑表达式,实现连续多个条件的逻辑与、逻辑或、逻辑否定的判定。有3个逻辑运算符:&&(逻辑与)、‖(逻缉或)、!(逻辑否定其中:运算符&&和是双日运算符、运算符!是单目运算符。逻辑运算的操作数必须是布尔型的,结果也是布尔型的。逻辑否定“!”的优先级高于算术运算符的优先级。逻辑与“&&”和逻辑或“”的优先级低于关系运算符的优先8/177Java 4747表2-1是逻辑运算的“真值表”,表中列出当运算分量a和b的值在不同组合情況下,各和逻辑运算的结果。表2-1逻辑运算真值表bba&&btruetruefalsefalsetruetrueruefalsefalsetruefalsetruefalsetruetruefalsefalsetruefalsefaalsetruetruefalsefalse例如>b&&xy等价于(a>b)&(x>y)=b x等价于(a!=b)(x!=y)x=0xy&z>y等价于(x=y)(xy)&(z)Y)!a&&b|x>y&zy)&(z=1|++b<++c。从左到右顺序逻辑或表达式,先计算子表达式+a>=1,变量a的值变为2,艹a=1为true,整个逻辑或表达式的值经为true,不再计算右边的子表达式++b<++c。因而变量b和c的值不变,仍为1。在具体编写程序时,也应利用以上性质。用逻辑与表达两个条件必须同时成立时,如果条件不成立,条件2的值不便计算,则逻辑表达式应与成:条件1&&条件2避免在条件1不成立情下,计算条件2。例如,要表示y/x>2和x!=0同时成立,应写成x!-0&&y/x>2当x为0时,不会y/x。而写成:y/x>2&kx!0是不正确的,因为当x为0时,不能计算y/x。对于逻辑或也有类似情况。2.1.6条件运算条件运算是一个三目运算,一般形式如下逻辑表达式?表达式1:表达式2条件运算的执行过程是:(1)计算逻辑表达式(2)如果逻辑衣达式的值为true,则计算衣达式1,并以表达式1的值为条件运算的结果(不再计算衣达式2)3)如果逻辑表达式的为 false,则计算表达式2,并以袤达式2的佰为条件运算的结果(未计算表达式1)。例如:如果x>y条件为true,则上述表达式取x+5的值,否则取y-4的值。条件运算符(?:)的优先级高于赋值运算符,低于逻辑运算符,也低于关系运算符和算术运算符。例如:max=x>y?x-5:y-4等价于:mx=((x>y)?x+5:(y-4)条件运算符的性为“自右至左”。例如9/177Java 4747X>y? x:u?V?u:V等价于:x>y?x:(u>v?u:v)条件表达式的返回值类型由表达式1和表达式2的类型确定。如果表达式1值的字节数比表达式2的值的字节数多,则条件表达式值的类型与表达式1的类型相同:反之,则与表达式2的类型相同。2.1.7其他运算除前面介绍的运算外,还有许多运算,本节只介绍位运算和移位运算。位运算和移位运算实现对二进制位串数据的运算,主要应用于与计算机内部表示直接有关的运算,读者可以珧过这些内容2.2语句个计算过程由一系列计算步骤组成。一个计算步骤或用一个,或用一个计算流程控制实现。程序语言用描述计算步骤。在Java语言中,语句分为基本语句、控制结构语句以及 package语句和 import语句等。其中控制结构语句包括复合语句、i'语句、 switch语句、循坏语句和try… catch语句。其中循环语句有whie语句、do… while语句、for语句三种。2.2.1基本语句基本语句主要有表达式语句、空语句、 break语句、 continue语句、 return语句等。基本语句都以分号为结束符。1.表达式语句在赋值表达式、自增自减表达式和方法调用表达式之后加上分号即变成语句,称它们是表达式语句。例如,表达式k+-”,写成“k++;”就是一个表达语句。最典型的表达式语句是赋值表达式构成的话句,譬如k=k12;Iml赋值表达式语句在程序中经常使用,习惯又称为赋值语句。另一个典型的表达式语句是方法调用表达式之后接上分号方法调用;该表达式语句虽未保留方法调用的返回值,但方法调用会引起实参向形参传递信息和执行方法伓,将使变量获得输入数据;调用输出方法使程序输岀讣算结果等。2.空语句空语句是只有个分号的语句,其形式为实际上,空语句是什么也不做的语句。语言引入空语句是出于以下实用上的考虑。例如,循环控制结构的句法需要个语句作为循坏体,当要循坯执行的动作由循坏控削部分完成时,就不需要有一个实际意义的循坏体,这时就需要用一个空语句作为循环体。另外,语言引入空语句使语句序列中连续出现多个分号不再是一种错误,编译系统遇到这种情况,就认为单独的分号是空语句。3. break语句brek语句必须岀现在多嵱按值选择结枃或循环结枃中, break语句的执行强制结朿它所在的控制结构,让程序从这个控制结构的后继语句继续执行。 break语句的书写形式是breakbreak语句的应用,将在介绍 switch语句和循环语句时作进一步讨论。4. continue语句contlπue语句只能出现在循环结构中,cω ntinue语句的执行将忽略它所在的循坏体中在它之后的语句。如果continue语句在 while语句或do… while语句的循环体中,使控制转入对循环条件表达式的计算和测试;如果岀现在for语句的循环体中,使控制转入到对for控制结构的衣达式3的求值。简单地说, continue语句提早结朿当前轮次循环,进入下一轮次循环。 continue语句的书写形式是continuecontinue语句的应用,将在循坯语句中进一步讨论5. return语句return语句只能出现在方法体中, return语句的执行将结束方法的执行,将控制返回到方法调用处。 return语句有两种形式:return;或 return表达式;第种形式只有用于不返回结果的方法体中,第二种形式用于有返回结果的方法体中。执行第二和形式的 return语10/177
下载地址
用户评论