[计算机软件及应用]java知识点.doc

上传人:sccc 文档编号:4561573 上传时间:2023-04-27 格式:DOC 页数:52 大小:474KB
返回 下载 相关 举报
[计算机软件及应用]java知识点.doc_第1页
第1页 / 共52页
[计算机软件及应用]java知识点.doc_第2页
第2页 / 共52页
[计算机软件及应用]java知识点.doc_第3页
第3页 / 共52页
[计算机软件及应用]java知识点.doc_第4页
第4页 / 共52页
[计算机软件及应用]java知识点.doc_第5页
第5页 / 共52页
点击查看更多>>
资源描述

《[计算机软件及应用]java知识点.doc》由会员分享,可在线阅读,更多相关《[计算机软件及应用]java知识点.doc(52页珍藏版)》请在三一办公上搜索。

1、目录类和对象(面向对象)1继承:6多态:8异常处理10JAVA.LANG包15JAVA.UTIL包22JAVA.IO包30JDBC:32SWING:40注意:想要跳到某个章节,使用 Ctrl+点击章节名类和对象(面向对象)OOA:Object Oriented Analysis面向对象分析OOD:Object Oriented Design面向对象设计OOP:Object Oriented Programming面向对象编程对象:指具体真实存在的一个实体,记录该实体的属性(特征)和行为(方法)。类:类是由具有相同属性的行为的对象组成的一个集合(模板)。它是创建新类型的一种机制。对象和类的区别和

2、联系:1、 对象是特指的,是具体的。类是泛指的,是抽象的,类是指对象所属的类型、种类2、 类是把对象里的属性的行为抽出来,放在模板中,表示的是该对象和同类型对象的共同特征和行为。以后就可以由该类创建出任意该类的对象。命名规则(类名、变量名、方法名): 1、只能由数字、字母、_、$组成 2、首字符只能是字母、_、$ 3、不能使用关键字、保留字命名规范: 1、类名首字母大写(pascal命名) 2、变量名、方法名首字母小写 3、命名从第二个单词开始,每个单词的首字母要大写(camel命名) 4、命的名称能让别人一看就能明白意思创建一个简单的Student类:public class Student

3、 public String name;/成员变量public int age;public String address;public char sex;/行为、方法public void sleep()System.out.println(睡觉睡觉!);public void dining()System.out.println(吃饭吃饭!);public void study()System.out.println(学习学习!);/下面的方法重写了父类的toString()方法,如果没有重写toString()方法输出来的结果是:包名.类名对象在内存中的地址 例如:Student6b97

4、fdpublic String toString()return 姓名:+name+ 年龄:+age+ 性别:+sex+ 家庭住址:+address;方法的局部变量和类属性的区别:1、 (这一点区别以后会接触到)可用的修饰符不同,类属性可使用四个访问权限修饰符,static,final,而局部变量只能使用final2、 类属性有默认值(可以不赋值,int默认为0,引用类型默认为null,char默认为0即空字符,boolean默认为false),局部变量一定要手动初始化否则会报错。3、 生命周期不同。类属性可存在于整个对象(从创建到最终被垃圾回收)的生命周期,局部变量的生命周期从方法被调用开始

5、,到方法执行结束而结束。4、 作用域不同。类属性作用域整个类(访问修饰符),局部变量作用域仅仅是所在的方法封装:把一个类的属性和行为封闭在一个类里,对外提供相应的方法(接口)。步骤:1、 把不能对外公开的属性加上私有的修饰符2、 为相应的属性加上get/set方法(访问器)3、 在set方法中对传递的值进行有效性的验证封装age、sex属性后的Student:public class Student public String name;/成员变量private int age;public String address;public char sex;/设置age的值public void

