版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章Java语言2.1Java程序语法与控制
2.2Java基本数据类型
2.3Java类
2.4Java文件操作
2.5在命令行窗口中运行Java程序2.6Java图形界面2.7小结
2.1Java程序语法与控制
Java程序文件的扩展名为 .java,每个程序文件中只能包含一个public类,即公有类,public是可见性修饰符,用public定义的类、方法(或称函数)或数据域(或称变量)可以被任何类访问。Java程序的入口点是main方法,定义在公有类中,main方法的原型为
publicstaticvoidmain(String[]args){}
与其他高级语言程序设计相同,Java语言程序具有三种基本的程序控制方式,即顺序、分支(或选择)和循环执行方式,在main方法中可使用三种程序控制方式进行程序设计。2.1.1顺序方式
顺序方式是指Java语句按照先后顺序依次执行并得到计算结果的程序执行方式,这是Java语言的总体执行方式(由于类只是数据结构,因此类中定义成员数据和方法时不分先后,成员方法中的变量必须先定义后使用)。下面的例2.1为输入一个摄氏温度值,将其转化为华氏温度值。通过该例详细介绍借助Eclipse编写Java程序的步骤,本章中所有实例的创建步骤也都与此类似,因此后面实例的创建步骤就省略了。
例2.1
摄氏温度值转化为华氏温度值。
摄氏温度值转化为华氏温度值的关系式为
Fah=1.8×Cel+32
上式中,Fah表示华氏温度,Cel表示摄氏温度。下面分步骤介绍该实例的实现方法。
S1.创建工程ex02_01
在Eclipse软件主界面(见图1-7)中,选择菜单项“File|New|JavaProject”,弹出如图2-1所示界面。在图2-1中输入工程名为“ex02_01”,保存在目录“D:\myWorkspace\ex02_01”下,然后直接点击“Finish”按钮完成创建工程向导,如图2-2所示。在图2-2中,显示了空的工程ex02_01,其中包含一个“src”标签,该标签下存放Java源程序文件,此外,还包含了JRESystemLibrary,即Java程序运行环境库。在图2-2界面中,点击菜单项“File|New|Class”即可添加新类,进入图2-3所示界面。图2-1新建Java工程界面图2-2空的工程ex02_01图2-3创建新Java类在图2-3中输入包名为“cn.jxufe.zhangyong”,包(Package)的名称要求具有全球唯一性。包是类的容器,允许不同包中存在相同名称的类。包类似于C#语言中的命名空间,在引入了包的概念后,不同的程序员在命名类名时可以更加随意且不会导致类名冲突。这里的包名“cn.jxufe.zhangyong”表示“中国.江西财经大学.张勇”,包名一般从大地名至小地名依次书写,名称间用“点号”分开,以这种命名规范命名的包可有效地防止同名包的出现,本章中的所有实例均使用包名“cn.jxufe.zhangyong”,因此必需保证这个包里面没有同名的类出现。然后,输入类名为“MyEx0201”,类的命名习惯要求首字母大写。接着,点击“Finish”按钮完成创建Java类向导,进入图2-4所示界面。图2-4“Helloworld!”程序代码
S2.控制台显示“Helloworld!”
在图2-4中输入Java程序代码如下:
1packagecn.jxufe.zhangyong;
2
3publicclassMyEx0201{
4 publicstaticvoidmain(String[]args){
5 System.out.println("Helloworld!");
6 }
7}
S3.摄氏温度转换为华氏温度的示例程序
图2-4是一个完整的程序,输出“Helloworld!”信息,为了实现摄氏温度转换为华氏温度的功能,改写程序文件MyEx0201.java的代码如下:
1packagecn.jxufe.zhangyong;
2
3publicclassMyEx0201{
4 publicstaticvoidmain(String[]args){
5 doubleCel=36.5;
6 doubleFah;
7 Fah=1.8*Cel+32.0;
8 System.out.println(Cel+"deg.C="
9 +Fah+"deg.F.");
10 }
11}
上述代码中,第5行定义双精度浮点数变量Cel并初始化为36.5,第6行定义双精度浮点数变量Fah,第7行根据公式计算新的Fah的值,第8、9行调用方法System.out.println在控制台输出信息“36.5deg.C=97.7deg.F.”,如图2-5所示。
图2-5所示工程是一个简单的Java顺序执行程序示例,第5~9行的语句按先后顺序依次执行,程序的顺序执行方式是最基本的程序控制方式。图2-5温度转换程序及输出结果2.1.2分支方式
分支方式是根据条件关系式的逻辑值进行判断,有条件地执行某些语句组。有两种条件语句,即if-else语句和switch语句,其基本语法分别为:
if(布尔表达式){
布尔表达式为真时执行的语句组;
}
else{
布尔表达式为假时执行的语句组;
}
和当表达式的值不等于上述的“值1”、“值2”、…、“值N”时执行的语句组;
}
if语句和switch语句均可以嵌套,下面的例2.2和例2.3分别介绍了这两种条件语句的使用方法。
例2.2
求解一元二次方程的根。
已知一元二次方程ax2 + bx + c = 0,任意输入三个系数a、b和c,计算未知数x的值。新建工程ex02_02,在工程ex02_02中新建类MyEx0202(对应的文件名为MyEx0202.java,即类名与文件名相同,所在的包为cn.jxufe.zhangyong)。MyEx0202.java文件的程序代码如下所示:在C语言中使用库函数时需要借助于include关键字,在C#中使用use关键字。在Java程序中,如果需要调用其他包中的类所包含的公有方法和数据时,必需借助于import关键字导入这些包和类,如上述程序段中的第3~5行。第3~4行为第20~21行的方法服务,第5行为第12行的方法服务。导入一个包(和包中的某个类)非常方便,例如,在程序中书写了“Scannerscanner=newScanner(System.in);”语句后,会自动提示程序员导入java.util.Scanner,只需要在提示的右键弹出菜单中点一下就会在第5行添加“importjava.util.Scanner;”语句。因此,所有的import语句都是用这种方法创建的,不需要程序员书写,比起C语言的“#include”包括头文件语句更加方便。上述程序段的main方法代码为第9~34行。第9行定义三个double型变量a、b和c;第10行定义了一个具有两个元素的double型数组x,必须记住Java这种定义数组的方法,使用new关键字为元素个数开辟空间;第11行在控制台输出提示信息“Input3coefficients:”;第12行用类Scanner创建一个scanner对象,同时用类Scanner的构造方法对它进行初始化(在第2.3节中将详细介绍构造方法);第13~15行调用scanner对象的方法nextDouble从控制台读入双精度浮点数,并分别赋给变量a、b和c;第16行判断a的绝对值是否小于0.00000001,即判断a是否为0。如果表达式Math.abs(a)<1e-8为真,则认为a = 0,于是第17行输出“Notaquadraticequation!”,说明不是一元二次方程;否则,程序执行第19~34行代码。第20~21行用类DecimalFormat创建一个对象df;第21行调用对象df的方法setMaximumFractionDigits设置小数显示时保留2位小数,即当调用对象df的方法format时,将方法format的输入参数设置为只显示2位小数(见第25行)。第22行判断b*b>=4*a*c是否为真,如果为真,则方程的两个根x[0]和x[1]均为实数(数组的下标从0开始索引);第23~24行计算两个根的值;第25~26行在控制台输出两个根的值,为使输出的根只保留两位小数,使用方法df.format格式化输出。如果b*b>=4*a*c为假,则执行第29~32行代码,此时两个根为复数,用x[0]存放根的实部,x[1]存放根的一个虚部,第31~32行在控制台输出这两个复根。图2-6和图2-7给出了例2.2的两次执行结果,说明程序工作正常。其中使用if-else语句的两级嵌套实现了一元二次方程的求根运算。图2-6实例2.2运行结果:a = 2、b = 5和c =-4图2-7实例2.2运行结果:a = 3、b = 7和c = 6
例2.3
人民币兑换外币计算。
假设已知英镑(pound)、港币(HKD)、美元(dollar)、日元(yen)、欧元(euro)和新加坡元(SGD)对人民币的汇率分别为10.62、0.84、6.53、0.078、9.42和5.22,输入人民币可计算得到其兑换的外币值。新建工程ex02_03,在工程ex02_03中新建类MyEx0203(对应的文件名为MyEx0203.java,所在的包名为cn.jxufe.zhangyong)。MyEx0203.java文件的程序代码如下所示:图2-8和图2-9给出了例2.3的两次执行结果,分别是将1000元人民币兑换成153.14美元和将2000元人民币兑换为383.14新加坡元,这说明程序运行正常。例2.3说明了switch语句的用法,从例2.3可以体会到,switch语句实现的程序控制,if-else语句也能实现。图2-8例2.3程序运行结果(1000元兑换美元)图2-9例2.3程序运行结果(2000元兑换新加坡元)2.1.3循环方式
Java语言提供了三种循环控制语句,即while型、do-while型和for型循环,这三种循环控制语句与C语言的语法相同,其基本语法如下:
while(条件表达式){
条件表达式为真时执行的语句组(即循环体);
}
Do{
循环体(先执行一次后判断条件表达式的值,如果为真则再次执行循环体;与while型的区别在于当条件表达式为假时,循环体可被执行一次);图2-10为例2.4的执行结果。图2-10例2.4程序运行结果
例2.5
计算九九乘法表。
例2.5使用for型循环方式计算九九乘法表。新建工程ex02_05,在工程ex02_05中新建类MyEx0205(对应文件名为MyEx0205.java,所在的包为cn.jxufe.zhangyong)。MyEx0205.java文件的程序代码如下所示:上述代码的输出结果如图2-11所示。第5~10行嵌套了两个for型循环,外层的for型循环中i从1步进到9,步长为1,表示图2-11中的第1至9行;第6~8行的for型循环从1步进到i,步长为1,表示图2-11中的第1至i列。九九乘法表中第i行第j列的乘法算式为计算i和j的乘积,如图2-11所示。若i等于6,j等于5,即第6行第5列的式子为“6*5=30”,于是循环执行第7行输出九九乘法表中的每个乘法式子。第9行表示每输出一行后添加一个回车换行。图2-11例2.5计算的九九乘法表2.1.4异常处理
异常处理也是一种程序控制方式。当程序运行过程中产生了错误(例如,数值溢出、输入无效、数组越界等),即所谓的运行错误,往往会导致整个程序运行突然中断或退出,而程序员无法知道程序退出的原因。异常处理的作用在于当程序运行发生错误时,捕捉运行错误类型(称为异常),并能保证程序仍然正常执行。Java异常处理的功能十分强大,其基本用法为:当try“被监视的语句组”中的某条语句发生异常时,其后的程序不再执行,而是跳到catch语句处,依次判断各个catch的异常类型是否与发生的异常相匹配,如果匹配,则将发生的异常(对象)赋给catch语句,执行该catch块中的语句。无论异常是否发生,都要执行finally语句块中的全部语句,这部分语句一般用作内存释放和关闭已打开的文件对象等。
例2.6
整数除法(除以0)和输入类型不匹配异常。
从控制台输入两个整数,计算它们的商。新建工程ex02_06,在工程ex02_06中新建类MyEx0206(对应文件名为MyEx0206.java,所在的包为cn.jxufe.zhangyong)。MyEx0206.java文件的程序代码如下所示:图2-12~图2-14显示了例2.6的运行结果,图2-12为正常运行,图2-13因为输入出现了浮点数12.2而发生输入类型不匹配异常,图2-14因输入除数为0而发生除以0异常。图2-12例2.6运行结果(无异常)图2-13例2.6的运行结果(输入类型不匹配异常)图2-14例2.6的运行结果(除以0异常) 2.2Java基本数据类型
2.2.1数值
数值类型包括整数类型和浮点数类型,整数类型包括四类,即字节byte、短整型short、整型int和长整型long,依次占有存储字节数为1、2、4和8;浮点数类型包括两类即单精度浮点数型float和双精度浮点数型double,分别占有存储字节数为4和8。double和float都用来表示小数,为了区分这两种表示,float型小数后面需要添加“f”或“F”,即0.53F被视为float型,而0.53被视为double型。各种数值类型间可以进行强制类型转换,这一点与C语言相同,例如,“inti=(int)15.3;”将double型数15.3强制转化为整型数15。强制类型转换也称为显式转换,当一个表达式中出现了int型和double型时,则自动将int型转换为double型进行计算,这种类型转换称为隐式转换,例如,3/6.0将得到0.5。
与数值类型数据相关的Java算术运算符包括加、减、乘、除和求余,即“+”、“-”、“*”、“/”和“%”;Java赋值运算符为“=”;与C语言相同,Java语言支持自增和自减运算符,即“++”和“--”;Java语言支持复合赋值运算符,即“+=”、“-=”、“*=”、“/=”和“%=”。注意,复合运算符中的两个基本运算符间没有空格,例如“+=”是不正确的复合运算符。
例2.7
数值类型演示。
新建工程ex02_07,在工程ex02_07中新建类MyEx0207(对应文件名为MyEx0207.java,所在的包为cn.jxufe.zhangyong)。MyEx0207.java文件的程序代码如下所示:上述代码中,第5行定义byte型变量a1并初始化为0xF1(十六进制数形式),由于Java不支持无符号型数,因此a1为-15。第6行定义short型变量a2并初始化为0xF001,此时a2等于-4095。第7行定义整型变量a3,由于a3占4个字节,这里0xF001相当于0x0000F001,因此a3为61441。第8行定义长整型变量a4,这里使用隐式转换,a4等于61441。第9行定义double型变量b1并赋初值3/6.0,即0.5。第10行定义float型变量b2并赋初值为15.3000001。第11行定义double型变量b3并赋初值15.3000001。第14~15行输出各个整型数变量的值。第16~17行输出各个浮点数变量的值,如图2-15所示。从图2-15中可以看出,float型数b1的精度比double型数b2的精度低,b1无法精确识别15.3000001。图2-15例2.7输出结果2.2.2字符
Java支持Unicode码,即用两个字节表示的字符,Unicode码(常被译为统一码)包含了ASCII码,几乎可以表示地球上现有的所有人类语言符号。因此,一个Java字符占2个字节。定义的字符用两个单引号括起来,例如“charch1='A';”。如果字符不是ASCII,可以使用该字符的Unicode码值来定义字符,例如“charch2='\u03b1';”,这里的03b1是十六进制形式表示的码值。与C语言相同,字符型数据支持自增和自减运算符。字符型数据与数值型数据可以相互转换,一般借助于显式转换方式。
例2.8
大写字母转换为小写字母。
例2.8执行结果为:输入一个大写字母,输出其对应的小写字母。新建工程ex02_08,在工程ex02_08中新建类MyEx0208(对应文件名为MyEx0208.java,所在的包为cn.jxufe.zhangyong)。MyEx0208.java文件的程序代码如下所示:上述代码中,第7行定义了一个控制台输入对象scanner;第8行在控制台输出提示信息“Inputaletter:”;第9行从控制台读入字符串的值并赋给字符串变量str,scanner不支持字符的读入;第10行从字符串str中提取第一个字符,赋给字符变量ch,这里使用了字符串的方法charAt。第11~13行判断字符ch是否为大写字母,如果第11行为真,即字符ch为大写字母,则第12行将其转化为小写字母。第14行输出转化结果,如图2-16所示。图2-16例2.8运行结果
Java语言中常用的转义字符如表2-1所示。表2-1Java语言常用转义字符2.2.3字符串
Java中声明字符串变量时使用String关键字(实际上是String类),字符串声明时需要初始化,字符串类型为引用类型(即字符串变量是指向字符串的地址),一旦创建后就不能更改字符串的值(注:可以在字符串尾部添加字符串)。如果要创建一个可以改变内容的字符串,需要借助StringBuffer类或StringBuilder类,这两个类都通过操作字符缓冲区来更改字符串的值,常用的方法有append、insert、substring、charAt、setLength、delete和toString等,它们分别表示追加字符串、插入字符串、定位部分字符串、定位字符串中的字符、设置字符串缓冲区的长度、删除部分字符串和返回字符串。
例2.9
字符串操作。
新建工程ex02_09,在工程ex02_09中新建类MyEx0209(对应文件名为MyEx0209.java,所在的包为cn.jxufe.zhangyong)。MyEx0209.java文件的程序代码如下所示:例2.9的运行结果如图2-17所示。图2-17例2.9运行结果2.2.4布尔数
Java语言中,逻辑真为true,逻辑假为false,而且只有这两个是布尔数。Java语言的布尔运算符如表2-2所示,参与布尔运算符的只能是布尔数。表2-2布 尔 运 算 符
Java语言的关系运算符如表2-3,关系运算符的结果为布尔数。表2-3关 系 运 算 符2.2.5数组
Java语言中定义数组的方法为“数据类型[]数组名;”,例如定义包含20个元素的double型一维数组arr,其定义为“double[]arr=newdouble[20];”或“double[]arr;arr=newdouble
[20];”,这一点与C++相同。也可以在定义数组时对数组进行初始化,例如,“double[]arr1={12.3,2.6,7.9,8.8};”,相当于语句组“double[]arr1=newdouble[4];arr1[0]=12.3;arr1[1]=
2.6;arr1[2]=7.9;arr1[3]=8.8;”。Java数组的下标从0开始索引。
Java语言也可以定义高维数组,例如,“double[][]arr2=newdouble[4][5]”定义了一个4行、5列的二维数组,第一个元素的脚标为[0][0],最后一个元素的脚标为[3][4]。对于Java数组,可以使用foreach循环方法遍历数组中的所有元素,可以借助Arrays类中的方法处理数组元素,如例2.10所示。
例2.10
数组演示实例。
例2.10的功能为:产生10个随机数,对它们按从小到大的顺序进行排序,并计算它们的和。新建工程ex02_10,在工程ex02_10中新建类MyEx0210(对应文件名为MyEx0210.java,所在的包为cn.jxufe.zhangyong)。MyEx0210.java文件的程序代码如下所示:上述代码中,第8行定义double型数组arr,具有10个元素。第9行使用类Random定义随机数对象rnd,随机数种子为10000(即随机数迭代的起始值),指定随机数种子后,每次运行程序产生的随机数序列是相同的。第11~14行在for循环中为数组arr的每个元素赋值,同时把该元素输出到控制台上,rnd.nextDouble()方法产生0~1的浮点数随机数,因此((int)(rnd.nextDouble()*10000))/100.0产生0.00~100.00的随机数。第16行调用Arrays类的sort方法对数组arr进行排序。第18~20行输出排序后的数组,这里是一种新的for循环形式,即对于arr中的每个一元素(elem),都执行第19行的语句,即输出到控制台。同样,第23~25行也使用这种for循环形式计算数组arr中所有元素的和,这种for循环称为foreach循环。例2.10的输出结果如图2-18所示。图2-18例2.10输出结果 2.3Java类
Java是面向对象的高级程序设计语言,类是其基本的数据结构。类也被称为一种程序设计思想,很多学生觉得类难以掌握,很大程度上是受了原来所学的面向过程程序设计思想的影响,而不能完全接收面向对象程序设计的新方法。而这种新方法却大大增强了程序的可扩展性、鲁棒性和可重用性。类是一种包含数据和方法的集合体数据类型,即所谓的“类封装了数据和方法”。访问类中的数据和方法必须遵循类的“访问控制”要求。一般地,类中的数据和方法有三种访问控制类型,即公有的、保护的和私有的,依次采用关键字public、protected和private进行修饰。当不加访问控制修饰符时,相当于私有类型,但是同一个包内可以访问。类中的数据和方法的访问控制权限如表2-4所示。表2-4类中数据和方法的访问控制权限2.3.1类与对象
类使用关键字class定义,Java语言中建议类名的首字母大写。例2.11演示了类和对象的定义与实现方法。
例2.11
类与对象应用演示。
例2.11中定义了一个表示圆的属性的类,类名为MyCircle,将圆的半径设为私有数据成员,求圆的周长和面积作为两个公有方法。新建工程ex02_11,在工程ex02_11中新建类MyCircle(对应文件名为MyCircle.java,所在的包为cn.jxufe.zhangyong),还要在工程ex02_11中新建类MyEx0211(对应文件名为MyEx0211.java,所在的包为cn.jxufe.zhangyong)。其中,文件MyCircle.java的代码如下所示:图2-19例2.11运行结果第23~26行在控制台输出计算结果,如图2-19所示。2.3.2继承与多态
Java语言中,每个子类只能从一个父类继承。当子类与父类建立了继承关系后,子类将拥有父类所有可以访问的数据和方法(除父类的私有数据和私有方法外的成员),即父类的这些方法可以被子类的实例(对象)调用;但是子类新添加的方法,父类的实例(对象)则不能调用。可以认为子类是父类添加了新特性后的特例,每个子类的实例都是父类的实例,即参数中以子类实例出现的地方,均可以输入父类实例,称之为多态。
例2.12演示了继承与多态的情况,实例中建立了一个平面图形类MyPlanefigure,从该类中派生出类MyCircle和类MyRectangle。
例2.12
继承与多态演示。
新建工程ex02_12,在工程ex02_12中新建三个类,依次为MyPlanefigure、MyCircle和MyRectangle,对应的文件名分别为MyPlanefigure.java、MyCircle.java和MyRectangle.java,所在的包为cn.jxufe.zhangyong。还要在工程ex02_12中新建类MyEx0212,对应文件名为MyEx0212.java,所在的包为cn.jxufe.zhangyong。其中,MyPlanefigure.java文件的代码如下所示:例2.12的执行结果如图2-20所示。图2-20例2.12程序运行结果2.3.3接口
接口中只能声明公有的抽象方法和常量,因此在接口中声明抽象方法时,省略publicabstract关键字;在声明常量时,省略publicstaticfinal等关键字。接口不但可以继承其他接口,而且可以多重继承,即一个接口可继承多个父接口。同样,类继承接口时,也可以多重继承即一个类可以继承多个接口。当某个类继承了接口后,必须在类中实现该接口的所有抽象方法。
下面在例2.12的基础上,添加一个接口MyComparable,其中声明了一个抽象方法compareTo,表示比较两个图形的面积;并添加一个新类MyComparableRectangle。该类继承了类MyRectangle和接口MyComparable,实现了接口MyComparable中的抽象方法。
例2.13
接口应用演示。
新建工程ex02_13(实际上是在工程ex02_12基础上修改得到),在工程ex02_13中新建四个类和一个接口,即MyPlanefigure、MyCircle、MyRectangle、MyComparableRectangle和MyComparable(使用菜单“File|New|Interface”打开新建接口窗口),对应的文件名分别为MyPlanefigure.java、MyCircle.java、MyRectangle.java、MyComparableRectangle.java和MyComparable.java,所在的包均为cn.jxufe.zhangyong。然后,新建类MyEx0213,对应的文件名为MyEx0213.java,所在的包为cn.jxufe.zhangyong。其中,文件MyPlanefigure.java、MyCircle.java和MyRectangle.java与例2.12中的同名文件内容相同,这里不再列举其源代码。下面罗列了文件MyComparableRectangle.java、MyComparable.java和MyEx0213.java的代码。图2-21例2.13运行结果第26~36为main方法。第27~28行定义了两个MyComparableRectangle类型对象mycomprect1和mycomprect2,并初始化其宽和高分别为12.0、8.9和14.2、7.8。第29行调用compareTo方法比较这个长方形的大小(即比较它们的面积大小),返回值存放在整型变量res中。第30~35行根据res的结果输出比较信息。这里长方形1的面积小于长方形2的面积,因此输出结果为“Rectangle1<Rectangle2”,如图2-21所示。
2.4Java文件操作
Java语言中的操作文本文件与二进制数据文件的类库不同。如果是操作文本文件,首先使用File类定义文件对象,创建文件对象时需要输入文件名,目录分隔符使用“/”,这里的文件对象相当于C语言的文件指针。创建好文件对象后,如果是文本文件的写操作,则使用类PrintWriter创建文件写入对象,使用该对象的方法print等向文件中写入数据;如果是文本文件的读操作,则使用类Scanner创建文件读出对象,使用该对象的方法next等从文件中读出数据。如果是操作二进制文件,创建读或写的二进制文件需要分别借助类FileInputStream和FileOutputStream创建文件对象;再分别借助类DataInputStream和DataOutputStream创建文件读/写对象;最后使用这些对象的方法,例如readInt、writeInt等实现二进制文件的读/写。此外,类FileInputStream和FileOutputStream创建的文件对象也具有字节数据的读/写方法,即使用类FileInputStream和FileOutputStream的对象方法实现的
读/写操作是基于字节数据的,而借助于类DataInputStream和DataOutputStream的对象方法可实现基本数据类型的读/写操作。
例2.14
文本文件的读/写演示。
新建工程ex02_14,在工程ex02_14中新建类MyEx0214,对应的文件名为MyEx0214.java,所在的包为cn.jxufe.zhangyong。在工程所在目录(D:\myWorkspace\ex02_14)下新建目录myfiles。文件MyEx0214.java的代码如下所示:例2.14的执行结果如图2-22所示。打开文件“D:\myWorkspace\ex02_14\myfiles\myex02_14.txt”,其内容如图2-23所示。图2-22例2.14执行结果图2-23文件myex0214.txt的内容
例2.15
二进制文件的读写演示。
新建工程ex02_15,在工程ex02_15中新建类MyEx0215,对应的文件名为MyEx0215.java,所在的包为cn.jxufe.zhangyong。文件MyEx0215.java的代码如下所示:第24~25行分别定义了输入流对象inStream和infile。第26~28行使用与写操作方法writeUTF和writeInt对应的读操作方法,即readUTF和readInt,从文件中读出/写入数据并显示在控制台上,如图2-24所示。
采用数据流方法写入到文件中的数据是二进制格式,文件myscore.dat位于目录“D:\myWorkspace\ex02_15”下,其内容如图2-25所示。图2-24例2.15执行结果图2-25文件myscore.dat的内容 2.5在命令行窗口中运行Java程序
例2.1至例2.15的运行均是在Eclipse环境下运行的。事实上,Java程序可以直接在Windows环境下运行(安装了Java虚拟机)。在Eclipse环境下,选择菜单“File|Export…”,在弹出的菜单中选择“RunnableJARfile”,如图2-26所示,然后点击“Next”按钮进入图2-27所示界面。图2-26Export对话框图2-27可执行文件JAR的设置进入到目录“D:\myWorkspace\ex02_15”下,如图2-28所示,可执行的JAR文件为myEx0215.jar。图2-28ex02_15目录文件在命令提示符工作模式下,如图2-29所示,输入命令“java–jarmyEx0215.jar”,要求JAR文件必须带扩展名 .jar,程序执行结果如图2-29所示。将图2-29的显示结果与图2-24的输出结果对比,可见其运行结果完全相同。因此,这两种运行Java程序的方式是相同的。一般地,也可以直接在图2-28中双击myEx0215.jar图标运行JAR程序文件(需要设置Windows默认的JAR文件运行方式)。图2-29在命令提示符下执行myEx0215.jar文件
2.6Java图形界面
2.6.1事件响应方法
例2.16的程序具有基本的图形用户界面,点击命令按钮时将向控制台输出提示信息。
例2.16
图形界面程序及事件响应演示。
新建工程ex02_16,在工程ex02_16中新建类MyEx0216,对应的文件名为MyEx0216.java,所在的包
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024版个体户店铺租赁合同(标准版)3篇
- 大型公共建筑监理合同(2篇)
- 12 醉翁亭记2024-2025学年九年级语文上册同步说课稿(河北专版)
- 22 文言文二则 书戴嵩画牛(说课稿)-2024-2025学年统编版语文六年级上册
- 2024年汽轮机油技术升级与市场推广合作协议3篇
- 完整交通事故赔偿协议书
- 消防项目合作协议书
- 体育中心场地租赁合同
- 洒水车标准租赁合同
- 三方房产抵债协议书
- 《急危重症护理学》理论考试题库(核心500题)
- 深孔钻床设备点检表
- 四年级科学《运动与摩擦力》说课课件
- 诉讼费退费确认表
- 全球变暖视野下中国与墨西哥的能源现状分析
- 新外研版八年级上册英语全册教案(教学设计)
- 2022年(高级)茶艺师职业资格考试参考题库-下(多选、判断题部分)
- 边坡安全施工组织方案
- 【讲座】新高考文言文命题特点及备考策略
- 熔炼系统冶金计算相关知识
- 《环境监测》土壤环境质量监测方案设计
评论
0/150
提交评论