《Java基础知识培训.ppt》由会员分享,可在线阅读,更多相关《Java基础知识培训.ppt(64页珍藏版)》请在三一办公上搜索。
1、Java基础知识培训,目录,第1章 Java发展历史及现状第2章 Java基本语法 第3章 面向对象,培训要点,3,第一章Java的趣味发展史以及现状第二章public class 和class的声明的区别Java的数据类型基本数据类型引用数据类型数据类型的默认值数据类型的转换循环控制fordowhilewhileif else数组,培训要点,方法方法的格式方法重载构造函数函数重载的区分为什么不以返回值区分重载方法方法与数组第三章this表示“调用方法的那个对象”在构造器里调用构造器的限制不能在一个构造器调用两个构造器必须将构造器调用置于最起始处,4,培训要点,开发的方式面向对象三个特征 封装
2、 继承 多态面向过程类的封装性类的图形表示构造方法匿名对象字符串Object的几个重要的方法Object.equalsObject.hashCodeObject.toString,5,培训要点,static在static方法内部不能调用非静态方法finalize工作原理析构函数设计一个简单的问题,要求用户输入用户和口令,如果用户为xiaoX,口令为123,则向控制台打印登录成功,否则打印登录失败构造函数私有化代码块内部类函数回调继承final关键字抽象类接口,6,培训要点,对象的多态性抽象类和接口的应用适配器模式简单工厂模式代理模式异常包持有对象字符串,7,Java发展史,SUN:斯坦福大学网
3、络1991年 GREEN项目 C+新的平台Oak 网景公司1995年 Oak命名为Java1998年 Java2Java技术的主要分支J2SEJ2MEJ2EEJAVA62012年即将推出JAVA7,8,Java发展史,三者之间的关系,9,Java特点,面向对象编译型语言编译型语言和解释型语言的区别:解释性语言在运行程序的时候才翻译,比如解释性basic语言,专门有一个解释器能够直接执行basic程序,每个语句都是执行的时候才翻译。这样解释性语言每执行一次就要翻译一次,效率比较低。Java虚拟机指针Java里不存在指针,因为java所有的对象,都是指针调用。低层以C+开发JVM保证了一次编译,处
4、处运行(理论上)多厂家都有自己的jvm,10,Java基础命令,Java-versionJavacJdbjava-cp%MON_CP%XM%com.sdunicomsi.monitor.agent.AgentSendInfo源文件与字节码,public class 和class的确别,建立一个文件名Person的类public class PersonDemo,12,关键字、标识符、转义符,在Java语言中,标识符是赋予变量、类和方法等的名称。标识符由编程者自己指定,但需要遵循一定的语法规范:(1)标识符由字母、数字、下划线(_)、美元符号($)组成,但美元符号用得较少。(2)标识符从一个字母
5、、下划线或美元符号开始。(3)Java语言中,标识符大小写敏感,必须区别对待。(4)标识符没有最大长度的限制,但最好表达特定的意思。(5)标识符定义不能是关键字。,转义符,关键字又称保留字,是指Java语言中自带的用于标志数据类型名或者程序构造名等的标识符,如public、double等。转义符是指一些有特殊含义的、很难用一般方式表达的字符,如回车、换行等。所有的转义符以反斜线()开头,后面跟着一个字符来表示某个特定的转义符,/i+和+i是有区别的,/i+是在一个先使用后加1,即先使用i的值,后让i+1/+i则是先加1后使用,即先让i+1后再使用i的新值 class ijiajia publi
6、c static void main(String args)System.out.println(Hello World!);int i=3;int count=(i+)+(i+)+(i+);System.out.println(i);/i=6 System.out.println(count);/count=12 int j=3;count=(+j)+(+j)+(+j);/count=4+5+6 System.out.println(j);/j=6 System.out.println(count);/count=15,数据类型,基本数据类型 intcharbytelongfloatdou
7、ble引用数据类型New 接口 类对象 数组String是不基本数据类型,16,数据类型的默认值,基本数据类型都有自己的默认值private int age;/默认值为0,17,控制语句,ifdo.whilewhileforforeach(JDK1.5之后的新特性),18,foreach示例,public class ForEach public static void main(String args)String aa=小刚,小明,小敏,小红;/JDK1.4之前for(int i=0;i aa.length;i+)System.out.println(aai+、);/JDK1.5之后,包括
8、JDK1.5foreach(String s:aa)System.out.println(s+、);,19,数组的声明,int aa=new int10;int aa=null;aa=new int10;int aa=1,10,2;,20,方法,public 数据类型|void 方法名(参数类表)构造函数实际上就是一种重载函数重载的唯一标志就是参数列表,21,方法重载实例,class Number public void add(int x)System.out.println(int x=+x);public int add(int x)System.out.println(double x
9、=+x);Return 1;public class MethodDemo public static void main(String args)Number number=new Number();number.add(1);number.add(1f);,22,可变参数(新特性),public class Method1 public static void main(String args)int temp=2,4,6,8;fun();/没有参数fun(1);/一个参数fun(1,3,5,7,9);/一个参数fun(temp);public static void fun(int.ar
10、g)for(int x:arg)System.out.print(x+、);System.out.println();,23,为什么不一返回值确定一个方法,public class MethodDemo1 public void fun()System.out.println(Hello Union!);public String fun()System.out.println(Hello Union!);public static void main(String args)fun();,24,方法与数组,public class MethodArray public static void
11、 main(String args)int temp=1,3,5,7,9;/声明数组fun(temp);print(temp);public static void fun(int x)x0=6;/修改第一个元素public static void print(int x)for(int i=0;i x.length;i+)System.out.print(xi+、);,25,this 关键字,调用类的属性 this.属性调用类的方法 this.方法调用类的构造方法 this()表示当前对象 this,26,this 关键字,class Person String name;public St
12、ring getName()return name;public void setName(String name)name=name;,27,this 关键字,28,public class Book public Book()System.out.println(book);public Book(int x)System.out.println(book);System.out.println(book+x);public Book(int x,int y)System.out.println(book);System.out.println(book+x);System.out.pri
13、ntln(book+y);,this 关键字,29,public class Book public Book()System.out.println(book);public Book(int x)this();System.out.println(book+x);public Book(int x,int y)this(x);System.out.println(book+y);,Super关键字,调用父类的属性 super.属性调用父类的方法 super.方法调用父类的构造方法 super()在构造函数内,super()必须放在第一行,开发方式,31,面向过程主要是解决问题,有点记叙文的
14、味道面向对象是一套系统的开发的模式,更能贴近现实事物一种思路,开发方式,32,面向过程主要是解决问题,有点记叙文的味道面向对象是一套系统的开发的模式,更能贴近现实事物一种思路,特征抽象封装性继承性多态性,类和对象,33,类和对象,34,类的组成访问类的属性和方法,类的封装性,class Person String name;int age;public class ClientPerson per=new Person();per.name=“小明”;per.age=-10;加入private,35,类的图形表示,36,构造方法与匿名对象,37,构造方法必须与类名相同构造方法没有返回值可以有多
15、构造方法每个必须有构造方法class Person通俗的说只使用一次的对象称为匿名对象,字符串拆分,38,public class StringDemo public static void main(String args)String s=asd,333,2222,000,1111;String s_a=s.split(,);for(String s1:s_a)System.out.print(s1+、);System.out.print(n);String ss=asd|333|fff|sss|asdfsad;这个字符串怎么根据”|”拆分为字符串数组?,Object.equals,39,
16、class Personint age;public class ClientPerson per1=new Person();Person per2=per1;Per2.age=1;System.out.println(per1.equals(per2);,Object.equals,40,class Persion private int age;public int getAge()return age;public void setAge(int age)this.age=age;Overridepublic boolean equals(Object obj)if(this=obj)
17、return true;if(obj instanceof Persion)if(this.age=(Persion)obj).getAge()return true;return false;public class EqualsDemo1 public static void main(String args)Persion per1=new Persion();Persion per2=new Persion();per1.setAge(10);per2.setAge(10);System.out.println(per1.equals(per2);,Object.hashCode to
18、String,41,一般重写了基类的equals方法,也要重写hashCode方法HashMap HashTabletoString的必要性class Personint name;public static void main(String args)System.out.println(new Person();,static 关键字,42,类名称.static属性/方法,finalize关键字,43,工作原理:一旦垃圾回收器准备释放对象占用的存储空间,将首先调用finalize()方法,并且在下一次垃圾回收动作发生时,才会真正回收对象占用的内存。finalize不等于析构函数Finalf
19、inally,登录示例,44,pubic class Clientpublic static void main(String args)String name=args0;String password=args1;if(name.equals(“xiaoX”),构造函数私有化,45,class MessageInfoprivate MessageInfo()public class Clientpublic static void main(String args)MessageInfo info=new MessageInfo();,代码块,46,普通代码块构造块静态块,内部类,47,内
20、部类就在一个类的内部又定义了一个类class OuterClass private int name;class InnerClass public void fun()System.out.println(name);,函数回调,48,public interface ICallBack public void print();public class Printer ICallBack ic;void setCallBack(ICallBack ic)this.ic=ic;void execute()ic.print();,函数回调,49,public class PrintHandler
21、 public static void main(String args)Printer printer=new Printer();printer.setCallBack(new ICallBack()public void print()System.out.println(This is a callback););/这句话可以设置成当满足某条件时再执行printer.execute();,继承,50,继承就是扩展已有类的功能,父类称为“超类”,子类称为“派生类”继承的限制子类的实例化过程方法的覆写,final关键字,51,声明类final class A声明方法public final
22、 void fun()声明属性public final String s=“Hello Union!”,抽象类abstract,52,abstract class Apublic abstract void fun();class Clientpublic static void main(String args)A a=null;a=new A();(cuowu)抽象类是否能用final关键字来修饰 不能抽象类是否可以有构造函数 必须有 接口 不可以有构造方法 不能有方法体,接口,53,接口是一种特殊的类,在接口中定义的方法全部都是抽象方法,定义的属性全部都是全局常量一个类可以实现多个接口只
23、有一个父类一个接口可以继承多个接口,多态性,54,向上转型:子类引用调用父类对象.向下转型:父类引用指向子类对象,可以调用子类的特有方法父类设计很重要,抽象类和接口的应用,55,适配器模式interface ManageObjectpublic void fun1();public void fun2();public void fun3();但是我又不想实现ManageObject接口的所有方法,只有一部分方法是我需要的,怎么办?,抽象类和接口的应用,56,简单工厂模式interface Fruitvoid eat();class Orange implements Fruitpublic
24、void eat()System.out.pritnln(“吃桔子”);class Clientpublic static void main(String args)Fruit fruit=new Orange();fruit.eat();如果,抽象类和接口的应用,57,简单工厂模式interface Fruitvoid eat();class Orange implements Fruitpublic void eat()System.out.pritnln(“吃桔子”);class Clientpublic static void main(String args)Fruit fruit
25、=new Orange();fruit.eat();如果现在又多了一个水果为Apple,客户端现在不吃桔子了,改吃苹果,那只能修改Fruit fruit=new Apple();这样设计的缺陷是什么?,抽象类和接口的应用,58,代理模式如果A类要去执行一个方法,但是A类不直接去执行,而是委托B类去执行,这个方法,那为什么这么做?interface Zvoid doIt();class A implements Zpublic void doIt()System.out.println();class B implements Zprivate A a=null;public B(A a)thi
26、s.a=a;public void doIt()a.doIt();,抽象类和接口的应用,59,工厂模式接口类Fruit.javapublic interface Fruit 水果类public class Banana implements Fruit public class Orange implements Fruit 工厂类public class Factory public static Fruit getFruit(String fruitName)Fruit fruit=null;if(Banana.equals(fruitName)fruit=new Banana();els
27、e if(Orange.equals(fruitName)fruit=new Orange();return fruit;,工厂模式,客户端类public class Client public static void main(String args)Fruit fruit=Factory.getFruit(args0);,Java的io,import java.io.*;public class CharInLineOut public static void main(String args)char c=;System.out.println(请输入一个字符);try c=(char)System.in.read();catch(IOException e)System.out.println(c+c+c);,查找算法,冒泡算法二分算法,异常,63,为什么要用异常处理?ThrowableErrorException异常的语法ClassNotFoundExceptionIOExceptionFileNotFoundException,谢谢!,