版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章
Java语言 学习目标与要求2.1Java语言基础2.2Java中不同类型数据之间的转换2.3利用Java进行文件输入/输出2.4窗口应用程序的编制
学习目标与要求1.了解Java语言的特点、用途、语法与程序结构;2.了解Java中不同类型数据之间的转换方法;3.掌握利用Java实现文件输入/输出的方法;4.掌握利用Java编制图形用户界面程序的方法。2.1Java语言基础
2.1.1简单的Java应用程序2.1.2Java应用程序的运行2.1.3Java程序的基本结构、数据类型与运算符2.1.4表达式与基本语句2.1.5类2.1.6对Java源程序的进一步说明2.1.7数组2.1.1简单的Java应用程序一个简单的Java应用程序
语句行号程序代码1//Hello.java2//Text-printingprogram.3
4publicclassHello{5
//mainmethodbeginsexecutionofJavaapplication6
publicstaticvoidmain(String[]args)7{8
System.out.println("Hello,MyCustomer!");9
}//endmethodmain10
}//endclassHello2.1.1简单的Java应用程序说明:注释语句://或/*…*/BeginsclassdeclarationforclassWelcome1每一个Java程序都必须至少有一个用户定义的类格式类名的命名规则由letters,digits,underscores(_)和$组成;不能由digit或spaces开头;Examples:
Welcome1,$value,_value,button7,合法7button,非法Java是大小写敏感的(casesensitive),a1
和A1不一样
publicclassHello{保存文件:文件名必须同类名,且扩展名为
.javaHello.javaJava应用程序从main方法开始执行语句以;结束
publicclassHello{
publicstaticvoidmain(Stringargs[])2.1.2Java应用程序的运行经过5个步骤EditProgrammerwritesprogram(andstoresprogramondisk)CompileCompilercreatesbytecodesfromprogramLoadClassloaderstoresbytecodesinmemoryVerifyVerifierensuresbytecodesdonotviolatesecurityrequirementsExecuteInterpretertranslatesbytecodesintomachinelanguagePrimaryMemory......DiskDiskDiskEditorCompilerClassLoader利用编辑器编写一个扩展名为.java的源程序编译器编译产生字节码,并以扩展名为.class的文件保存在磁盘上.类装载程序从磁盘上读取包含字节码的.class文件,并把这些字节码放入内存中Phase1Phase2Phase3PrimaryMemory......BytecodeVerifier字节码验证程序确认所有字节码都合法,并且不违背Java的安全限制Phase4PrimaryMemory......Interpreter解释器读取字节码,并把它们翻译成计算机能够理解的语言,在程序执行的过程中有时需要保存数据值Phase52.1.3Java程序的基本结构、数据类型与运算符Java程序的基本结构Java程序由一个或若干个类组成,一个Java程序至少应包含一个由用户所声明的类(如前面的Hello)。在声明一个类时,类名前应有一个关键词class,class之前还有可能存在一个类的属性修饰符,用以说明类的作用范围与特性。说明类作用范围的属性修饰符主要有public和缺省的两种;而用来说明类的特性的属性修饰符主要有abstract、final等(对于内部类来讲,还有protected和private)。2.1.3Java程序的基本结构、数据类型与运算符数据类型Java语言中,存在的数据类型有两大类:基本的数据类型和类(class)。基本的数据类型有8种,分别是byte、char、short、int、float、long、double、boolean
基本数据类型所占字节数(byte)取值范围表示方法示例boolean
1true,falsebooleanx=true;byte
1-128~+127bytex=13;char
2'\u0000'~'\uFFFF'charx='a';chary='\u0061';charz='\\';short
2-32768~+32767shortx=230;int
4-2147483648~+2147483647intx=5;long
8-263~+263-1longx=45L;float
4
floatx=345.00fdouble
8
doublex=345.002.1.3Java程序的基本结构、数据类型与运算符运算符
Java中的基本运算符,类似于C语言中的基本运算符,分为算术运算符、逻辑运算符、位运算符、关系运算符和赋值运算符。
运算符部分举例与说明算术运算符+
-
*
/7/5结果为1;7.0/5结果为1.4
%7%5结果为2逻辑运算符&&true&&true结果为true;true&&false结果为false||false||true结果为true;false||false结果为false!!false结果为true;!true结果为false位运算符&2&3结果为2|2|3结果为3~~2结果为-3^2^3结果为1<<3<<2结果为12>>(带符号位)-5>>2结果为-2>>>(不带符号位)((byte)-5)>>>2结果为63关系运算符==
!=
>
<
>=
<=
赋值运算符=
2.1.4表达式与基本语句表达式是作为基本语句的一部分而存在的,最基本的语句是赋值语句、条件语句if、多重选择语句switch、循环语句for和while等。行号程序代码1//filename:BasicTest.java2importjavax.swing.JOptionPane;3
4publicclassBasicTest{5
publicstaticvoidmain(String[]args)6{7
Stringoutput="";8
nextrow:9
for(introw=1;row<=5;row++){10
output+="\n";11
for(intcolumn=1;column<=10;column++){12
if(column>row)13
continuenextrow;14
output+="*";15}//endinnerfor16}//endouterfor17
JOptionPane.showMessageDialog(null,output,"BasicTest",JOptionPane.INFORMATION_MESSAGE);18
System.exit(0);19}//endmain20}//endclass2.1.5类类(class)是一种数据实体(对象)的抽象,是特殊的数据类型,含有数据成员,分别为数据(属性)与方法(行为),数据和方法被封装在类中,外面的数据实体看不到它们的具体实现,这种程序编码原则在Java中又称为数据隐藏。Java中的类分为系统类和用户自定义的类两种。系统类是Java系统中自有的类,用来实现Java最基本的功能,用户在程序中可直接加以使用,具体用法可参见/j2se/1.4.1/docs/api/index.html文档说明;而用户自定义的类需要根据实际情况由用户自己定义。重载构造函数
行号程序代码1publicclassStudent{2
privateStringNo;3
privateStringname;4
privateintage;5
publicStudent(StringNo,Stringname,intage){6
this.No=No;7
=name;8
this.age=age;9}10
publicvoidDisplay(){11
System.out.println("No="+No);12
System.out.println("name="+name);13
System.out.println("age="+age);14}15
publicvoidDisplay(intx){16
if(x==0)System.out.println("No="+No);17
if(x==1)System.out.println("name="+name);18
if(x==2)System.out.println("age="+age);19
if(x==4)System.out.println("Notcorrect!");20}21}StudentNo:Stringname:Stringage:intDisplay():voidDisplay(int):void2.1.5类2.1.5类类的继承与组合
父类或超类
当一个类继承另一个类时,在父类中标识为public或protected的数据成员(属性或方法)将被子类继承下来,但标识为private的数据成员将不能直接被继承下来。
覆盖
GraduateStudent类将能继承父类中的Display()和Display(int)这2个方法,但由于子类中也有一个名为Display(int)的方法,因而使得实际能继承的方法只有父类中的Display()组合
publicclassGraduateStudentextendsStudent{privateStringdepartment;publicGraduateStudent(Strings1,Strings2,intx,Stringdept){super(s1,s2,x);department=dept;}publicvoidDisplayall(){Display();
System.out.println("department="+department);}publicvoidDisplay(intx){if(x==0||x==1||x==2)super.Display();if(x==4)System.out.println("department="+department);}}StudentGraduateStudentdepartment:StringDisplayall():voidDisplay(int):voidpublicclassTeam{publicStudentmonitor;publicGraduateStudentsecretary;publicTeam(){monitor=newStudent("21B122","zhang3",12);secretary=newGraduateStudent("21B126","wang5",20,"Bdepartment');}}StudentTeamGraduateStudent2.1.5类类的多态在Java中,用户所写的类都是某个类的子类,Java中最顶级的父类为Object系统类。类通过继承关系不断地向下“生长”,从而具有越来越多的“子孙”,各级“子孙”所具有的行为与属性都不完全相同,在程序中要区分这些不同层次的类需要花费很多的精力。而类的多态性的出现,帮助减轻了这方面的负担。多态性能使程序将不同层次的子孙对象看作是同一个超类的不同对象,这些对象具有与超类中的相同的方法与属性,在程序中能加以引用;而到了实际运行时,却又执行的是各自拥有的方法。多态性使开发人员能够设计和实现易于扩展的系统。行号程序代码1//filename:MorphTest.java2classStudent{3
privateStringNo;4
privateStringname;5
privateintage;6
publicStudent(StringNo,Stringname,intage){7
this.No=No;8
=name;9
this.age=age;10}11
publicvoidDisplay(){12
System.out.println("No="+No);13
System.out.println("name="+name);14
System.out.println("age="+age);15}16publicvoidDisplay(intx){17
if(x==0)System.out.println("No="+No);18
if(x==1)System.out.println("name="+name);19
if(x==2)System.out.println("age="+age);20
if(x==4)System.out.println("Notcorrect!");21}22}//endclassStudent23
24classGraduateStudentextendsStudent{25privateStringdepartment;26
publicGraduateStudent(Strings1,Strings2,intx,Stringdept){27
super(s1,s2,x);28
department=dept;29}30
publicvoidDisplayall(){31
Display(1);Display(2);Display(3);32
System.out.println("department="+department);33}34
publicvoidDisplay(intx){35
if(x==0||x==1||x==2)super.Display(x);36
if(x==4)System.out.println("department="+department);37}38}//endclassGraduateStudent39
40publicclassMorphTest{41
publicstaticvoidmain(String[]args)42{43
GraduateStudentstud1=newGraduateStudent("22B210","zhang3",20,"imformation");44
Studentstud2=newStudent("22B215","wang5",12);45
Studentstud1Ref=stud1;46
stud1Ref.Display(4);//执行的是GraduateStudent类中的Display()47
stud2.Display(4);//执行的是Student类中的Display()48}49}//endclassMorphTest尽管stud1对象是一个GraduateStudent类对象,但可以将它看作是GraduateStudent的超类Student的一个对象。当在第46行语句中执行超类Student中的方法Display(int)时,实际执行的却是GraduateStudent类中的方法Display(int),这里就表现出了类的多态性。
为充分利用多态性,有时在Java程序中可以定义若干个“虚拟”的超类,给出一系列的方法,以方便程序的编写。但这些“虚拟”超类中的方法有的可能还没有实现或干脆完全没有实现,部分没有实现的类称为抽象类,完全没有实现的类则成为接口。抽象类的声明接口的声明publicabstractclassAbstractPoint{privateintx;privateinty;publicAbstractPoint(int
a,intb){x=a;y=b;}publicvoidShape();}publicinterfaceInterPoint{publicstaticdoublepi=3.14159;publicvoidShape();}抽象类的继承接口的实现publicclassRealPointextendsAbstractPoint{publicRealPoint(int
a,intb){super(a,b);}publicvoidShape(){
System.out.println("a="+a+",b="+b);}}publicclassRealPointimplementsInterPoint{privateintx;privateinty;publicRealPoint(int
a,intb){super(a,b);}publicvoidShape(){
System.out.println("a="+a+",b="+b);}}2.1.6对Java源程序的进一步说明Java源程序是由一个或多个类组成的。在Java源程序中,不管存在多少个类,有且只能有一个public类,源程序主文件名应与此public类的类名相同,扩展名只能为.java
。内部类所谓内部类,即将一个类定义在另一个类(此时该类又称为外部类)的内部,构成嵌套关系。内部类分为有名内部类和匿名内部类两种类型。
不管是顶级类还是内部类,在用Javac编译后,都会产生各自独立的.class文件。顶级类对应的.class文件名与各自的类名相同,如Time1.class,TimeTest1.class;有名内部类对应的.class文件名为它所在的外部类名加上一个美元符号,再加上内部类的名字,即形如OuterClass$InnerClass.class;匿名内部类对应的.class文件名为它所在的外部类名加上一个美元符号,再加一个数字序号,数字序号为匿名内部类的编号,即形如OuterClass$#.class,这里#表示数字序号。编译后产生的.class文件放在磁盘的什么位置呢?通常是放在当前的目录下。但是,如果在源程序文件中,存在包(package)语句,例如“packagemy.test;”语句,则编译后所有产生的.class文件将放在包my.test中。包实际上是一个树形目录结构,在编译时若不存在的话,则编译程序将会自动产生这样的目录结构,将.class文件放在包中,也就是将.class文件放在相应的树形目录结构中。一个Java源程序中只能有一个包语句,且只能是第一条语句。将编译后产生的.class文件放入包中后,在以后的程序中如要使用这样的.class文件,可以使用import语句,import只能位于包语句的后面(若存在包语句的话)。至于包又是从放在哪里,由环境变量classpath指定。
2.1.7数组数组是包含多个连续存储位置的对象,每个数组(即数组单元)均用于保存同一类型的数据。例如:int[]b=newint[10];int[]p={2,3,5,7,11,13,17,19,23,29};2.2Java中不同类型数据之间的转换
2.2.1实数转换为整数(整数转换为实数)
2.2.2字符转换为字符串2.2.3整数或实数转换为字符串2.2.4字符串转换为其他类型
2.2.1实数转换为整数(整数转换为实数)
进行强制类型转换
行号程序代码1publicclassInt_Real{2
publicstaticvoidmain(String[]args){3
intx;4
x=(int)(10*Math.random());5
System.out.println("TherandomInteger="+x);6
}7}2.2.2字符转换为字符串
使用基本数据类型char的包装类Character来实现行号程序代码1publicclassChar_String{2
publicstaticvoidmain(String[]args){3
charx='A';4
Stringstr=Character(x).toString();5
System.out.println(str);6}7}2.2.3整数或实数转换为字符串
直接使用字符串类String中的方法valueOf()行号程序代码1publicclassNumber_String{2
publicstaticvoidmain(String[]args){3
intx=23;4
Stringstr=String.valueOf(x);5
System.out.println(str);6}7}2.2.4字符串转换为其他类型一般是使用各自的数据包装类行号程序代码1
importjavax.swing.JOptionPane;2
3
publicclassAddition{4
publicstaticvoidmain(Stringargs[]){5
StringfirstNumber,secondNumber;6
intnumber1,number2,sum;7
firstNumber=JOptionPane.showInputDialog("Enterfirstinteger");8
secondNumber=JOptionPane.showInputDialog("Entersecondinteger");9
number1=Integer.parseInt(firstNumber);10
number2=Integer.parseInt(secondNumber);11
sum=number1+number2;12
JOptionPane.showMessageDialog(null,"Thesumis"+sum,"Results",JOptionPane.PLAIN_MESSAGE);13
System.exit(0);14}15}2.3利用Java进行文件输入/输出一个文件输入/输出的程序
importjava.io.*; publicclassCopyFile{ publicstaticvoidmain(String[]args)throwsIOException{
BufferedReader
br=newBufferedReader(new
FileReader("line.txt"));
BufferedWriter
bw=newBufferedWriter(new
FileWriter("linenum.txt")); Strings,space="";
intnum=0; while(br.ready()){ s=br.readLine();
bw.write(s);
bw.newLine(); }
bw.close(); } }程序说明在Java中,将所有文件都视为顺序字节流,Java程序对文件的读写实际上是对字节流的读写。
当读写到字节流的末尾时,将会从操作系统接收到一个文件结束的指令,这时Java程序就会产生一个文件读写的异常,同时设置相关的文件结束标记(如设置文件读写对象中的EOF属性为true,read()方法的返回值为-1,readLine()方法的返回值为null,ready()方法的返回值为false等)。
通过以下两种方法之一来进行异常处理:方法名后(如main()方法)添加了throwsIOException语句。这样一旦在文件读写的过程中发生异常,Java就会将所产生的异常“抛掷”给操作系统进行处理。使用try{}和catch(Exception){}语句对,在程序中对异常进行“捕捉”与“处理”,如:
importjava.io.*; publicclassCopyFile{publicstaticvoidmain(String[]args){try{
BufferedReader
br=newBufferedReader(new
FileReader("line.txt"));
BufferedWriter
bw=newBufferedWriter(new
FileWriter("linenum.txt"));Strings,space="";
intnum=0;while(br.ready()){s=br.readLine();
bw.write(s);
bw.newLine();}
bw.close();}//endtry
catch(IOExceptione){//handleexception}}}程序说明(继续)Java程序通过使用java.io包中的输入输出流类来进行文件的读写。在java.io包中,主要存在两大类的基本流类:基于字节的输入输出类和基于字符的输入输出类;Java中,使用输入输出流不但可以对文件进行读写,也可以对控制台(键盘与屏幕)进行读写,还可以对网络接口(TCP/UDP端口)进行读写。
2.4窗口应用程序的编制2.4.1窗口应用程序的基本框架2.4.2窗口内容的添加2.4.1窗口应用程序的基本框架一个简单的窗口应用程序
importjavax.swing.*; importjava.awt.event.*; publicclassTestFrameextendsJFrame{ privateintcounter=0; publicTestFrame(){ /*使用匿名类添加一个窗口监听器*/
addWindowListener(new
WindowAdapter(){ publicvoidwindowClosing(WindowEvente){
System.out.println("ExitwhenClosedevent"); System.exit(0);//退出应用程序 }
publicvoidwindowActivated(WindowEvente){
setTitle("TestFrame"+counter++);//改变窗口标题 } }); }//endTestFrame() publicstaticvoidmain(String[]args){
TestFrame
tf=newTestFrame();
tf.setResizable(false);//设置窗口为固定大小
tf.setSize(200,250);
tf.show(); } }2.4.1窗口应用程序的基本框架框架Frame监听器Listener事件EventJFrame所发生的事件有:windowActivated(WindowEvente)窗口得到焦点时触发windowClosed(WindowEvente)窗口关闭之后触发windowClosing(WindowEvente)窗口关闭时触发windowDeactivated(WindowEvente)窗口失去焦点时触发windowDeiconified(WindowEvente)windowIconified(WindowEvente)windowOpened(WindowEvente)窗口打开之后
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- Unit 8 Once upon a Time (Period 4)Section B (1a-1d) (4)同步练2025-2026学年人教版英语七年级下册
- 《沁园春·雪》素养进阶表格式教学设计
- 鞋加工服务行业盈利模式创新与变革分析报告
- 聚氟乙烯行业商业模式创新分析报告
- 2025年中国烟草总公司广西壮族自治区公司招聘考试真题
- 国有能源企业薪酬体系重组优化成功案例|北京华恒智信
- 保姆应聘考试题及答案
- 少年向上真善美演讲稿
- 2026代码面试题及答案
- 团队合作:共享快乐共同成长小学主题班会课件
- DLT 5035-2016 发电厂供暖通风与空气调节设计规范
- 刑法基本考试题及答案
- 《双碳管理基础与实务》课件-第七章 碳足迹与碳消费
- 第四单元 比例(教学设计)-【大单元教学】六年级数学下册同步备课系列(人教版)
- 2025年中大综评面试题及答案
- 城镇供水排水行业职业技能竞赛化学检验员(排水化验员)赛项理论考试题库(含答案)
- DZ∕T 0201-2020 矿产地质勘查规范 钨、锡、汞、锑(正式版)
- 2024年银川市金凤区国有资本运营有限公司招聘笔试参考题库附带答案详解
- 城镇低效用地再开发信息管理平台建设解决方案
- 《浙江省城镇既有住宅房屋结构安全排查技术导则(试行)》
- 《济南市城镇燃气领域重大隐患判定指导手册》
评论
0/150
提交评论