6、setAge(int otherAge)if(otherAge120 | otherAge0?num:-num;/求double类型的绝对值public double abs(double num)return num0?num:-num;构造方法的重载:public Student()this.name = 无名氏;this.age = 18;this.sex = 男;public Student(String name,int age,char sex)this.name = name; this.sex = sex;this.age = age;public Student(String

7、 name,char sex)this.name = name;this.sex = sex;如何在同一个类的构造方法中调用这个类的另一个构造方法?例如:public Student(String name,int age,char sex)this(name,sex);/调用了public Student(String name,char sex)构造方法,必须放在第一句代码this.age = age;public Student(String name,char sex)this.name = name;this.sex = sex;对象数组:和以前学的数组类似,只是对象数组的类型是自己

8、定义的类。以前:int arr = new int3;对象数组:Dog dogs = new Dog3;Dog类:public class Dog public String name;public String color;public Dog(String name,String color)this.name = name;this.color = color;对象数组使用:Dog dogs = new Dog3;/创建对象数组Dog d1=new Dog(小白,白色);dogs0 = d1;Dog d2=new Dog(小黑,黑色);dogs1 = d2;Dog d3=new Dog(

9、小黄,黄色);dogs2 = d3;for(int i=0;iprotected缺省private源文件中需要注意的:1、在一个源文件中只能有一个被public修饰的类,并且文件名必须与public的类同名2、如果要定义多个public的类,则必须分别写在不同的源文件中,一个源文件只写一个类是良好的编程习惯。多态:概念:在类的继承体系结构中,如果子类中出现了与父类中有同原型的方法,那么认为子类中的方法覆盖了父类中的方法(也称为方法重写)。通过子类的实例调用被覆盖的方法时,将总是调用子类中的方法,而父类中的方法将被隐藏。利用多态时,声明为父类类型,在编译期只能看到父类中定义的方法,如果子类中还有

10、定义其他的方法,是看不到的。方法重写的特点及注意事项:1、必须有继承关系2、子类中覆盖了父类的方法(名称、参数、返回类型相同,子类方法访问权限=父类方法访问权限)修饰符的访问权限:publicprotected缺省private3、 声明为父类,实际上创建子类对象,调用的方法实际上为真实类型中的被覆盖方法(子类中的方法)注意:多态时,无法以父类引用调用子类中独有的方法,解决办法是把父类引用“向下转型”为子类类型方法重写与方法重载的区别:1、重载是方法名相同、参数列表不同;重写是方法名、参数列表、返回类型相同。2、重载要求必须在同一个类(同一个作用域),继承不是必须的;重写要求存在继承关系。3、

11、重载目的是为了提供调用者的方便;重写是为了改变父类中的默认行为,由子类重新实现,为多态提供支持。引用类型转型:向上转型:子类对象可以看做是父类的对象,相当于自动类型转换class Person class Student extends Person Student stu = new Student ();Person person = stu;向下转型:父类(大的类型)对象转换为子类(小的类型)对象,这种转换类似于强制转换,不一定能成功Person person = new Student ();Student stu = (Student) person;/出错Student stu =

12、 new Student ();Person person = stu;Student stu2= (Student) person;/正确Final关键字:在Java中,final关键字有最终的,不可修改的含义(类似于C语言中的const)。Final的用途:1、如果将某个变量修饰为final,那么该变量就成为常量,一般语法: 访问权限 final 数据类型 常量名 = 值;如:final double PI = 3.14159;注意:PI成为常量,其后任何试图对PI进行赋值的语句都将报错,并且在声明时必须初始化;2、如果将某个成员方法修饰为final,则意味着该方法不能被子类覆盖,一般语法

13、:访问权限 final 返回值类型 方法名(参数列表) 如:public final void fun() 注意:如果在派生类中出现同原型的方法,将会报错。3、如果将某个类修饰为final,则说明该类无法被继承,一般语法:访问权限 final class 类名 成员列表如:public final class MyClass 注意:任何类想继承于MyClass类都将报错。抽象类:含有未实现方法(抽象方法)的类。关键字是abstract,修饰抽象类和抽象方法。abstract修饰类,放在class前。修饰方法,放在返回值前。抽象方法必须在子类当中实现抽象类和普通类的区别:1、 抽象类不能创建对象

14、,而普通类可以2、 抽象类必须在子类中实现所有抽象方法3、抽象类中可以既有抽象方法,也可以存在普通方法。但普通类中一定不能有抽象方法。4、抽象类中可以不包含抽象方法,但只要包含了抽象方法,那就一定是抽象类。什么时候使用抽象类?当父类的某些行为没办法在本类确定具体的实现时,先把行为定义出来,但暂不实现。留待子类中去实现。接口:是一种比抽象类更抽象的概念。使用interface关键字。接口内的所有方法都是抽象的。接口内部也没有什么属性(可以有静态常量)。接口跟抽象类相同,也不能创建对象。实现一个接口,就必须实现接口内的所有方法。一个类只能继承一个父类,但可以实现多个接口。接口中的方法默认是publ

15、ic接口中的“属性”默认是public static finalinterface A int B = 5;void test();等价于interface A public static final int B = 5;public abstract void test();如果一个类继承了另一个类,同时又实现了其他的接口,要求继承要放在实现之前。一个接口可以继承其他多个接口,不叫继承,而是扩展。这个接口的实现类必须实现所有方法。异常处理程序中出现的错误被称为异常;Exception是代表所有异常,所有异常都继承它。异常可分为两大类:编译时异常(检查异常)和运行时异常(非检查异常);1、 运

16、行时异常(非检查异常):指运行期间才有可能出现的异常,java.lang.RuntimeException及其子类。这一类异常没有强制一定要处理。2、 编译时异常(检查异常):指一定、务必、必须要处理的异常,指RuntimeException及其子类之外的所有异常。在编译期会进行检查。运行时异常包括:a) 运行错误:如数组下标越界,除数为0等;b) 逻辑错误:如年龄超过200岁等。举例:public class ExceptionDemo public static void main(String args) int a = 10, b = 0, c; /这里的除数为0,将会产生异常 c =

