-1-《CoreJava课件》Day01一、课程安排Chapter01GettingStartedJava编程语言的发展历史,主要特性,以及Java应用程序,阐述了类和包的概念,并介绍了一些常用Java包。Chapter02Identifiers,KeywordsandTypesChapter03ExpressionsandFlowControlChapter04Array如何声明、创建、初始化和拷贝数组。Chapter05ObjectsandClasses(Encapsulation,polymorphismandinheritance)在Chapter2的基础上,进一步阐述Java对象的概念,包括封装继承等。Chapter06AdvancedLanguageFeatures(Static、Final、Accesscontrol、Collectionandreflection、Abstract、Interface、Innerclasses)访问权限控制修饰符,三大修饰符,接口,集合,内部类,反射07Chapter07Exceptions08Chapter08BuildingGUIs介绍布局管理器和容器的概念。09Chapter09AWTEventModel10Chapter10JFCJavaFoundationClasses。11Chapter11Threads12Chapter12StreamI/OandFiles13Chapter13Networking14Chapter14IntroductiontoTiger(J2SE5)15Chapter15Autoboxing/Unboxing,Loop,Enumeration,Varargs,StaticImport&Misc16Chapter16Generics17Chapter17Annotation(Metadata)18Chapter18ConcurrentUtilities二、发展历史:Java来自Sun公司的一个叫Green的项目,其原先的目的是为家用消费电子产品开发一个分布式代码系统,开始,准备采用C++,但C++太复杂,安全性差,最后基于C++开发一种新的语言Oak(Java的前身),Oak是一种用于网络的精巧而安全的语言.有一天,几位Java成员组的会员正在以介绍面向对象编程的基本概念、基本理论为重点,结合Java语言的语法规则、编程特点和设计思想、强调容易发生错误和编程应注意的地方,使学生能对Java技术有一个总体了解,通过本课程学习,使学生掌握Java语言的基础知识,理解和掌握面向对象程序设计的基本思想,熟练地使用Java语言进行程序的编写、编译以及调试工作讨论给这个新的语言取什么名字,当时他们正在咖啡馆喝着Java(爪哇)咖啡,有一个人灵机一动说就叫Java怎样,得到了其他人的赞赏,于是,Java这个名字就这样传开了。JAVA的几个重要发展阶段:-2-1)1995年发布第一个Java版本;2)1996年1月23日发布了JDK1.0。这个版本包括了两部分:运行环境(即JRE)和开发环境(即JDK);3)1998年是Java开始迅猛发展的一年,在这一年中Sun发布了JSP/Servlet、EJB规范以及将Java分成了J2EE、J2SE和J2ME;4)1998年12月4日,Sun发布了Java的历史上最重要的一个JDK版本:JDK1.2。这个版本标志着Java已经进入Java2时代。这个时期也是Java飞速发展的时期。该版本新增了swing图形库5)2000年5月8日,Sun对JDK1.2进行了重大升级。推出了JDK1.3。6)2002年2月13日,发布了JDK历史上最为成熟的版本:JDK1.4。三、Java语言的主要特点:可移植的安全面向对象多线程四、什么是字节码和虚拟机:字节码是一套设计用来在Java运行时系统下执行的高度优化的指令集。该Java运行时系统称为Java虚拟机(JVM)。JVM其实就是一个字节码解释器。虚拟机将字节码解释成机器码给CPU执行,所以我们在java中通过虚拟机的这种解释执行方式来屏蔽底层操作系统的差异。JRE=JVM+类库JDK=JVM+编译器+类库查看类库源码在:JDK/src.zip压缩包里五、环境变量的设置:需要新加的两个环境变量1、JAVA_HOME:指名JDK的位置。2、CLASSPATH:指名到哪里去找运行时需要用到的类代码(字节码)原有的环境变量1、PATH:指名可执行程序的位置。2、EXPORT:将指定的环境变量声明为全局的。我们在.bash_profile下的环境变量设置。JAVA_HOME=/opt/jdk1.5CLASSPATH=.PATH=$PATH:$JAVA_HOME/bin:.注:“.”代表当前目录当我们把环境变量都配置好了以后在终端敲入”java-version”命令如果出现JDK版本号信息就表示我们环境变量设置成功了。Bin目录下放的是一些JDK命令六、kate工具的使用这个就不多做描述了,大家多试试就清楚了七、我们的第一个Java程序-3-publicclassMyFirstJava{publicstaticvoidmain(String[]args){System.out.println(“HelloWorld”);}}注:我们要求public类名必须和文件名一致,只不过文件名多了个.java的后坠。一个源文件可以有多个类,但最多只能有一个public类main函数是我们整个程序的执行入口所以必须是静态公开的。编译:javacMyFirstJava.java编译后我们可以看到目录下多了一个MyFirstJava.class文件。这就是Java编译原文件后生成的字节码文件。执行:javaMyFirstJava将字节码文件交给JVM去解释执行。思考:1、为什么编译后不生成可执行文件(注:所有的可执行文件都是机器代码)2、Java的跨平台特性(SUM口号:一次编译到处运行);八、包结构为了根据需要将不同的原文件放在不同的目录下我们引入了包。包我们可以看作就是一个存放java原文件的目录。在源码的基础上声明一个包名:packagesd0604加包后我们用“javac–d.MyFirstJava.java”编译后生成的字节码文件就会放在我们指定的包(目录)结构下.如果我们想指定多级目录那么在目录明之间我们可以用.作为分隔符。例如:packagesd0604.najing.xuanwu九、JDK常用包结构:Java.lang.*Java.util.*Java.awt.*Java.net.*Java.io.*十、CoreJava中的注释1、//单行注释2、/**/多行注释3、/***/文档注释文档注释可以由javadoc命令单独提取出来生成注释文档。例:javadocMyFirstJava.java我们在生成的注释文件中可以打开index入口页面来查看我们刚刚生成的注释文档。文档注释一般写在类、方法、属性定义之前前两种注释和C++相同。-4-注意:1、我们可以用javadoc–help命令来查看该命令的其他用法。2、同样我们可以用“javadoc–d路径名*.java”来指定生成文档注释的位置。3、可以在文档注释中加入HTML标签来控制生成注释文档的显示格式。十一、jar命令的用法我们可以用“jar–cvfmn”命令来将文件打包成jar压缩包。m:要生成jar包的名字n:要压缩文件的文件名(可以是多个文件或一个目录)生成的jar文件实际上就是一个普通的zip压缩文件顺便说一下解包的命令:unzip*.jar九、计算机运行一个java程序的过程1、启动JVM2、通过JAVA_HOME\jre\lib\dt.jar找到对应的类3、如果的2不找不到则在环境变量中配置的CLASSPATH配置的路径中找类,这就是为什么我们要在CLASSPATH中配上当前路径的原因。十、import声明的作用当我们要用一个JDK定义好的类时我们需要在Java程序中配上该类对应的jar包。(类似于C++中了#include预处理指令)例:importjava.util.*;这里大家注意一点:由于java.lang.*包中的类是我们编程中经常要使用的,所以这个包下的类我们不用特别用import在程序中声明。但当我们要用到其他包中的类似我们就必须用import声明了。awt:抽象窗口工具.如果大家想了解什么包做什么用的话大家课以看看我给大家的API文档,上面有对所有这些包用法的解释。十一、java中的垃圾回收器因为有了垃圾回收器,我们可以不用顾虑对象创建后占用系统资源的问题。我们只用负责对象的创建,而对象销毁和资源释放的问题就可以留给垃圾回收器做了。这里我们需要注意的是垃圾回收器一般只会在内存空间不够的情况下进行资源回收。十二、java中标识符的命名规则1、只能以字母、下划线或”$”开头,严格区分大小写,且长度不限。2、不能为java关键字3、类名的每个单词的首字母大写4、方法名属性名的第一个单词小写,以后的每个单词首字母大写5、所有的包结构名字都是小写6、常量名所有字母大写注:第一点是必须遵守的,2~5点不遵守也不会出错,但建议大家严格遵守以上命名规范。-5-十三、java中的关键字和保留字abstractdoimplementsprivatethrowbooleandoubleimportprotectedthrowsbreakelseinstanceofpublictransientbyteextendsintreturntruecasefalseinterfaceshorttrycatchfinallongstaticvoidcharfinallynativesupervolatileclassfloatnewswitchwhilecontinuefornullsynchronizeddefaultifpackagethis十四、java中的八中基本数据类型1.boolean:占1个字节2.byte:占1个字节3.char:占2个字节(可以用来保存汉字)4.short:占2个字节5.int:占4个字节6.long:占8个字节7.float:占4个字节8.double:占8个字节十五、正负数在内存空间中的存放正数在内存空间中存发的是源码。负数在内存空间中存发的是正数源码对应的补码。补码:在源码的基础上取反后末位加1。十六、基本数据类型之间的转换1、正向过程:从低字节到高字节可以自动转换。byte-short-int-long-float-double注:boolean不能转。2、逆向过程:从高字节到低字节用强制类型转换例:inta=(int)3.12注:逆向转换将丢失精度。3、char的声明方式:charc1=‘a’;charc2=‘\0060’;charc3=97;十七、java中的转义字符1.表示格式控制的转义字符(如:\n\t)与C++相同。2.Java中用“\u四位十六进制的数字”表是将字符转换成对应的unicode编码。-6-十八、表达式和流程控制运算符:注:1、是corejava中的位移运算符,表示右移,左边空出的位以0添充。右移2、将一个数右移n位相当于将该数除以2的n次方;4、将一个数左移n位相当于将该数乘以2的n次方;5、&&、||是短路运算符(左边条件不符合时不会执行右边的判断)Day02一、流程控制语句1、两路分支选择Ifelse配对原则:else一定会和离他最近的且没有与别的else配对的if配对;2、多路分支选择switch(byte,short,int,char){casexxx:break;casexxx:-7-break;default:}3、循环结构3.1for(初始化;条件;调整){语句块}该结构在知道循环次数的时候使用初始化语句只执行一次;判断条件执行语句块执行调整判断条件f