Java基础知识培训于滨yubin35@chinaunicom.cn2011年07月目录第1章Java发展历史及现状第2章Java基本语法第3章面向对象3培训要点第一章Java的趣味发展史以及现状第二章publicclass和class的声明的区别Java的数据类型基本数据类型引用数据类型数据类型的默认值数据类型的转换循环控制fordo…whilewhileif…else数组4培训要点方法方法的格式方法重载构造函数函数重载的区分为什么不以返回值区分重载方法方法与数组第三章this表示“调用方法的那个对象”在构造器里调用构造器的限制不能在一个构造器调用两个构造器必须将构造器调用置于最起始处5培训要点开发的方式面向对象三个特征封装继承多态面向过程类的封装性类的图形表示构造方法匿名对象字符串Object的几个重要的方法Object.equalsObject.hashCodeObject.toString6培训要点static在static方法内部不能调用非静态方法finalize工作原理析构函数设计一个简单的问题,要求用户输入用户和口令,如果用户为xiaoX,口令为123,则向控制台打印登录成功,否则打印登录失败构造函数私有化代码块内部类函数回调继承final关键字抽象类接口7培训要点对象的多态性抽象类和接口的应用适配器模式简单工厂模式代理模式异常包持有对象字符串8Java发展史SUN:斯坦福大学网络1991年GREEN项目C++新的平台Oak网景公司1995年Oak命名为Java1998年Java2Java技术的主要分支J2SEJ2MEJ2EEJAVA62012年即将推出JAVA79Java发展史三者之间的关系10Java特点面向对象编译型语言编译型语言和解释型语言的区别:解释性语言在运行程序的时候才翻译,比如解释性basic语言,专门有一个解释器能够直接执行basic程序,每个语句都是执行的时候才翻译。这样解释性语言每执行一次就要翻译一次,效率比较低。Java虚拟机指针Java里不存在指针,因为java所有的对象,都是指针调用。低层以C++开发JVM保证了一次编译,处处运行(理论上)多厂家都有自己的jvmJava基础命令Java-versionJavacJdbjava-cp%MON_CP%%XM%com.sdunicomsi.monitor.agent.AgentSendInfo源文件与字节码12publicclass和class的确别建立一个文件名Person的类publicclassPersonDemo{}关键字、标识符、转义符在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){System.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}}16数据类型基本数据类型intcharbytelongfloatdouble引用数据类型New接口类对象数组String是不基本数据类型17数据类型的默认值基本数据类型都有自己的默认值privateintage;//默认值为018控制语句ifdo…..whilewhileforforeach(JDK1.5之后的新特性)19foreach示例publicclassForEach{publicstaticvoidmain(String[]args){String[]aa={小刚,小明,小敏,小红};//JDK1.4之前for(inti=0;iaa.length;i++){System.out.println(aa[i]+、);}//JDK1.5之后,包括JDK1.5foreach(Strings:aa){System.out.println(s+、);}}}20数组的声明int[]aa=newint[10];int[]aa=null;aa=newint[10];int[]aa={1,10,2};21方法public数据类型|void方法名(参数类表){}构造函数实际上就是一种重载函数重载的唯一标志就是参数列表22方法重载实例classNumber{publicvoidadd(intx){System.out.println(intx=+x);}publicintadd(intx){System.out.println(doublex=+x);Return1;}}publicclassMethodDemo{publicstaticvoidmain(String[]args){Numbernumber=newNumber();number.add(1);number.add(1f);}}23可变参数(新特性)publicclassMethod1{publicstaticvoidmain(Stringargs[]){inttemp[]={2,4,6,8};fun();//没有参数fun(1);//一个参数fun(1,3,5,7,9);//一个参数fun(temp);}publicstaticvoidfun(int...arg){for(intx:arg){System.out.print(x+、);}System.out.println();}}24为什么不一返回值确定一个方法publicclassMethodDemo1{publicvoidfun(){System.out.println(HelloUnion!!);}publicStringfun(){System.out.println(HelloUnion!!);}publicstaticvoidmain(String[]args){fun();}}25方法与数组publicclassMethodArray{publicstaticvoidmain(Stringargs[]){inttemp[]={1,3,5,7,9};//声明数组fun(temp);print(temp);}publicstaticvoidfun(int[]x){x[0]=6;//修改第一个元素}publicstaticvoidprint(int[]x){for(inti=0;ix.length;i++){System.out.print(x[i]+、);}}}26this关键字调用类的属性this.属性调用类的方法this.方法调用类的构造方法this()表示当前对象this27this关键字classPerson{Stringname;publicStringgetName(){returnname;}publicvoidsetName(Stringname){name=name;}}28this关键字publicclassBook{publicBook(){System.out.println(book);}publicBook(intx){System.out.println(book);System.out.println(book+x);}publicBook(intx,inty){System.out.println(book);System.out.println(book+x);System.out.println(book+y);}}29this关键字publicclassBook{publicBook(){System.out.println(book);}publicBook(intx){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类和对象类的组成访问类的属性和方法35类的封装性classPerson{Stringname;intage;}publicclassClient{Personper=newPerson();per.name=“小明”;per.age=-10;}加入private36类的图形表示37构造方法与匿名对象构造方法必须与类名相同构造方法没有返回值可以有多构造方法每个必须有构造方法classPerson{}通俗的说只使用一次的对象称为匿名对象38字符串拆分publicclassStringDemo{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;这个字符串怎么根据”|”拆分为字符串数组??}}39Object.equalsclassPerson{intage;}publicclassClient{Personper1=newPerson();Personper2=per1;Per2.age=1;System.out.println(per1.equals(per2));}40Object.equalsclassPersion{privateintage;publicintgetAge(){returnage;}publicvoidsetAge(intage){this.age=age;}@Overridepublicbooleanequals(Objectobj){if(this==obj){returntrue;}if(objinstanceofPersion){if(this.age==((Persion)obj).getAge()){returnt