




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
(中英双语版)
主编田玉昆陈伟谢文兰
副主编徐光明崔彦君魏文芬
参编黄国范张艳梅曾兰
内容简介
随着互联网技术的发展及应用的普及,众多高等院校的计算机和非计算机专业均将
Java程序设计课程作为程序设计的入门课程或者程序设计的进阶课程。
全书共11章,内容主要为:Introduction(简介);JavaFoundation(Java基础);
ClassesandObjects(类和对象);Packages(包);Inheritance(继承);AbstractClass,
Interface(抽象类、接口);GenericsandCollections(泛型与集合);ExceptionHandling
(异常处理);I/O(输入/输出);Multi-threading(多线程);Networking(网络)。
本书适合作为计算机及计算机相近专业的Java程序设计课程的教材,也可作为普通
高等院校面向对象程序设计语言课程的教材和参考书,还可作为软件开发人员及其他有关
人员自学的参考教材或培训教材。
图书在版编目(CIP)数据
Java程序设计:中英双语版/田玉昆,陈伟,谢文兰
主编.—北京:中国铁道出版社有限公司,2019.9
普通高等院校计算机类专业规划教材
ISBN978-7-113-26185-6
Ⅰ.①J…Ⅱ.①田…②陈…③谢…Ⅲ.①JAVA
语言-程序设计-高等学校-教材-汉、英Ⅳ.
①TP312.8
中国版本图书馆CIP数据核字(2019)第181377号
书名:Java程序设计(中英双语版)
作者:田玉昆 陈 伟 谢文兰
策划:唐旭编辑部电话:(010)63589185转2009
责任编辑:唐 旭 李学敏
封面设计:尚明龙
封面制作:刘 颖
责任校对:张玉华
责任印制:郭向伟
出版发行:中国铁道出版社有限公司(100054,北京市西城区右安门西街8号)
网址:/51eds/
印刷:三河市航远印刷有限公司
版次:2019年9月第1版2019年9月第1次印刷
开本:787 mm×1 092 mm1/16印张:14.5字数:346千
书号:ISBN978-7-113-26185-6
定价:45.00元
版权所有侵权必究
凡购买铁道版图书,如有印制质量问题,请与本社教材图书营销部联系调换。电话:(010)63550836
打击盗版举报电话:(010)51873659
前言
PREFACE
Java语言具有面向对象、跨平台、安全性、多线程等特点,这使得Java成为许多应用
系统的理想开发语言。Java应用程序运行在众多计算机、手机和智能卡上,并为无数的可兼
容的应用服务器提供了功能强大的平台。未来发展中,Java将成为IT从业者必须掌握的一
门语言,而且在金融、电信、制造、银行、移动通信、电力、交通、市政服务、政务管理等
行业的应用日益广泛。为了满足高校对Java程序设计语言课程和双语课程教材的需求,满足
普通高等院校学生和编程爱好者希望快速掌握Java程序开发的基本知识和开发原理的需求,
我们编写了本书。
本书采用中英文对照的方式,将较难理解的英文叙述翻译成对应的汉语(部分简单的英
文内容未作翻译),为读者在基本概念的理解上提供方便。对于书中复杂的知识点则辅以简单、
清晰的代码,并将运行结果附于代码之后,方便读者比较学习。
全书共11章:Chapter1Introduction(简介),主要介绍Java语言的特点、工
作环境与Java的基本工作原理,使读者对Java语言有一个基本的了解;Chapter2Java
Foundation(Java基础),主要介绍数据类型、常量与变量、表达式和流程控制语句等;
Chapter3ClassesandObjects(类和对象),主要介绍Java类与对象的基本概念、构造方法、
对象的初始化等内容,包括Java面向对象的特征等;Chapter4Packages(包),介绍了包
的概念和组织结构,在此基础上,讲述了包的创建、导入及使用;Chapter5Inheritance(继
承),继承是OOP的一个重要内容,本章在类的基础上介绍了继承的基本概念及构造方法的
调用,对不同类型访问控制符的作用进行了比较,最后对OOP的另一个重要内容多态作了简
要介绍;Chapter6AbstractClass,Interface(抽象类、接口),阐述了抽象方法、抽象类
的定义与使用,接口的定义与实现,接口与抽象类的比较以及内部类的定义与使用等内容;
Chapter7GenericsandCollections(泛型与集合),介绍了泛型的概念、泛型类、泛型接
口与泛型方法的定义与使用,以及集合类的概念、框架结构和几种常用的容器的使用方法;
Chapter8ExceptionHandling(异常处理),介绍了异常产生的原因、异常的类型,以及
如何抛出和处理异常;Chapter9I/O(输入/输出),介绍了输入/输出流的概念,以及如
何通过输入流读取数据,向输出流写入数据;Chapter10Multithreading(多线程),阐述
了多线程的概念,线程与进程的区别,线程的生命周期与创建方法、线程同步与线程间的通信
等;Chapter11Networking(网络),介绍了Java网络编程技术,描述了Java的网络编
程功能。全书对不易理解的内容的细致分析,从学生学习的角度阐述核心概念,具有很强的实
用性和适用性。
本书由田玉昆、陈伟、谢文兰任主编,徐光明、崔彦君、魏文芬任副主编,黄国范、张艳梅、
曾兰参与编写。吴学曼对本书的编写给予了专业性的指导,在此表示感谢。
本书的出版得到了广东培正学院教材立项支持,在此表示衷心的感谢。
由于编者水平有限、时间仓促,书中疏漏或不足之处在所难免,请广大读者批评指正。
编 者
2019年6月
目录
目录
CONTENTS
Chapter1 Introduction(简介)1
1.1CharacteristicsofJava(Java的特点)1
1.2Developingtools(开发工具)2
1.2.1Interpretedlanguagevscompiledlanguage(解释性语言与编译性语言)2
1.2.2JavaVirtualMachine(虚拟机)3
1.2.3JavaRuntimeEnvironment(运行环境)4
1.2.4JavaDevelopmentKit(开发工具)4
1.3AsimpleJavaprogram(一个简单的Java程序)5
1.3.1HowtorunaJavaprogram?(如何运行Java程序?)5
1.3.2RulesofnamingaJavasourcefile(Java源文件的命名规则)6
1.3.3Rulesofnamingclasses,variablesandmethods(类、变量和方法的命名规则)7
Exercises8
Chapter2 JavaFoundation(Java基础)9
2.1Primitivedatatypes(基本数据类型)9
2.1.1Integerandfloatingpointtypes(整型与浮点型)10
2.1.2Booleantype(布尔型)11
2.1.3Charactertype(字符型)11
2.2Referencetypes(引用型)12
2.2.1Aclassisadatatype(类是数据类型)13
2.2.2Aclasstypevariableisareference(类类型的变量是引用)14
2.2.3Interfacetype(接口类型)16
2.3Identifiers(标识符)16
2.4Defaultvaluesoffields(成员变量的默认值)16
2.5Wheredatastore?(数据存储在何处?)18
2.6Operators(运算符)19
2.6.1Arithmeticoperators(算术运算符)19
2.6.2Logicaloperators(逻辑运算符)19
I
Java程序设计(中英双语版)
2.6.3Bitwiseoperators(位运算符)20
2.6.4Leftshift(<<)andsignedrightshift(>>)operators(移位运算符)21
2.6.5Assignmentandconditionaloperators(赋值运算符和条件运算符)22
2.6.6Stringoperator“+”and“+=”(字符串运算符“+”和“+=”)22
2.6.7Specialoperators(特殊运算符)23
2.7Casting(类型转换)23
2.7.1Wideningandnarrowing(拓宽与缩窄)23
2.7.2Char,byteandshortproduceintresults(Char,byte和short转换为int型)25
2.8Flowingcontrol(流程控制)25
2.8.1Basiccontrollingstatements(基本控制语句)26
2.8.2Foreachstatement(foreach语句)26
2.9Arrays(数组)28
2.9.1Definearrays(定义数组)28
2.9.2Initializearrays(初始化数组)28
2.9.3Arraysactasargumentsofmethods(数组做方法的参数)29
2.10Commandlinearguments(命令行参数)30
Exercises31
Chapter3 ClassesandObjects(类和对象)33
3.1ConceptsofOOP(面向对象的概念)33
3.1.1EverythingisanObject(万物皆对象)33
3.1.2Definingclasses(定义类)34
3.2Usefulclasses(常用类)34
3.3Methodoverloading(方法重载)39
3.4Constructors(构造方法)40
3.5Defaultconstructor(默认构造方法)43
3.6Staticfieldsandmethods(静态成员变量与静态方法)45
3.7Thiskeyword(this关键字)51
3.7.1Anon-staticmethodhasahidden“this”(隐藏参数this的非静态方法)51
3.7.2Astaticmethodhasnoargument“this”(没有this的静态方法)54
3.7.3Callingconstructorsformconstructors(在构造方法里调用其他构造方法)56
3.8Variableargumentlists(可变参数列表)56
3.9Garbagecollection(垃圾回收)58
3.10Enumtype(枚举类型)60
Exercises61
II
目录
Chapter4 Packages(包)64
4.1Conceptofpackages(包的概念)64
4.2Javalibraryanditspackagestructure(类库与Java类的包组织结构)65
4.3Createpackages(创建包)66
4.4Importpackages(导入包)68
4.5Packagejava.lang(java.lang包)70
4.6Usefulclassesinpackagejava.lang(java.lang包中常用的类)71
4.6.1ObjectclassanditstoStringmethod(Object类和它的toString方法)71
4.6.2Systemclass(系统类)72
Exercises72
Chapter5 Inheritance(继承)74
5.1Whatisinheritance?(什么是继承?)74
5.1.1RootclassObject(根类对象)75
5.1.2Definingsubclasses(定义子类)76
5.2Superkeyword(super关键字)78
5.2.1Supercorrespondingtodefaultconstructor(默认构造方法的super)78
5.2.2Supercorrespondingtoconstructorswitharguments(有参构造方法的super)80
5.3Orderofconstructorcalls(构造方法的调用次序)82
5.4Finalkeyword(final关键字)84
5.4.1Finalfields(final成员)84
5.4.2Finalarguments(常参数)86
5.4.3Finalmethods(常方法)86
5.5Accessspecifiers(访问说明符)86
5.6Polymorphism(多态)91
5.6.1Methodoverriding(方法重写)92
5.6.2Upcastinganddynamicpolymorphism(升级转换与动态多态)93
5.6.3Referringtoamemberofthesuperclassbysuperkeyword(用super指向
基类成员)96
5.6.4Hidingfieldsandstaticmethodsofthebaseclass(隐藏静态方法和fields的基类)98
Exercises100
Chapter6 AbstractClassandInterface(抽象类和接口)104
6.1Abstractclass(抽象类)105
6.1.1Abstractmethod(抽象方法)105
III
Java程序设计(中英双语版)
6.1.2Abstractclass(抽象类)105
6.2Interface(接口)106
6.2.1Introduction(简介)106
6.2.2Defininginterfaces(接口的定义)107
6.2.3Implementationofinterfaces(接口的实现)108
6.2.4Comparationofinterfacesandabstractclasses(接口与抽象类的比较)109
6.3Innerclass(内部类)110
6.3.1Membersininnerclass(内部类成员)110
6.3.2Localinnerclass(局部内部类)112
6.3.3Anonymousinnerclass(匿名内部类)113
Exercises115
Chapter7 GenericsandCollections(泛型与集合)117
7.1Generics(泛型)117
7.1.1Conceptofgenerics(泛型的概念)117
7.1.2Genericclasses(泛型类)118
7.1.3Typeparametersuse“extends”and“super”keywords(类型参数中
使用extends和super关键字)121
7.1.4Wildcardintypeparameters(类型参数里的通配符)122
7.2Genericinterfaces(泛型接口)122
7.3Genericmethods(泛型方法)122
7.4Collectionclasses(集合类)123
7.4.1Conceptofcollection(container)classes[集合(容器)类的概念]124
7.4.2Thehierarchyofthecollectionframework(集合框架的层次结构)124
7.5List(列表)126
7.6Queue(队列)131
7.7Set(集合)131
7.8Map(映射)133
Exercises135
Chapter8 ExceptionHanding(异常处理)137
8.1Conceptsofexception(异常的概念)137
8.1.1Whatisanexception?(什么是异常?)137
8.1.2Howtodealwithexceptions?(如何处理异常?)138
8.2Exceptionclasses(异常类)140
IV
目录
8.2.1Errorclass(Error类)141
8.2.2Exceptionclass(Exception类)141
8.3Catchanddealwithanexception(捕获与处理异常)144
8.4Throwanexception(抛出一个异常)148
8.5Defineyourownexceptions(用户自定义异常类)152
Exercises153
Chapter9 I/O(输入/输出)155
9.1ConceptofI/Ostream(输入/输出流的概念)155
9.2Bytestream(字节流)156
9.2.1InputStream/OutputStream(InputStream/OutputStream类)157
9.2.2FileInputStream/FileOutputStream(FileInputStream/FileOutputStream类)159
9.2.3FilterInputStream/FilterOutputStream(FilterInputStream/
FilterOutputStream类)163
9.2.4DataInputStream/DataOutputStream(DataInputStream/
DataOutputStream类)164
9.2.5BufferedInputStream/BufferedOutputStream(BufferedInputStream/
BufferedOutputStream类)165
9.2.6PrintStream(PrintStream类)166
9.3Characterstreams(字符流)169
9.3.1TextfilevsBinaryfile(文本文件与二进制文件)170
9.3.2Reader/Writer(Reader/Writer类)171
9.3.3InputStreamReader/OutputStreamWriter(InputStreamReader/
OutputStreamWriter类)172
9.3.4FileReader/FileWriter(FileReader/FileWriter类)175
9.3.5BufferReader/BufferWriter(BufferReader/BufferWriter类)178
9.3.6PrintWriter(PrintWriter类)181
9.4Fileclass(文件类)181
Exercises184
Chapter10 Multi-threading(多线程)186
10.1Conceptofmulti-threading(多线程的概念)186
10.1.1What’sathread?(什么是线程?)186
10.1.2Threadvsprocess(线程与进程)186
10.2Lifecycleofathread(线程的生命周期)188
V
Java程序设计(中英双语版)
10.3Creatingthreads(创建线程)190
10.3.1Directapproachofcreatingathread(直接法创建线程)190
10.3.2Indirectapproachofcreatingathread(间接法创建线程)192
10.4Mainthread(主线程)194
10.5MethodsofThreadclass(线程类的方法)196
10.6Threadsynchronization(线程同步)199
10.7Communicationbetweenthreads(线程间的通信)202
Exercises203
Chapter11 Networking(网络)205
11.1Conceptofnetworking(网络的概念)205
11.2URLclass(URL类)206
11.3Socketscommunication(套接字通信)209
11.3.1HowSocketcommunicationworks?(套接字通信是如何进行的?)209
11.3.2Ports(端口)210
11.4ServerSocketandSocketclasses(ServerSocket和Socket类)210
11.4.1Tasksofeachside(双方的任务)211
11.4.2Datatransmission(数据传输)212
11.5Servingmultipleclients(服务多个客户)217
Exercises219
References222
VI
Chapter1Introduction(简介)
Chapter1
Introduction(简介)
Javaisaprograminglanguage.SunreleasedJavain1995.Afteryearsdeveloping,
nowadays,JavaplaysmoreimportantruleinInternet,gameplayandmobile
communicationprogramming.JavaisbasedonC++,isa“pure”object-oriented
programinglanguage.JavainheritstheclassconceptofC++andaddsmulti-thread,
exceptiondealingandotheradvancedtechniques,meanwhileabandonedthepointer
operatorofC++language.
Java是一种程序设计语言,Sun公司于1995年首次发布,经过多年发展,今天Java在互联
网、游戏、移动通信等领域发挥着重要的作用。Java在C++的基础上,成为“完全”的面向对
象的程序设计语言。它继承了C++类的概念,增加了线程、异常处理等先进技术,同时摒弃
了C++语言的“指针”。
1.1CharacteristicsofJava(Java的特点)
ThemaincharacteristicsofJavaareasbelow:
•Simple
•Object-oriented
•Robust
•Sophisticatedcompiler
•Runtimeexception-handling
•Secure
•Multi-thread
•Cross-platform
1
TherearethreedifferentversionsofJava:
•JavaSE(StandardEdition)
•JavaEE(EnterpriseEdition)
•JavaME(MiniatureEdition)
JavaSEisthestandardversionofJava,whichisusedinthisbook.JavaEEisthe
enterpriseversionofJava.JavaMEistheminiatureversionofJava,whichisappliedto
embedded,mobilephoneandothermobilecommunicationapplications.
JavaSE是Java的标准版,本书使用这个版本。JavaEE是企业版,JavaME是微型版,用
于嵌入式、手机和移动通信方面的应用开发。
1.2Developingtools(开发工具)
InordertodesignaJavaprogram,somedevelopingtoolsareneeded.Javaisan
interpretivelanguage,sothedevelopingtoolsshouldbeadaptedtoit.
1.2.1Interpretedlanguagevscompiledlanguage(解释性语
言与编译性语言)
TorunJavaprograms,thesourcefilesarecompiledtoproducebytecodefiles.The
bytecodeismachine-independent.Torunbytecodefiles,aJavainterpreter,whichispartof
theJavaVirtualMachine(JVM)isneeded.
Tomakeitclear,what“interpretive”means,let’sgobacktoC++language.C++is
acompiledlanguage,allcodesareoncecompiledintoanativemachinelanguagebefore
running.SupposeaC++sourcefilemycpp.cppisprovided,whichiscompiledtoproduce
anobjectfile,amachine-dependent(machinelanguage)file,mycpp.obj.Linkingmycpp.
objwithsomelibraryobjectfiles,anexecutablefilemycpp.exeisproduced,whichcanonly
runonacertainkindofOperatingSystemwhereitiscompiledandlinked.Theconverting
procedureofaC++program,fromasourcefiletoanexecutablefileisasshowninFigure1-1.
运行Java程序前,需要将源程序编译成字节码文件。字节码文件与机器无关,由Java虚
拟机里的解释程序解释后执行。
为了弄清楚什么是“解释性”,让我们回到C++语言。C++是编译性语言,运行前,对源
程序进行编译,生成机器语言程序。假设C++源程序是mycpp.cpp,编译后生成与机器相关的
目标文件为mycpp.obj文件,将mycpp.obj与库文件连接,生成可执行文件mycpp.exe。这个可
执行文件只能运行在对源文件进行编译和连接的那类机器上。源文件到可执行文件的转换过程
如图1-1所示。
2
Chapter1Introduction(简介)
mycpp.cppcompilermycpp.objlinkermycpp.exerun
Libraryobjectfiles
Figure1-1ConvertingofC++files
Ontheotherhand,aJavasourcefileiscompiledtoproducebytecode(.class)filesonly,
whichcan’trundirectlyonanOperatingSystem.
SupposeaJavasourcefilemyjava.javaisprovided,whichiscompiledtoproduce
oneorseveralbytecodefiles,butunlikeC++executablefiles,theycan’trundirectlyon
anOperatingSystem.Thebytecodefilesarebinarycodefiles,whichmustbeinterpreted
byaJVM,thatis,theyrelyonaJVM.AJavaVirtualMachineexplainsbytecodefiles
andexecutestheexplainedcodes.Withbytecodefiles,Javarealizesthecross-platform
characteristic,“compilationonce,executioneverywhere”.Bytecodefilescanrunondifferent
JVMs,LinuxJVM,WindowsJVM,…,UnixJVM.
TheconvertingprocedureofJavaprogramfilesisshowninFigure1-2.
myjava.javaJavaconeorseveral.classfilesJVM1
JVM2
.
JVMN
Figure1-2ConvertingofJavafiles
Java源程序仅仅被编译成字节码文件,即一个或多个.class文件。字节码文件是二进制文件,
不能直接在某个操作系统上运行,它必须由Java虚拟机JVM解释并运行。只要有JVM,字节
码文件可以在任何类型的机器上运行,具有一次编译、处处运行的跨平台特性。
1.2.2JavaVirtualMachine(虚拟机)
AJavavirtualmachine(JVM)isasoftwarecomputingmachinethatenablesacomputer
torunaJavaprogram.ThearchitectureofaJVMisshowninFigure1-3.Therearefourmain
unitsinit.
•ClassLoader
•BytecodeVerifier
•Interpreter
•Just-in-timecompiler(JIT)
JVM是Java虚拟机,是用软件实现的处理器,用于运行Java程序,其组成如图1-3所示,
它包含4个主要模块。
3
ClassLoader
BytecodeVerifier
InterpreterJust-in-timeCompiler
Figure1-3StructureofJavavirtualmachine
Abytecode(.class)filecontainsbinarycodesofaJavaclass.Theclassloaderrecognizes
andloadsJava.classfilestomemory.Thebytecodeverifierverifiesallbytecodebeforeitis
interpretedandexecuted.
Fordifferentmachines,differentJVMsareneeded.AslongasacorrespondingJVMis
installedonacomputer,thecomputercanrunanyJavabytecodeprograms.
一个字节码文件对应一个Java类的二进制代码,它由JVM的类装载器(ClassLoader)装
入指定的存储空间,并被字节码检验器(JavaVerifier)检查,再由JVM的解释器(Interpreter)
解释并执行。
不同类型的计算机需要不同的JVM。只要计算机安装了对应的JVM,就可以运行任意
Java字节码程序。
Javabytecodeexecuteswhileinterpreting,theexecutionwillalwaysbeslowerthanthe
executionofthecodesthatarecompiledintoanativemachinelanguage.Thisproblemis
solvedbythejust-in-time(JIT)compiler.AJITcompilercantranslateJavabytecodeintoa
nativemachinelanguagewhileexecutingtheprogram.Forsomefrequentlyusedcodes,the
translatedpartsoftheprogramcanbeexecutedmuchmorequickly.
1.2.3JavaRuntimeEnvironment(运行环境)
JavaRuntimeEnvironment(JRE)isasoftwarepackage,whichcontainstheJavavirtual
machineandtheJavaclasslibrary.
Java运行环境是个软件包,包含JVM和Java类库。
1.2.4JavaDevelopmentKit(开发工具)
Ifyouwanttowriteprograms,youneedtoprepareJavaDevelopmentKit(JDK).JDK
containsJavaRuntimeEnvironment(JRE)anddevelopingtools:Javacompiler“Javac”
forcompilingaJavasourcefile,Javainterpreter“Java”forexplainingandrunningJava
bytecode.JDKisasupersetofaJRE.Itisfreeofcharge.Thelatestversion1.8ofJDKis
availableat/
JDK是开发Java程序的开发工具,包含Java运行环境JRE,Java编译器“Javac”和Java
解释器“Java”。
4
Chapter1Introduction(简介)
1.3AsimpleJavaprogram(一个简单的Java程序)
【Example1-1】HelloWorld.java
classHelloWorld{
publicstaticvoidmain(Stringargs[]){
System.out.println("HelloWorld!");
}
}
Thefunctionofthisprogramistoprint“HelloWorld!”.AJavaprogramiscomposedof
oneormoreclasses,atleastoneclass.Thisprogramcontainsaclass“HelloWorld”,which
hasamethod“main”.ThemainisthestartpointtoexecutetheJavaprogram,whichisthe
sameasC++program.Aclassthatcontainsthemethodmainisreferredtoasthemainclass.
Aclasscanhaveseveralmethods.
Amethodisacollectionofstatements,justlikeafunctionofCorC++program.Inthis
example,thereisonlyonestatementinmethodmain,whichoutputs“HelloWorld!”tothe
screen.
这个程序的功能是在显示器上输出“HelloWorld!”。Java程序由一个或多个类组成,至
少一个类。这个程序包含一个“HelloWorld”类,类里有个称为main的方法。与C++类似,
main是程序执行的入口,包含main方法的类是主类,类可以包含很多方法。
方法是语句的集合,与C或C++的函数类似。此例中,main中只有一条输出“Hello
World!”的语句。
1.3.1HowtorunaJavaprogram?(如何运行Java程序?)
Figure1-4showsthestepsofaJavasourceprogramhowiscompiled,isexecutedand
outputs“HelloWorld!”tothescreen.
HelloWorld.javaJavacHelloWorld.classJavaOutput
Figure1-4ProcedureofrunningaJavafile
SupposeyouareinaMicrosoftWindowsOperatingSystem,JDKisinstalledatyour
computersuccessfully,andthesourcefileisattherootofdiskf.Youneedtogointo
commandwindow,CMDWindowfirst.Whenyouarethere,thescreenlookslike:
C:\Users\Administrator>_
Typeincommand“f:”atthecursorandpressEnterkey,youenterintotherootofdiskf.
F:\>_
Typein“javacHelloWorld.java”,callsthecompilertocompilethesourcefile
HelloWorld.java,forinstance:
F:\>javacHelloWorld.java
5
IftherearenoerrorsintheHelloWorld.java,thenabytecodefileHelloWorld.classis
produced.ToruntheHelloWorld.class,youneedtocallinterpreteroftheJVMbytyping
commandjava.
F:\>javaHelloWorld
“HelloWorld!”isseen.
1.3.2RulesofnamingaJavasourcefile(Java源文件的命名规则)
AJavasourcefileisconsistsofoneormoreclasses.Thefilenamemustfollowsome
rules.Filenamingrules:
(1)Thefilenamemustbethesameastheclassnameifonlyoneclassdeclarationexists.
(2)Atmost,onlyoneclassispublicandthefilenamemustbethenameofthepublic
class.Ifmorethanoneclassesneedtobepublic,thesourcefileshouldbesplitintoseveral
sourcefiles.
(3)Withoutthemainclass(aclassthatcontainsthemainmethodiscalledthemain
class),ifthereareseveralclassesandnoneispublicinafile,thefilenamecanbeanyoneof
theclassnames.
(4)Ifasourcefilecontainsthemainclass,thefilenamemustbethesameasthemain
class.
Java源文件包含一个或多个类,文件的命名必须遵循特定的规则。文件的命名规则如下:
(1)如果源文件里只有一个类,文件名必须是该类的类名。
(2)每个源文件里至多只能有一个public类,并且文件名必须是该public类的名字。如
果一个源文件里的多个类都需要设成public,要将这个源文件分解成多个源文件。
(3)在没有主类的情况下(含有main方法的类称为主类),如果源文件里有多个类,并
且每个类都不是public,文件名可以是其中任何一个类的类名。
(4)如果源文件里包含主类,则文件名必须是主类的类名。
【Example1-2】Twoclassesexistinafile,noneispublic
classFirst{
staticStringMessage="HelloJava!";
}
classSecond{
publicvoidhello(){
System.out.println(First.Message);
}
}
ThefilenamecanbeFirst.javaorSecond.java.Aftersuccessfullycompiled,two
bytecodefiles:First.classandSecond.classareproduced.Butwithoutthemainclass,they
can’trunalone.
6
Chapter1Introduction(简介)
【Example1-3】Twonon-publicclassesexistinafile,oneisthemainclass
classFirst{
staticStringmessage="HelloJava!";
}
classSecond{
publicstaticvoidmain(Stringargs[]){
System.out.println(First.message);
}
}
ThefilenamemustbeSecond.java,becausethemainmethodinit.ClassSecondisthe
mainclass.
【Example1-4】Twopublicclassesneeded,afilemustbesplitintotwo
publicclassFirst{//First.java
staticStringmessage="HelloJava!";
}
【Example1-5】Twopublicclassesneeded,afilemustbesplitintotwo
publicclassSecond{//Second.java
publicstaticvoidmain(Stringargs[]){
System.out.println(First.message);
}
}
Noticethatthenumberof.classfilesisindependentofthenumberofsourcefiles,but
thenumberofclasses.Example1-3producestwo.classfiles,example1-4andexample1-5
totallyproducetwo.classfiles,First.classandSecond.class.
1.3.3Rulesofnamingclasses,variablesandmethods
(类、变量和方法的命名规则)
Choosemeaningfulnames.
1.Classes
Capitalizethefirstletterofeachwordinthename,forinstanceComputeArea.
2.Variablesandmethods
Uselowercase.Ifthenameconsistsofseveralwords,concatenateallinone,use
lowercaseforthefirstword,andcapitalizethefirstletterofeachsubsequentwordinthe
name,forinstancecomputeArea.
3.Constants
Capitalizealllettersinconstants,anduseunderscorestoconnectwords,forinstancePI,
MAX_VALUE.
名字要体现用意。
7
1.类名
大写每个单词的第一个字母,例如,ComputeArea。
2.变量和方法名
用小写字母。如果名字包含多个单词,小写第一个单词,大写其后的每个单词的第一个字母,
例如,ComputeArea。
3.常数名
大写所有字母,用下划线连接不同单词,例如,PI,MAX_VALUE。
Exercises
1.InstallJDKandconfigureenvironmentvariables.
2.Write,compileandrunprogramHelloWorld.java.
8
Chapter2JavaFoundation(Java基础)
Chapter2
JavaFoundation(Java基础)
ThischapterwillintroduceyouthebasicconceptsofJava.
SupposeallstudentshavelearntCorC++programminglanguage,sosome
subjectsinCorC++willnotberepeatedordescribedwithfewerwords,soastowe
canfocusonnewanddifferentsubjectsofJava.
2.1Primitivedatatypes(基本数据类型)
Javahastwokindsofdatatypes,referenceandprimitive.Primitivedatatypesare
providedbyJavaprogramlanguage.Javadeterminesthesizeofavariableoftheprimitive
datatype.ThereareeightprimitivedatatypesinJava(seeTable2-1).
1.Integer
(1)byte(1byte).
(2)short(2bytes).
(3)int(4bytes).
(4)long(8bytes).
2.Floatingpoint
(1)float(4bytes).
(2)double(8bytes).
3.Textual
char(2bytes).
9
4.Logical
boolean(1byte).
Thesizeofaprimitivetypevariableremainsthesameonallplatforms(standardized).
AlltheprimitivedatatypesandtheirsizesarelistedinTable2-1.
Table2-1Primitivedatatypes
PrimitivedatatypeSize(bits/bytes)MinimumMaximum
byte8/1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度购房合同因中介误导导致的合同解除与赔偿执行合同
- 二零二五年度企业信用评级认证服务协议
- 2025年度海洋资源勘探个人劳务用工合同书
- 二零二五年度货车司机驾驶安全教育与责任保险协议
- 二零二五年度金融科技公司干股虚拟股分红及投资协议
- 二零二五年度汽车美容店汽车美容品牌授权合同
- 2025年度民族风情餐厅承包运营合同
- 二零二五年度土地流转与农村社会保障体系建设协议
- 2025年度环保产业员工劳动关系解除协议
- 二零二五年度黄金投资俱乐部会员招募合同
- GB/T 44264-2024光伏组件清洁机器人通用技术条件
- 2024工程用钢丝环形网
- 济南网约车驾驶员区域考试题库(含答案)
- 2024年四川省德阳市中考英语试卷真题(含答案解析)
- 2024年九年级中考语文课外文言文阅读题汇集(一)附答案解析
- 医疗器械的验收与管理制度
- 部编人教版七年级下册道德与法治全册课件
- 护理文件书写PDCA课件
- GB/T 9799-2024金属及其他无机覆盖层钢铁上经过处理的锌电镀层
- 2024年陕西省中考英语试卷附答案
- 江西省南昌市西湖区2023-2024学年五年级下学期期末数学试题
评论
0/150
提交评论