17、 a / b; System.out.println(c); 此段代码出现了ArithmeticException异常。Java中的异常类:异 常说 明Exception异常层次结构的根类RuntimeException许多java.lang异常的基类ArithmeticException算术异常,如:除数为0IllegalArgumentException方法接收到非法参数ArrayIndexOutOfBoundsException数组下标越界NullPointerException访问空引用ClassNotFoundException不能加载所需的类NumberFormatExceptio

18、n字符串转换数字失败IOExceptionI/O异常的根类FileNotFoundException找不到文件EOFException文件结束try块:一般用来监视有可能产生异常的代码部分;catch块:当异常产生后,catch块捕捉异常,并在其中对异常进行处理。语法:try 有可能产生异常的代码块(1)有可能产生异常的代码块(2)catch(异常类型) 异常处理(3)正常的代码(4)产生的情况有三种:1、 没有异常产生,(1)(2)(4)2、 (1)产生异常并且异常类型匹配,(1)(3)(4)3、 (1)产生异常但异常不匹配,(1)中止异常中的常用方法:getMessage():在Excep

19、tion类中定义的方法,被继承到所有的异常类中,用于获得与异常相关的描述信息。printStackTrace():在Exception类中定义的方法,用于在控制台上显示有关异常的信息,不但有异常的原因,还涉及产生异常的代码行。Finally: 无论try/catch块中发生了什么,finally块都一定会执行;Finally特点:1、 当异常发生时,程序可能会意外中断,有些被占用的资源就得不到清理。finally块可以确保执行所有的清理工作;2、 无论是否发生异常,finally块都将执行;3、 finally块是可选的,可视具体情况决定是否添加;4、 finally块必须和try块一起使用,

20、不能单独存在。多重catch块:有时候,在try块中的代码段将有可能产生多种不同类型的异常,而我们又需要针对不同的异常类型进行不同的处理方式,那么我们就可以使用多重catch块,来分别捕获不同类型的异常。public class ExceptionDemo public static void main(String args) int a, b, c; try /从命令行参数获得用户输入的数字 a = Integer.parseInt(args0);/将字符串转换为int类型 b = Integer.parseInt(args1); c = a / b; System.out.println

