收藏 分享(赏)

JAVA初高级阶段笔记.doc

上传人:hwpkd79526 文档编号:8274588 上传时间:2019-06-17 格式:DOC 页数:31 大小:291KB
下载 相关 举报
JAVA初高级阶段笔记.doc_第1页
第1页 / 共31页
JAVA初高级阶段笔记.doc_第2页
第2页 / 共31页
JAVA初高级阶段笔记.doc_第3页
第3页 / 共31页
JAVA初高级阶段笔记.doc_第4页
第4页 / 共31页
JAVA初高级阶段笔记.doc_第5页
第5页 / 共31页
点击查看更多>>
资源描述

1、 高博 S1 阶段 java 笔记、作业 梦在心上 命在手中 路在脚下JAVA 初高级阶段笔记Day0:1.异常与错误:1. 异常是程序在执行过程中出现的中断正常指令执行的事件。2. 错误是偏离可接受代码的一个动作或实例。2.overload 和 overrid 的区别1. Overload 方法重载:如果在一个类中2. 它们有不同的参数表(包括 参数的类型、个数、顺序) ,则该方法称为方法的重载。3. Override 方法重写:如果子类中定义某个方法与其父类有相同的名称和参数,则该方法被重写。3.常见异常1. 空指针异常类:java.lang.nullPointerException2.

2、数组下标越界异:java.lang.arrayIndexOutOfBoundsException3. 类型强制转换异常:java.lang.classCastException4. 数学运算异常:java.lang.arithmeticexception5. 操作数据库异常:java.sql.SQLException6. 没有访问权限异常: java.lang.illegalaccessexception7. 字符串转换为数字异常:java.lang.numberFormatException4.静态变量和非静态变量的区别1. 静态变量: 用关键字 static 修饰的成员变量称作静态变量或类

3、变量,是与类相关联的数据变量,类变量不仅可以通过某个对象访问也可以直接通过类名访问,静态变量被相关的对象共享。2. 非静态变量:没有使用 static 修饰的成员变量称作非静态变量 ;仅仅是和相应对象关联的变量,改变其中一个对象的实例变量不会影响其它对象的这个实例变量,且必须通过对象访问。5.静态方法和非静态方法有什么区别:1. 静态方法中不用 this 是无法引用除自己方法体中定义的成员和参数以外的非静态变量或者方法的。2. 静态方法是不允许被子类重写的,但是子类可以重载父类的静态方法。3. 子类也不可将父类中的非静态方法重写为静态方法。6.final 和 finally 和 finaliz

4、e 的区别1. final-修饰符(关键字)被声明为 final 的类,不能再派生出新的子类,不能作为父类被继承。被声明为final 的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。final 方法只能使用,不能重写。2. finally-在异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话) 。 3. finalize-方法名。 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。子类覆盖 finalize() 方法以整理系统资源或者执行

