【文档说明】Java基础知识培训课件.ppt,共(64)页,2.108 MB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-45165.html
以下为本文档部分文字说明:
Java基础知识培训目录第1章Java发展历史及现状第2章Java基本语法第3章面向对象培训要点3◼第一章◼Java的趣味发展史以及现状◼第二章◼publicclass和class的声明的区别◼Java的数据类型◼基本数据类型◼引用数据类型◼数据类型的默认值◼数据类型的转换◼循环控制◼fo
r◼do…while◼while◼if…else◼数组培训要点方法方法的格式方法重载构造函数函数重载的区分为什么不以返回值区分重载方法方法与数组第三章this表示“调用方法的那个对
象”在构造器里调用构造器的限制不能在一个构造器调用两个构造器必须将构造器调用置于最起始处4培训要点开发的方式面向对象三个特征封装继承多态面向过程类的封装性类的图形表示构造方法匿名对象字符串Object的
几个重要的方法Object.equalsObject.hashCodeObject.toString5培训要点static在static方法内部不能调用非静态方法finalize工作原理析构函数设计一个简单的问题,要求用户输入用户和口令,如果用
户为xiaoX,口令为123,则向控制台打印登录成功,否则打印登录失败构造函数私有化代码块内部类函数回调继承final关键字抽象类接口6培训要点对象的多态性抽象类和接口的应用适配器模式简单工厂模式代理模式异常包持有对象字符串
7Java发展史SUN:斯坦福大学网络1991年GREEN项目C++新的平台Oak网景公司1995年Oak命名为Java1998年Java2Java技术的主要分支J2SEJ2MEJ2EEJAVA62012年即将推出JAVA
78Java发展史三者之间的关系9Java特点面向对象编译型语言编译型语言和解释型语言的区别:解释性语言在运行程序的时候才翻译,比如解释性basic语言,专门有一个解释器能够直接执行basic程序,每个语
句都是执行的时候才翻译。这样解释性语言每执行一次就要翻译一次,效率比较低。Java虚拟机指针Java里不存在指针,因为java所有的对象,都是指针调用。低层以C++开发JVM保证了一次编译,处处运行(理论上)多厂家都有自己的jvm1
0Java基础命令Java-versionJavacJdbjava-cp"%MON_CP%""%XM%"com.sdunicomsi.monitor.agent.AgentSendInfo源文件与字
节码publicclass和class的确别建立一个文件名Person的类publicclassPersonDemo{}12关键字、标识符、转义符在Java语言中,标识符是赋予变量、类和方法等的名称。标识符由编程者自
己指定,但需要遵循一定的语法规范:(1)标识符由字母、数字、下划线(_)、美元符号($)组成,但美元符号用得较少。(2)标识符从一个字母、下划线或美元符号开始。(3)Java语言中,标识符大小写敏感,必
须区别对待。(4)标识符没有最大长度的限制,但最好表达特定的意思。(5)标识符定义不能是关键字。转义符引用方法含义\b退格\t水平制表符Tab\n换行\f表格符\r回车\'单引号\"双引号\\反斜线关键字又称保留字,
是指Java语言中自带的用于标志数据类型名或者程序构造名等的标识符,如public、double等。转义符是指一些有特殊含义的、很难用一般方式表达的字符,如回车、换行等。所有的转义符以反斜线(\)开头,后面跟着一
个字符来表示某个特定的转义符//i++和++i是有区别的,//i++是在一个先使用后加1,即先使用i的值,后让i+1//++i则是先加1后使用,即先让i+1后再使用i的新值classijiajia{publicstaticvoidmain(String[]args){S
ystem.out.println("HelloWorld!");inti=3;intcount=(i++)+(i++)+(i++);System.out.println(i);//i=6System.out.println(count);//count=12intj=3;count
=(++j)+(++j)+(++j);//count=4+5+6System.out.println(j);//j=6System.out.println(count);//count=15}}数据类型基本数据类型intcharbytelongflo
atdouble引用数据类型New接口类对象数组String是不基本数据类型16数据类型的默认值基本数据类型都有自己的默认值privateintage;//默认值为017控制语句ifdo…..whilewhileforforeach(JDK1.5之后的
新特性)18foreach示例publicclassForEach{publicstaticvoidmain(String[]args){String[]aa={"小刚","小明","小敏","小红"};//JDK1.4之前for(inti=0;i<aa.length;i++){
System.out.println(aa[i]+"、");}//JDK1.5之后,包括JDK1.5foreach(Strings:aa){System.out.println(s+"、");}}}19数组的声明int[]aa=newint[10];int[]aa=null;
aa=newint[10];int[]aa={1,10,2};20方法public数据类型|void方法名(参数类表){}构造函数实际上就是一种重载函数重载的唯一标志就是参数列表21方法重载实例classNumber{publicvoidadd(intx){System.out.p
rintln("intx="+x);}publicintadd(intx){System.out.println("doublex="+x);Return1;}}publicclassMethodDemo{publicstaticvoidmain(String[]args){Numbernumb
er=newNumber();number.add(1);number.add(1f);}}22可变参数(新特性)publicclassMethod1{publicstaticvoidmain(Stringargs[]){inttem
p[]={2,4,6,8};fun();//没有参数fun(1);//一个参数fun(1,3,5,7,9);//一个参数fun(temp);}publicstaticvoidfun(int...arg){for(i
ntx:arg){System.out.print(x+"、");}System.out.println();}}23为什么不一返回值确定一个方法publicclassMethodDemo1{publi
cvoidfun(){System.out.println("HelloUnion!!");}publicStringfun(){System.out.println("HelloUnion!!");}publicstaticvoidmain(String[]args){fun()
;}}24方法与数组publicclassMethodArray{publicstaticvoidmain(Stringargs[]){inttemp[]={1,3,5,7,9};//声明数组fun(tem
p);print(temp);}publicstaticvoidfun(int[]x){x[0]=6;//修改第一个元素}publicstaticvoidprint(int[]x){for(inti=0;i<x.length;i++){
System.out.print(x[i]+"、");}}}25this关键字调用类的属性this.属性调用类的方法this.方法调用类的构造方法this()表示当前对象this26this关键字classPerson{Stringname;publicStringgetName(){re
turnname;}publicvoidsetName(Stringname){name=name;}}27this关键字28publicclassBook{publicBook(){System.out.println("book");}publicBo
ok(intx){System.out.println("book");System.out.println("book"+x);}publicBook(intx,inty){System.out.println("bo
ok");System.out.println("book"+x);System.out.println("book"+y);}}this关键字29publicclassBook{publicBook(){System.out.println("book");}publicBook(in
tx){this();System.out.println("book"+x);}publicBook(intx,inty){this(x);System.out.println("book"+y);}}Super关键字调用父类的
属性super.属性调用父类的方法super.方法调用父类的构造方法super()在构造函数内,super()必须放在第一行开发方式31◼面向过程主要是解决问题,有点记叙文的味道◼面向对象是一套系统的开发的模式,更能贴近现实事物一种思路开发
方式32◼面向过程主要是解决问题,有点记叙文的味道◼面向对象是一套系统的开发的模式,更能贴近现实事物一种思路,特征◼抽象◼封装性◼继承性◼多态性类和对象33类和对象34◼类的组成◼访问类的属性和方法类的封装性classPerson{Stringname;intage;}publiccl
assClient{Personper=newPerson();per.name=“小明”;per.age=-10;}加入private35类的图形表示36构造方法与匿名对象37◼构造方法必须与类名相同◼构造方法没有返回值◼可以有多构造方法◼每个必
须有构造方法classPerson{}通俗的说只使用一次的对象称为匿名对象字符串拆分38publicclassStringDemo{publicstaticvoidmain(String[]args){Strings="asd,333,2222,000,
1111";String[]s_a=s.split(",");for(Strings1:s_a){System.out.print(s1+"、");}System.out.print("\n");Stringss
="asd|333|fff|sss|asdfsad";这个字符串怎么根据”|”拆分为字符串数组??}}Object.equals39classPerson{intage;}publicclassClient{Personper1=newPerson();Personpe
r2=per1;Per2.age=1;System.out.println(per1.equals(per2));}Object.equals40classPersion{privateintage;publicintgetAge(){returnage;}publicvoidsetAge(in
tage){this.age=age;}@Overridepublicbooleanequals(Objectobj){if(this==obj){returntrue;}if(objinstanceofPersion){if(this.age==((Persion)obj
).getAge()){returntrue;}}returnfalse;}}publicclassEqualsDemo1{publicstaticvoidmain(String[]args){Persionper1=ne
wPersion();Persionper2=newPersion();per1.setAge(10);per2.setAge(10);System.out.println(per1.equals(per2));}}Objec
t.hashCodetoString41一般重写了基类的equals方法,也要重写hashCode方法HashMapHashTabletoString的必要性classPerson{intname;publicstaticvoidmain(String[]args){System.out.pr
intln(newPerson());}}static关键字42类名称.static属性/方法finalize关键字43工作原理:一旦垃圾回收器准备释放对象占用的存储空间,将首先调用finalize()方法,并且在下一次垃圾回收动作发生时
,才会真正回收对象占用的内存。finalize不等于析构函数Finalfinally登录示例44pubicclassClient{publicstaticvoidmain(String[]args){Stringname=args[0];Stringpasswo
rd=args[1];if(name.equals(“xiaoX”)&&password.equals(“123”)){System.out.println(“登录成功!!”);}else{System.out.p
rintln(“登录失败!!”);}}}构造函数私有化45classMessageInfo{privateMessageInfo(){}}publicclassClient{publicstaticvoidmain(String[]args){MessageInfoin
fo=newMessageInfo();}}代码块46普通代码块构造块静态块内部类47内部类就在一个类的内部又定义了一个类classOuterClass{privateintname;classInnerCla
ss{publicvoidfun(){System.out.println(name);}}}函数回调48publicinterfaceICallBack{publicvoidprint();}publicclassPrinter{ICall
Backic;voidsetCallBack(ICallBackic){this.ic=ic;}voidexecute(){ic.print();}}函数回调49publicclassPrintHandler{publicstaticvoidmai
n(String[]args){Printerprinter=newPrinter();printer.setCallBack(newICallBack(){publicvoidprint(){Sys
tem.out.println("Thisisacallback");}});//这句话可以设置成当满足某条件时再执行printer.execute();}}继承50继承就是扩展已有类的功能,父类称为“超类”,子类称为“派生类”继承的限制子类的实例化过程方法的覆写final关键字51◼声明类◼
finalclassA{◼}◼声明方法◼publicfinalvoidfun(){◼}◼声明属性◼publicfinalStrings=“HelloUnion!!”抽象类abstract52abstractclassA{publi
cabstractvoidfun();}classClient{publicstaticvoidmain(String[]args){Aa=null;a=newA();}}(cuowu)抽象类是否能用final关键字来修饰不能抽象类是否可以有构造函数必须有接口不可以有构造方法不能有方法体接口53◼
接口是一种特殊的类,在接口中定义的方法全部都是抽象方法,定义的属性全部都是全局常量◼一个类可以实现多个接口◼只有一个父类◼一个接口可以继承多个接口多态性54◼向上转型:子类引用调用父类对象…….◼向下转型:
父类引用指向子类对象,可以调用子类的特有方法◼父类设计很重要抽象类和接口的应用55◼适配器模式interfaceManageObject{publicvoidfun1();publicvoidfun2();publicvoidfun3();……
}但是我又不想实现ManageObject接口的所有方法,只有一部分方法是我需要的,怎么办?抽象类和接口的应用56◼简单工厂模式interfaceFruit{voideat();}classOrangeimplementsFruit{publicvoideat(){System.out.p
ritnln(“吃桔子”);}}classClient{publicstaticvoidmain(String[]args){Fruitfruit=newOrange();fruit.eat();}}如果抽象类和接口的应用57◼简单工厂模式interfaceFruit{voideat();}cl
assOrangeimplementsFruit{publicvoideat(){System.out.pritnln(“吃桔子”);}}classClient{publicstaticvoidmain(String[]args){Fruit
fruit=newOrange();fruit.eat();}}如果现在又多了一个水果为Apple,客户端现在不吃桔子了,改吃苹果,那只能修改Fruitfruit=newApple();这样设计的缺陷是什么?抽象类和接口的应用58◼代理模式◼如果A类要去执行一个方法,但是A类
不直接去执行,而是委托B类去执行,这个方法,那为什么这么做?interfaceZ{voiddoIt();}classAimplementsZ{publicvoiddoIt(){System.out.println();}}classBimplementsZ
{privateAa=null;publicB(Aa){this.a=a;}publicvoiddoIt(){a.doIt();}}抽象类和接口的应用59◼工厂模式接口类Fruit.javapublicinterfaceFrui
t{}水果类publicclassBananaimplementsFruit{}publicclassOrangeimplementsFruit{}工厂类publicclassFactory{publics
taticFruitgetFruit(StringfruitName){Fruitfruit=null;if("Banana".equals(fruitName)){fruit=newBanana();}elseif("Orange
".equals(fruitName)){fruit=newOrange();}returnfruit;}}工厂模式客户端类publicclassClient{publicstaticvoidmain(String[]args){Fruitfruit=Fac
tory.getFruit(args[0]);}}Java的ioimportjava.io.*;publicclassCharInLineOut{publicstaticvoidmain(Stringargs[]){charc=
'';System.out.println("请输入一个字符");try{c=(char)System.in.read();}catch(IOExceptione){}System.out.pri
ntln(c+""+c+""+c);查找算法冒泡算法二分算法异常63◼为什么要用异常处理?◼Throwable◼Error◼Exception◼异常的语法ClassNotFoundExceptionIOExceptionFileNotFoundException谢谢!