21、(c); catch (ArrayIndexOutOfBoundsException aioobe) /捕捉数组下标越界异常 System.out.println(您没有指定命令行参数。); catch (NumberFormatException nfe) /捕捉字符串到数字转换异常 System.out.println(您输入的不是数字。); catch (ArithmeticException ae) /捕捉算术(除数为0)异常 System.out.println(除数为0。); catch (Exception e) /捕捉其它不可预测的异常 System.out.println(e

22、.getMessage(); System.out.println(程序结束。); 多重catch语句块需要注意的事项:1、虽然多重catch块可以同时监视多个不同类型的异常,但是try块中一旦有某个异常产生,程序就会跳转到与之异常类型最匹配的catch块中执行,然后执行finally块(如果有finally块的话)或之后的语句2、多重catch块只会捕捉到最先产生的异常,而不是把所有的异常全部捕捉完;3、不论有多少个catch块,最多只会执行其中的一个;4、catch块的书写顺序:类层次越低的越往上写,越高的越往下写。嵌套try/catch语句块:有时候,整个语句块可以产生异常,而其中的某个

23、部分又可能产生另外的异常,而我们需要分别进行处理,这样,就可以通过嵌套try/catch块来完成;嵌套try/catch块就是在一个try/catch块中包含有另外的try/catch块。Throw关键字:用于手工抛出异常,执行流程将在throw语句后立即停止,转而寻找与之类型相匹配的catch块。语法:throw (异常类型的实例);public class ThrowDemo public static void main(String args) try int age = Integer.parseInt(args0); if (age 100) /创建一个异常实例,并将其手工抛出 t

24、hrow (new Exception(您输入的年龄无效。); System.out.println(您的年龄是: + age + 岁。); catch (Exception e) /捕捉异常 /打印出异常信息 System.out.println(e.getMessage(); 用户自定义异常:Exception类和其子类都是系统内置的异常,这些异常不一定总能捕获程序中发生的所有异常,我们可能要创建用户自定义的异常类,用户自定义异常类应该是Exception类的子类。语法:class MyException extends Exception例子:class AgeException ext

25、ends Exception /用户自定义年龄异常类 public AgeException() /构造方法 super(年龄无效。); public class Test public static void main(String args) try int age = Integer.parseInt(args0); if (age 100) throw (new AgeException(); /抛出自定义异常类实例 System.out.println(您的年龄是: + age + 岁。); catch (AgeException ae) /捕捉自定义异常类型 System.out.

26、println(ae.getMessage(); /打印异常信息 Throws关键字:throws用于将函数内部产生的异常抛给主调函数。如果不方便在函数内部进行处理,也可以将异常往函数外部传递,这就要使用到关键字throws;一般语法:返回值类型 函数名(参数列表) throws 异常类型 例子:public class Student /定义学生类 private String mName; /姓名 private int mAge; /年龄 /其它方法,代码略 /*为姓名赋值的方法*/ public void setName(String name) mName = name; /*为年龄

27、赋值的方法,该方法有可能抛出异常*/ public void setAge(int age) throws AgeException if (age 100) throw (new AgeException(); mAge = age; /其它方法,代码略当调用带有throws关键字的函数时,则必须放在try/catch块中进行监控,否则编译器将会报错;public class ThrowsTest public static void main(String args) Student std = new Student(); try std.setName(zhangsan); std.s

28、etAge(24); /该方法必须放在try/catch块中 std.display(); catch (AgeException ae) System.out.println(ae.getMessage(); 同样地,如果不便进行监控处理,也可以继续使用throws往外抛出异常public class ThrowsTest public static void main(String args) throws AgeException Student std = new Student(); std.setName(zhangsan); std.setAge(180); /对该函数不进行监控

29、,只是将异常继续往外抛 std.display(); Java.lang包Java提供一系列包装类,以便将原始数据类型当作对象进行操作,在java.lang包中,对于每个原始数据类型都有一个相应的包装类。其中原始数据类型是属于基本数据类型,包装类型是属于引用类型。原始数据类型包 装 类boolean(布尔型)Booleanbyte(字节型)Bytechar(字符型)Charactershort(短整型)Shortint(整型)Integerlong(长整型)Longfloat(浮点型)Floatdouble(双精度浮点型)Double包装类的使用:1、可以使用原始类型作为参数,实例化相应的包装

30、类对象:public class LangDemo public static void main(String args) Boolean objBool = new Boolean(true); Character objChar = new Character(X); Integer objInt = new Integer(100); Long objLong = new Long(2568); Double objDou = new Double(3.1415); System.out.println(objBool); System.out.println(objChar); Sys

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教育教学 > 成人教育


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号