5、其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。| | import java.sql.*;System.out.println(new java.util.Date();15. java 的注释:1.单行注释:/2.多行注释:/* */3.文档注释/* */通过 javadoc 命令将文档注释提取出来生成 java 帮助文档:javadoc -author -version -d ./api HelloWorld.java16. 压缩命令:Jar -cvf first.jar 完整类名解压命令:Jar -xvf first.jar运行 jar 文件中的程序

6、:java -classpath first.jar a.b.c.HelloWorld17. java 命令行参数:public static void main(String args)/打印当前时间高博 S1 阶段 java 笔记、作业 梦在心上 命在手中 路在脚下System.out.println(args0);System.out.println(args1);运行时:java com.blues.javabase.day1.HelloWorld blues wang18. main 方法运行要点:可执行程序必需要 main 方法只能 public 和 static 调换位置args

7、 可以是任意的名字/args0 代表第一个命令行参数注意:运行时一定要有命令行参数输入,否则会有数组下标越界异常出现Day2:19. Java 标示符:1,什么是标示符?在 java 语言中用来给一个类、变量或方法命名的符号2,标示符的命名规则:1.以字母, “_”或“$ ”符号开头2.可以包含字母、 “_”、 “$”和数字符号3.大小写敏感4.不能与保留关键字冲突5.没有长度限制3.命名规范:1.类名, 接口名 :每个单词的首字母应该大写2.字段、方法以及对象:第一个单词首字母应小写,其他单词首字母大写3.常量:全部用大写字母表示4.Java 包(Package):它们全都字母小写5.命名要

8、做到见名知意20. 关键字列表:Volatile:就象大家更熟悉的 const 一样,volatile 是一个类型修饰符(type specifier) 。它是被设计用来修饰被不同线程访问和修改的变量。如果没有 volatile,基本上会导致这样的结果:要么无法编写多线程程序,要么编译器失去大量优化的机会。Transient: java 语言的关键字,变量修饰符,如果用 transient 声明一个实例变量,当对象存储时,它的值不需要维持。Java 的 serialization 提供了一种持久化对象实例的机制。当持久化对象时,可能有一个特殊的对象数据成员,我们不想用serialization

9、 机制来保存它。为了在一个特定对象的一个域上关闭 serialization,可以在这个域前加上关键字 transient。当一个对象被序列化的时候,transient 型变量的值不包括在序列化的表示中,然而非 transient 型的变量是被包括进去的。Abstract 抽象 boolean break byte case catch char class continue default 默认值 do double else extends 继承 enum 枚举 false final finally float for if implements 实现接口 import instance

10、of 实例 int interface 接口 long native new null package private 私有的 protected public return short static 静态的 super switch synchronized 同步的 this throw throws transient true try void volatile while 保留字:const,goto Java 中 true false 是 boolean 类型的字面量高博 S1 阶段 java 笔记、作业 梦在心上 命在手中 路在脚下所有的关键字都是小写,friendly,strin

11、g,sizeof 不是 java 的关键字 21. 转义字符 描述ddd 1 到 3 位 8 进制数所表示的字符(ddd) uxxxx 1 到 4 位 16 进制数所表示的字符(xxxx) 单引号字符 双引号字符 反斜杠字符r 回车n 换行f 走纸换页t 横向跳格b 退格22. java 数据类型:1.基本数据类型(8 种)Byte1、short2、char2 、int4、long8 、float4 、double8boolean* java 默认浮点数为 double2.引用数据类型数组、类、接口都属于引用数据类型23. 补码:原码取反加 1整数在内存中的表示:1.正整数:原码2.负整数:补

12、码-对象就像一个充满氢气的气球,我们没有办法直接去得到它,要想对它的使用都必须通过一根连着它的绳子来访问,这根绳子就是对象的引用。一根绳子同时只能连着一个气球,就像一个引用同时只能指向一个对象;可以用多根绳子同时连接一个气球,也就是可以有多个引用同时指向同一个对象;如果某个气球没有任何绳子连着它,那它就会飞走,同样,某个对象如果没有引用连接它,它就会成为垃圾,等着被 java 的垃圾收集器回收;如果某根绳子没有连接任何气球,那么它就是一个空引用,对它的访问没有意义。同样,某个引用如果没有指向对象,那么对它的访问将会抛出 NullPointerException24. 练习:判断下列语句中的 a

13、 和 b 的值是否相等:(1) int a=0; int b=0; a=0,b=48(2) int a=0; char b=u0000; a=0,b=null(3) int a=123; char b=u007B; a=123,b=(4) int a=0x123(16 进制); char b=123; a=291,b=(5) int a=3+5; char b=8; a=56,b=8(6) int a=3+5; char b=8; a=104,b=8(7) char a=u0000; char b=0; a=null,b=0高博 S1 阶段 java 笔记、作业 梦在心上 命在手中 路在脚下2

14、5. 逻辑运算符:允许父类对象来引用子类对象,但是实际运行过程中调用的是子类的方法或者属性编译时调用父类方法,运行时调用的是实际引用类型的方法,这种现象叫做动态绑定多态现象:运行时多态、编译时多态1.编译时多态:方法的重载(不建议举例)2.运行时多态:方法的覆盖(建议举例)属性有没有多态性,有1 父类静态3 父类实例4 父类构造2 子类静态5 子类实例6 子类构造instanceof 判断一个对象是否属于指定的类,判断依据运行时该引用变量所引用的对象的类43. 练习String 类是否可以被继承 不能public final class String extends ObjectDay544.

15、 static 关键字:1.修饰变量,变量被所有实例所共享2.修饰方法,方法内不可以引用非静态成员;但是非静态方法可以引用静态成员45. 单例模式:一个类的实例只能存在一个a.构造方法私有化1.懒汉式,缺点多线程访问不安全public static Singleton2 getInstance()if(st = null)高博 S1 阶段 java 笔记、作业 梦在心上 命在手中 路在脚下st = new Singleton2();return st;elsereturn st;2.恶汉式,缺点可能造成空间的浪费private static Singleton st1 = new Single

16、ton();46. abstract 类:1.如果一个方法没有方法体,那么该方法一定为 abstract 方法2.如果一个类中有一个 abstract 的方法,那么该类一定为 abstract 类3.abstract 类不能被实例化,只能通过字类来实现Abstract a = new MyClass();/MyClass extends Abstract47. 接口:1.接口是一个特殊的抽象类2.接口中的方法都是 public 的抽象方法3.一个类可以实现多个接口InterfaceTest implements MyInterfaceA,MyInterfaceB4.接口中的所有属性都会自动声明

17、为 final static(全局常量)final static int a = 10;public abstract void showA();修饰符 类内部 同一个包 子类 不同包public Y Y Y Yprotected Y Y Y N缺省 Y Y N Nprivate Y N N N(基本数据类型都可以用=比较)=与 equals 的区别:在 Object 类中 equals(Object obj)方法与=的比较结果一致的但是 equals 是一个方法可以被重写,例如在 String 类 中 equals 比较的就是字符串的内容包装类用于基本数据类型的区别:1.包装类是对基本数据类

18、型的一种扩展,定义了很多类型之间的转换方法2.针对一些集合类型,他们要求我们存入集合的是 Object,那么基本数据类型不能满足要求,就只能放包装类的对象Day6异常与错误:1.异常是在一个程序执行过程中出现的一个事件,它中断了正常指令的执行2.偏离了可接受代码的一个动作或实例就是错误高博 S1 阶段 java 笔记、作业 梦在心上 命在手中 路在脚下异常结构的分类:ThrowableError Exception未检查异常(运行时) 已检查异常(编译时)48. 对异常处理方式-捕获:try catch(Exception e)*注意:catch()代码块可以存在多个,但是 catch 中的异

19、常类型应该 由小到大try catch(Exception e)finally*注意:tryfinally 可以搭配使用编译时异常举例:FileInputStream fin = new FileInputStream(“./a.txt“);上面代码在编译时出错,必须对可能发生的异常进行处理,否则代码编译不通过对异常的处理-抛出:throws 表明当前函数不处理出现的异常,将异常抛出,交给调用方去处理(处理的方式:捕获、继续抛出)throw 关键字,表明被捕获的异常没有经过处理直接抛出public static String compare(String str) throws Excepti

20、ontry if(str.equals(“abc“)return “abc“;else return str; catch (Exception e) throw e;/e.printStackTrace();/System.out.println(e.getMessage();自定义异常:class MyException extends Exceptionpublic MyException(String message)super(message);高博 S1 阶段 java 笔记、作业 梦在心上 命在手中 路在脚下-在继承关系中,子类覆盖父类的方法,抛出的异常类型不能比父类更宽泛Jav

21、a 高级的课程内容:1.java 集合2.反射3.多线程4.I/O5.网络编程6.JDK5.0 新特性49. JAVA 内部类的作用:一、 定义放在一个类的内部的类我们就叫内部类。二、 作用1.内部类可以很好的实现隐藏,也就是封装性。一般的非内部类,是不允许有 private 与protected 权限的,但内部类可以2.内部类拥有外围类的所有元素的访问权限3.可是实现多重继承4.可以避免修改接口而实现同一个类中两种同名方法的调用三、 例子1.实现隐藏平时我们对类的访问权限,都是通过类前面的访问修饰符来限制的,一般的非内部类,是不允许有 private 与 protected 权限的,但内部类

22、可以,所以我们能通过内部类来隐藏我们的信息。可以看下面的例子Java 代码 复制代码1. package beyondx; 3. public class Example # private class InsideClass implements InterfaceTest # # public void test() # # System.out.println(“这是一个测试“); # # # public InterfaceTest getIn() # # return new InsideClass(); # 高博 S1 阶段 java 笔记、作业 梦在心上 命在手中 路在脚下# p

23、ackage beyondx; public class Example private class InsideClass implements InterfaceTest public void test() System.out.println(“这是一个测试“); public InterfaceTest getIn() return new InsideClass(); 上面的 InsideClass 就是一个内部类,访问修饰符是 private客户端程序Java 代码 复制代码1. package insidecategory; 2. 3. public class TestExa

24、mple 4. 5. public static void main(String args) 6. 7. Example a=new Example(); 8. InterfaceTest a1=a.getIn(); 9. a1.test(); 10. 11. package insidecategory; public class TestExample public static void main(String args) Example a=new Example(); InterfaceTest a1=a.getIn(); a1.test(); 从这段代码里面我只知道 Exampl

25、e 的 getIn()方法能返回一个 InterfaceTest 实例但我并不知道这个实例是这么实现的。而且由于 InsideClass 是 private 的,所以我们如果不看代码的话根本看不到这个具体类的名字,所以说它可以很好的实现隐藏。高博 S1 阶段 java 笔记、作业 梦在心上 命在手中 路在脚下2.可以无条件地访问外围类的所有元素Java 代码 复制代码1. package beyondx; 2. 3. public class TagBean 4. 5. private String name=“luffyke“; 6. private class InTest 7. 8. p

26、ublic InTest() 9. 10. System.out.println(name); 11. 12. 13. public void test() 14. 15. new InTest(); 16. 17. public static void main(String args) 18. 19. TagBean bb=new TagBean(); 20. bb.test(); 21. 22. package beyondx; public class TagBean private String name=“luffyke“; private class InTest public

27、InTest() System.out.println(name); public void test() new InTest(); public static void main(String args) TagBean bb=new TagBean(); bb.test(); 高博 S1 阶段 java 笔记、作业 梦在心上 命在手中 路在脚下看上面 name 这个变量是在 TagBean 里面定义的私有变量。这个变量在内部类中可以无条件地访问System.out.println(name);3.可以实现多重继承这个特点非常重要,个人认为它是内部类存在的最大理由之一。正是由于他的存在使得

28、 Java 的继承机制更加完善。大家都知道 Java 只能继承一个类,它的多重继承在我们没有学习内部类之前是用接口来实现的。但使用接口有时候有很多不方便的地方。比如我们实现一个接口就必须实现它里面的所有方法。而有了内部类就不一样了。它可以使我们的类继承多个具体类或抽象类。大家看下面的例子。类一Java 代码 复制代码1. package beyondx; 2. 3. public class Example1 4. 5. public String name() 6. 7. return “luffyke“; 8. 9. package beyondx; public class Exampl

29、e1 public String name() return “luffyke“; 类二Java 代码 复制代码1. package beyondx; 2. 3. public class Example2 4. 5. public int age() 6. 7. return 25; 8. 9. package beyondx; public class Example2 public int age() return 25; 高博 S1 阶段 java 笔记、作业 梦在心上 命在手中 路在脚下类三Java 代码 复制代码1. package beyondx; 2. 3. public cl

30、ass MainExample 4. 5. private class test1 extends Example1 6. 7. public String name() 8. 9. return super.name(); 10. 11. 12. private class test2 extends Example2 13. 14. public int age() 15. 16. return super.age(); 17. 18. 19. public String name() 20. 21. return new test1().name(); 22. 23. public in

31、t age() 24. 25. return new test2().age(); 26. 27. public static void main(String args) 28. 29. MainExample mi=new MainExample(); 30. System.out.println(“姓名:“+mi.name(); 31. System.out.println(“年龄:“+mi.age(); 32. 33. package beyondx; public class MainExample private class test1 extends Example1 publi

32、c String name() return super.name(); private class test2 extends Example2 public int age() return super.age(); 高博 S1 阶段 java 笔记、作业 梦在心上 命在手中 路在脚下 public String name() return new test1().name(); public int age() return new test2().age(); public static void main(String args) MainExample mi=new MainExa

33、mple(); System.out.println(“姓名:“+mi.name(); System.out.println(“年龄:“+mi.age(); 大家注意看类三,里面分别实现了两个内部类 test1,和 test2 ,test1 类又继承了Example1,test2 继承了 Example2,这样我们的类三 MainExample 就拥有了 Example1 和 Example2的方法和属性,也就间接地实现了多继承。四、 避免修改接口而实现同一个类中两种同名方法的调用。大家假想一下如果,你的类要继承一个类,还要实现一个接口,可是你发觉你继承的类和接口里面有两个同名的方法怎么办?你

34、怎么区分它们?这就需要我们的内部类了。看下面的代码接口Java 代码 复制代码1. package beyondx; 2. 3. public interface Incrementable 4. 5. void increment(); 6. package beyondx; public interface Incrementable void increment(); 类 MyIncrementJava 代码 复制代码1. package beyondx; 2. 3. public class MyIncrement 4. 5. public void increment() 6. 7.

35、 System.out.println(“Other increment()“); 8. 9. static void f(MyIncrement f) 高博 S1 阶段 java 笔记、作业 梦在心上 命在手中 路在脚下10. 11. f.increment(); 12. 13. 14. package beyondx; public class MyIncrement public void increment() System.out.println(“Other increment()“); static void f(MyIncrement f) f.increment(); 大家看

36、上面加黑的部分,两个方法都是一样的。在看下面这个类要继承这两个类如果不用内部类Java 代码 复制代码1. package beyondx; 2. 3. public class Callee2 extends MyIncrement implements Incrementable 4. 5. public void increment() 6. 7. /代码 8. 9. package beyondx; public class Callee2 extends MyIncrement implements Incrementable public void increment() /代码

37、想问一下大家 increment()这个方法是属于覆盖 MyIncrement 这里的方法呢?还是 Incrementable这里的方法。我怎么能调到 MyIncrement 这里的方法?显然这是不好区分的。而我们如果用内部类就很好解决这一问题了。看下面代码Java 代码 复制代码1. package beyondx; 2. 3. public class Callee2 extends MyIncrement 高博 S1 阶段 java 笔记、作业 梦在心上 命在手中 路在脚下4. 5. private int i=0; 6. private void incr() 7. 8. i+; 9.

38、 System.out.println(i); 10. 11. private class Closure implements Incrementable 12. 13. public void increment() 14. 15. incr(); 16. 17. 18. Incrementable getCallbackReference() 19. 20. return new Closure(); 21. 22. package beyondx; public class Callee2 extends MyIncrement private int i=0; private voi

39、d incr() i+; System.out.println(i); private class Closure implements Incrementable public void increment() incr(); Incrementable getCallbackReference() return new Closure(); 我们可以用内部类来实现接口,这样就不会与外围类的方法冲突了。高博 S1 阶段 java 笔记、作业 梦在心上 命在手中 路在脚下Day7150. 数组:int a = new int10;1.保存类型唯一(局限性)2.长度是固定(局限性)3.可以保存多

40、个数据(特性)51. 集合:是一种拥有数组特性,但是又打破了数组局限性的一种存储数据的方式集合的种类:ListSetMap其中 List、Set 是 Collection 接口的子接口ArrayList 的特点:1.存放顺序与取出顺序一致2.可以存放重复的数据对保存了自定义类型的 ArrayList 排序:1.实现 Comparable 接口中的 compareTo(Object obj)方法Collections.sort(list);2.自定义一个比较器类实现 Comparator 接口Collections.sort(list, new MyComparetor();*第二种排序方式可以

41、在不更改源代码的基础上实现排序52. 练习 1:1.编写一个 myArrayList 类,实现添加 add 和获得元素 get 方法(注:以整形数组为例即可)注意:添加方法要实现数组的自动增长class MyArrayListprivate int a = new int10;public void add(int a)public int get(int b).2.通过学习 LinkedList 类的 API 实现堆栈的数据结构:后进先出class MyStack /5,6,4,7private LinkedList = new LinkedList();public void push(O

42、bject obj)public Object pop()public class Day7_1Homework private int a = new int10;int i = 0;int b;高博 S1 阶段 java 笔记、作业 梦在心上 命在手中 路在脚下public void Day7Homework() public void add(int c) if (i value 键值对的形式来存放对 Map 进行迭代:1.先去 key 的集合2.对 key 的集合进行迭代3.根据 key 集合迭代的结果取道所对应的 valueSet keySet = map.keySet();Iter

43、ator it = keySet.iterator();while(it.hasNext()Object key = it.next();System.out.println(map.get(key);HashMap 与 Hashtable 的区别:1.HashMap 中 key/value 都可以存放空值;Hashtable 不允许存放空值2.HashMap 是线程不同步的,Hashtable 是线程同步的同步举例:多个线程如果需要修改同一个变量,为了避免错误需要对读写进行控制,这种空值就叫同步Day8256. 反射:从 JDK1.2 之后出现的一种特性。在我们之后学习的一些框架技术:Spr

44、ing、Hibernate、Junit. 都应用了反射技术57. Class 类:是对 java 类抽象出来的一个类。用来描述 java 类所具有的共性Person p1 = new Person()获取 Class 对象的三种方式:/1.通过类名.class 来获取Class clazz1 = String.class;/2.通过对象名来获取String str = “abc“;Class clazz2 = str.getClass();/3.通过完整的类名来获取Class clazz3 = Class.forName(“java.lang.String“);Constructor 类: n

45、ewInstance(Object. initargs) 表示调用有参或无参的构造高博 S1 阶段 java 笔记、作业 梦在心上 命在手中 路在脚下Class 类: newInstance()表示调用午餐构造Field 类:clazz.getField(“name“);/获得该类的公共属性nameField.get(t1);/得到 t1 对象在该属性中所对应的值clazz.getDeclaredField(“salary“);/拿到所有声明过得属性salaryField.setAccessible(true);/将该属性设置为可访问的58. 练习:获取一个类中所有的 String 类型的成员

46、变量,把里面的字符 e 替换成 BchangeChar(Object obj)1.获得 obj 对象所对应的 Class 对象2.获得全部成员变量3.判断成员变量中那些为 String 类型4.如果该成员为 String 类型,那么就获取在该对象 obj 上该属性所对应的值5.进行字符替换6.将替换好的字符串赋值给 objimport java.lang.reflect.Field;class Teacher02 public String name;private int salary;public Teacher02(String name, int salary) this.name =

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报