java知识点总结.docx
精品名师归纳总结1. 命名规章Java 总结可编辑资料 - - - 欢迎下载精品名师归纳总结a) 必需使用字母,数字, _, $ 组成b) 不能以数字开头c) 不能使用关键字或保留字1.1 类名: 全部单词首字母大写,其余小写( HelloWorld )1.2 变量:从其次个单词开头首字母大写, 其余小写 , 使用名词( carColor )1.3 方法:从其次个单词开头首字母大写, 其余小写 , 使用动词( qiChuang)1.4 包名: 全部字母小写1.5 常量: 全部字母大写,单词之间用 _隔开2. 基本数据类型2.1 数值型2.1.1 整型字节型 Byte -128127占 1 个字节短整型 short-32768 32767占 2 个字节整型 int-2147483648 2147483647占 4 个字节长整型 long-9223372036854775808 9223372036854775807占 8 个字节声明时可以带 L/l2.2 浮点型2.2.1 float浮点型占 4 个字节 赋值时必需带 F/f 后缀2.2.2 double双精度浮点型占 8 个字节 可以带 D/d 后缀可编辑资料 - - - 欢迎下载精品名师归纳总结2.3 布尔型 boolean( true|false)2.4 字符型 char占 2 个字节取值范畴 'u0000' 'uffff' char 必需被单引号表示,并且必需只能表示一个字符。java 中的字符型接受 Unicode 字符集2.5 引用数据类型类,接口,数组2.6 类型转换自动类型转换 / 隐式转换: 小类型到大类型属于自动类型转换强制类型转换 / 显示转换: 大类型到小类型属于强制类型转换byte 或 short 的运算结果必需是 intchar和数值型可以互转3. 数组表示一组相同类型的数据集合。长度是固定的,类型固定。在内存中占用一块连续的空间。int intArray = new int10;int intArray = new int10,20,30,40,50,60; int intArray1 = 10,20,30,40,50,60;int intArray2;intArray2 = new int10,20,30,40,50,60;通过 length属性来猎取长度, 通过下标拜访元素 intArray1,假如超出范畴就抛出反常: java.lang.ArrayIndexOutOfBoundsException4. 面对对象的特性4.1 封装可编辑资料 - - - 欢迎下载精品名师归纳总结将属性或方法通过 private关键字修饰为私有的,只能由自己拜访,供应一个或多个公开的方法给外部拜访,可以在方法中添加自己的规律判定。隐匿类的实现细节,达到部分的代码安全,实现数据的安全精确性。4.2 继承从父类中获得其属性和方法的一种机制,削减重复代码。通过extends 关键字来实现。* java 只支持单继承。一个类只能有一个父类。但是一个父类可以有多个子类。* 在 java 中全部类都是直接或者间接的继承于java.lang.Object4.2.1 方法重写( Override ):在子类中声明一个跟父类中一样的方法掩盖从父类继承的该方法, 达到扩展的目的。1. 方法名,参数列表,返回值类型必需跟父类中的一样2. 拜访权限不能比父类中的更严格3. 不能抛出比父类中更大的反常4.2.2 方法重载( Overload ):在同一个类中实现多个相同名称的方法。 达到在不一样的前提条件下实现相同的功能。1. 方法名必需相同2. 参数列表必需不一样(个数,类型,次序)*跟返回值类型无关4.3 多态可编辑资料 - - - 欢迎下载精品名师归纳总结当父类引用指向子类对象时就是多态。Person p = new ChinesePerson;*假如子类中重写了方法,执行时会执行子类中的方法假如子类中额外声明白方法,将不能被执行对象造型( Casting )将父类类型对象转成子类类型对象(假如对象是用父类类型 new出来的就会报错) ChinesePerson cp = ChinesePerson p;对象造型之前可以通过instanceof关键字判定对象是否是将要造型的类型。ifp instanceof ChinesePerson ChinesePerson cp = ChinesePerson p; cp.sing;5. java的内存安排5.1 栈效率高,空间小通常用于储存局部空间的变量和引用5.2 堆效率低,空间大通常用于储存 new出来的对象(也包含数组对象)6. 构造方法用于创建对象时对对象进行初始化的方法,跟类名一样,没有返回值位。new可编辑资料 - - - 欢迎下载精品名师归纳总结对象时会被执行。* 每个类都必需拥有至少一个构造法* 假如没有显示定义构造方法,虚拟机会自动给该类供应一个无参的默认构造方法* 一旦显示定义构造方法,虚拟机将不会供应默认构造方法* 构造方法可以重载* 构造方法不能被继承,所以也不能被重写7. this和 super7.1 表示对象this表示当前类的当前对象super 表示父类对象7.2 用于调用其他构造方法this用于调用当前类的其他构造方法 * 必需在第一行super 用于调用父类构造方法 * 必需在第一行*子类中的构造方法必需直接或间接调用父类的构造方法假如没有显示调用就会执行 super;8. 变量初始化(成员变量,初始化数组时)byte0 short0int0long0Lfloat0.0F可编辑资料 - - - 欢迎下载精品名师归纳总结double0.0Dbooleanfalse char'u0000' 引用数据类型null9. 对象创建过程9.1 在栈中为引用创建空间9.2 当执行 new的时候在堆中开创空间并创建对象9.3 对对象进行属性初始化9.4 执行构造方法进行再次初始化9.5 将堆中对象的首的址赋值给栈中的引用空间10. 包java 中用于解决命名冲突,以及治理众多类的机制。10.1 在类的第一行有效代码处编写package xxx.xxx.xx;10.2 引入其他包中的类import xxx.xxx.xx.Xxx;10.3 引入整个包下的全部类import xxx.xxx.xx.*;10.4 编译和执行包下的类(命令位置必需是在项目起始目录)e:/xxx -> javac ./com/direct/MainClass.java e:/xxx -> java com.direct.MainClass11. 抽象类可编辑资料 - - - 欢迎下载精品名师归纳总结不能被实例化的类(不能被创建对象) ,用 abstract关键字来修饰。* 抽象方法:没有方法体的虚方法。用abstract修饰。* 包含抽象方法的类必需是抽象类。* 抽象类也可以不包含抽象方法。* 抽象类也可以包含非抽象方法。* 子类必需重写实现父类中的抽象方法。不然也必需定义为抽象类。12. 接口完全抽象体,只能包含抽象方法和常量。用interface关键字来修饰。*接口中的方法必需是 public abstract的*接口可以继承接口,可以多继承*类可以实现多个接口(用 implements 来实现)*接口没有构造方法13. final修饰类: 最终类,不能被继承。修饰方法:最终方法,不能被重写修饰变量:最终变量,常量,一旦赋值不能被转变14. static方法:静态方法,属于类的方法,使用类名. 方法名 来拜访属性:静态属性,属于类的变量,使用类名 . 变量名来拜访。每一个类只有一份该对象。(跟对象无关)在静态方法中不能拜访非静态方法和属性以及使用this和 super 关键字。代码块:静态代码块 static .当类被加载时会被执行。由于每个类只可编辑资料 - - - 欢迎下载精品名师归纳总结会加载一次,所以该代码库只会执行一次。15. 单例模式一个类只答应被创建一个对象。三要素15.1 私有化构造方法15.2 创建静态的私有的本类对象(单例对象)15.3 供应公开的静态方法供外界猎取单例对象16. 拜访权限publicprotectedfriendly/default/缺省private当前类同包子类×××其他×××16. Object类toString: 用于将当前对象转成 String*默认 Object 中的实现为 return getClass.getName + "" + Integer.toHexStringhashCode;getClass :猎取对象所属类equals : 供应用于比较引用数据类型是否相等的方法,必需在类中重写才有效。可编辑资料 - - - 欢迎下载精品名师归纳总结hashCode: 唯独区分每个对象的 hash 码17. 可变字符串由于 String被设计为 final并且其底层接受常量字符数组来表示,所以 String对象中的内容不能更换。当需要做大量字符串连接时java 会创建大量无用对象占用内存。可以使用 StringBuffer或StringBuilder这样的可变字符串来实现字符串的连接。StringBuilder buffer = new StringBuilder"zhangsan" buffer.append",lisi"buffer.append",wangwu"buffer.append",zhaoliu" String str1 = buffer.toString; StringBuffer和 StringBuilderStringBuffer jdk1.0时产生的,重量级,线程安全的,效率低StringBuilder jdk1.5时产生,轻量级,非线程安全的,效率高18 GC( Garbage Collection)垃圾回收机制垃圾回收机制是 java 虚拟机供应的自动释放无用对象的内存空间的机制。当对象不再被引用时,就视为垃圾对象,就有可能会被回收。自动运行,在程序中无法干预。可以建议,但不肯定被接受。/建议虚拟机进行垃圾回收,但虚拟机不肯定接受System.gc;可编辑资料 - - - 欢迎下载精品名师归纳总结/* 当垃圾回收器将要回收该对象时被调用* 该方法只会被调用一次* 由 Object 类定义的方法, java 虚拟机自动调用,程序中只需要重写即可*/protected void finalize throws Throwable System.out.println"被回收时执行 "19. 日期时间处理19.1 Date表示时间类型/创建指定时间对象Date d = new Date1000;/创建当前时间对象 等同于 new DateSystem.currentTimeMillis Date d = new Date;/猎取时间对象表示的毫秒数long ms = d.getTime19.2 Calendar日历处理/猎取日历对象 , 默认日历翻到当前时间Calendar c = Calendar.getInstance;c.setTimenew Date1000;/翻到 1970 年 1 月 1 日 0 时 0 分 1 秒处 也可以写为 : c.setTimeInMillis1000;可编辑资料 - - - 欢迎下载精品名师归纳总结/ 常量Calendar.YEAR Calendar.MONTH / 0 - 11 Calendar.DATE Calendar.HOUR_OF_DAY Calendar.MINUTE Calendar.SECOND Calendar.MILLISECONDCalendar.DAY_OF_WEEK / 1-7 SUNDAY - SATURDAYCalendar.WEEK_OF_MONTH Calendar.WEEK_OF_YEAR/ get方法 猎取对应字段的值int year = c.getCalendar.YEAR; /猎取年int month = c.getCalendar.MONTH; /猎取月 0 - 11/ set方法 设置字段值c.setCalendar.MONTH, 11;/ add方法 在当前时间上的特定字段上翻动c.addCalendar.DATE, -3;可编辑资料 - - - 欢迎下载精品名师归纳总结/ roll方法 在当前时间上的特定字段上翻动不影响其他字段c.rollCalendar.DATE, -1;/翻到本月的最终一天c.setCalendar.DATE, 1;c.rollCalendar.DATE, -1;19.3 SimpleDateFormat日期和字符串互转工具类/创建格式化对象SimpleDateFormat sdf = new SimpleDateFormat"yyyy-MM-dd HH:mm:ss"或SimpleDateFormat sdf1 = new SimpleDateFormat; sdf.applyPattern"yyyy年 MM月 dd 日 HH 时 mm分 ss 秒 E"/将时间对象转成制定格式字符串String str = sdf.formatnew Date;/将制定格式字符串转成时间对象Date d = sdf.parseds;20. 反常程序运行中显现的错误。会打断程序正常执行。是java 中供应的一种错误提可编辑资料 - - - 欢迎下载精品名师归纳总结示和处理的机制。20.1 反常分类错误ERROR: 通常指不是由程序造成并且在程序中不能处理或防止的错误。比如:内存溢出, Java 虚拟机出错等反常Exception:通常指由于程序代码不严谨造成的可以防止的错误或在程序中可以预先处理的错误。20.2 抛出反常通过 throw 关键字抛出反常throw new IndexOutOfBoundsException;通过 throws 关键字在方法上标注有可能会发生的反常20.3 反常处理try . /尝试执行可能会发生反常的代码块 catch. /捕获 try块中发生的反常并处理. catch. . catch. . finally /必需执行块,无论 try中是否发生反常,该块都会被执行,即使 try中有 return也会在 return之前被执行.可编辑资料 - - - 欢迎下载精品名师归纳总结.*多重 catch 时父类反常必需写到子类之后。20.4 自定义反常只需继承 Exception或 RuntimeException即可实现自定义反常21. 集合( Collection)/容器( Container )集合结构中的根接口,定义集合的基本方法( add,addAll,remove,contains,clear,iterate.等)21.1 List(有序可重复)有序集合,会记录存放到容器中的元素的次序,并且可以按索引猎取对应的元素。答应重复元素21.1.1 ArrayList底层接受数组来实现 ,按下标查找数据效率高 ,需要在内存中开创连续空间来储备 ,需要扩容和缩容在中间插入和删除数据时会导致其后的全部元素移动, 所以中间操作效率低非线程安全的 , 效率高21.1.2 LinkedList底层接受双向链表来实现 ,可编辑资料 - - - 欢迎下载精品名师归纳总结按下标查找数据效率低 ,不需要在内存中开创连续空间来储备 ,在中间插入和删除数据时效率高非线程安全的 , 效率高21.1.3 VectorJDK1.0 时实现的可变数组 , 底层接受数组来实现 , 跟 ArrayList的特点相像线程安全的 , 效率低21.1.4 Stack数据结构栈的实现 FILO21.2 Set (无序不行重复)无序集合,不会记录存放次序,不能按索引猎取元素,不答应重复元素。21.2.1 HashSet接受 hash 表实现的不行重复的set, 要求被添加的元素类重写hashCode和 equals 方法当被加入的对象已经存在时就不会再次添加到set 中21.2.2 SortedSet实现了排序的 set, 要求被排序对象必需实现 Comparable 接口或者必需传入实现了 Comparator 接口的比较器来实现对象的比较21.2.3 TreeSet排序 set 的实现类 22. Map( jdk1.2 )键值对集合, key 不能重复。可编辑资料 - - - 欢迎下载精品名师归纳总结22.1 HashMap( jdk1.2 )基于 hash 表实现的键值对集合轻量级,非线程安全的,效率高答应 null 作为键或值22.2 Hashtable(jdk1.0 ,继承 Dictionary来实现, jdk1.2之后也实现了 Map接口)也是基于 hash 表实现的键值对集合重量级,线程安全的,效率低不答应 null作为键和值22.3 TreeMap基于红黑树实现的排序的 map Properties表示了一个长久的属性集(可储存在流中或从流中加载)*两个对象相等肯定要有相同的 hashCode23. List的三种迭代方/*遍历 list方式一:*/forint i=0;i<list.size;i+ Object v = list.geti; System.out.printlnv;可编辑资料 - - - 欢迎下载精品名师归纳总结/*遍历 list方式二:*/forObject o : list System.out.printlno;/* 遍历 list方式三:* 迭代器模式 , 迭代子*/Iterator it = list.iterator; whileit.hasNext Object o = it.next;System.out.printlno;24. Set的迭代方式 :/*遍历 list方式二:*/forObject o : set 可编辑资料 - - - 欢迎下载精品名师归纳总结System.out.printlno;/* 遍历 list方式三:* 迭代器模式 , 迭代子*/Iterator it = set.iterator; whileit.hasNext Object o = it.next;System.out.printlno;25. Map 的迭代方式/ map中的键的 set Set ks = map.keySet;forObject key : ks System.out.printlnkey + ":" + map.getkey;/ map中的值的集合Collection values = map.values;可编辑资料 - - - 欢迎下载精品名师归纳总结forObject v : values System.out.printlnv;/猎取 map中的键值对为 set 集合Set entrys = map.entrySet; forObject o : entrys Entry e = Entry o;System.out.printlne.getKey + ":" + e.getValue;26. Collections由 jdk 供应的用于操作 Collection的工具类,其中包含了大量的工具方法 (如:sort , reverse , max, min 等)27. Arrays由 jdk 供应的用于操作数组的工具类, 其中包含了大量的工具方法 (如:sort ,fill, toString,equals, copyOf,binarySearch等)28. Fileboolean canExecute测试应用程序是否可以执行此抽象路径名表示的文件。boolean canRead可编辑资料 - - - 欢迎下载精品名师归纳总结测试应用程序是否可以读取此抽象路径名表示的文件。boolean canWrite测试应用程序是否可以修改此抽象路径名表示的文件。int compareToFile pathname按字母次序比较两个抽象路径名。boolean createNewFile当且仅当不存在具有此抽象路径名指定名称的文件时,不行分的创建一个新的空文件。boolean delete删除此抽象路径名表示的文件或目录。boolean exists测试此抽象路径名表示的文件或目录是否存在。String getName返回由此抽象路径名表示的文件或目录的名称。String getParent返回此抽象路径名父目录的路径名字符串。假如此路径名没有指定父目录,就返回 null。File getParentFile返回此抽象路径名父目录的抽象路径名。假如此路径名没有指定父目录,就返回 null。可编辑资料 - - - 欢迎下载精品名师归纳总结String getPath将此抽象路径名转换为一个路径名字符串。boolean isDirectory测试此抽象路径名表示的文件是否是一个目录。boolean isFile测试此抽象路径名表示的文件是否是一个标准文件。boolean isHidden测试此抽象路径名指定的文件是否是一个隐匿文件。long lastModified返回此抽象路径名表示的文件最终一次被修改的时间。long length返回由此抽象路径名表示的文件的长度。String list返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。String listFilenameFilter filter返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中满意指定过滤器的文件和目录。File listFiles返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。File listFilesFileFilter filter可编辑资料 - - - 欢迎下载精品名师归纳总结返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满意指定过滤器的文件和目录。File listFilesFilenameFilter filter返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满意指定过滤器的文件和目录。static File listRoots列出可用的文件系统根。boolean mkdir创建此抽象路径名指定的目录。boolean mkdirs创建此抽象路径名指定的目录,包括全部必需但不存在的父目录。boolean renameToFile dest重新命名此抽象路径名表示的文件。boolean setExecutableboolean executable设置此抽象路径名全部者执行权限的一个便利方法。boolean setLastModifiedlong time设置此抽象路径名指定的文件或目录的最终一次修改时间。boolean setReadableboolean readable设置此抽象路径名全部者读权限的一个便利方法。boolean setReadOnly标记此抽象路径名指定的文件或目录,从而只能对其进行读操作。boolean setWritableboolean writable可编辑资料 - - - 欢迎下载精品名师归纳总结设置此抽象路径名全部者写权限的一个便利方法。29. I/O流 In/Out Input/Output InputStream/OutputStream29.1 按方向划分 :输入流:InputStream,Reader输出流: OutputStream,Writer29.2 按操作数据类型划分 :字节流: InputStream,OutputStream字符流: Reader, Writer29.4 InputStream字节输入流的超类 源流 FileInputStream 文件输入流int read:从流中读取下一个字节int readbyte buffer:从流中读取 buffer.length个字节到buffer数组中. 返回读取到的长度 , 假如没读到数据就返回 -1 ByteArrayInputStream针对内存中的字节数组的输入流| 装饰流可编辑资料 - - - 欢迎下载精品名师归纳总结ObjectInputStream对象输入流 , 从其他源流中读取由 ObjectOutputStream已经写入好的对象Object readObject:从流中读取一个对象29.5 OutputStream字节输出流| 源流FileOutputStream文件输出流void writeint data:将一个字节的 data 数据写到流中void writebytebuffer,intoffset,intlength:将 buffer中的数据从 offset处开头写入 length个到流中ByteArrayOutputStream针对内存中的字节数组的输出流 通常用于暂时储存数据到内存中 装饰流ObjectOutputStream对象输出流 , 将对象写入到其他源流中 , 供ObjectInputStream读取void writeObject:向流中写入一个对象 |29.6 WriterFileWriter BufferedWriter可编辑资料 - - - 欢迎下载精品名师归纳总结29.7 ReaderFileReader BufferedReader29.8 适配器流(将字节流转换为字符流)InputStreamReader OutputStreamWriterBufferedReader br = new BufferedReadernew InputStreamReaderfis;BufferedWriter bw = new BufferedWriternewOutputStreamWriterfos;30. 对象克隆30.1 浅克隆由 JDK供应的 API 实现,只会克隆当前对象,不会克隆其关联对象。效率高。30.1.1 必需实现 java.lang.Cloneable30.1.2 必需重写 clone 方法( * 必需在 clone 方法中调用 super.clone)30.2 深克隆由对象流将对象序列化到内存或文件之后再读取出来成为新对象,会克隆整个对象及全部关联对象。效率低。可编辑资料 - - - 欢迎下载精品名师归纳总结*将对象写入到硬盘或内存以及在网络上传输等过程称之为序列化, 被序列化的对象必需实现了 Serializable接口, 否就会抛出java.io.NotSerializableException*对象被序列化时不会讲trnsient的属性序列化 .*使用完流之后必需关闭 . 需要将关闭动作在 finally中完成 关闭之前最好判定被关闭流是否为空 31. 多线程31.1 什么是进程? 正在运行中的程序。31.2 什么是线程?进程中的一个执行单元,一个进程中至少包含一个线程。线程不能单独存在,必需在某个进程中。31.3 什么是多线程?一个进程中有多个执行单元,可以同时完成不同的操作。32. 实现多线程32.1 继承 Thread 类实现,重写 run 方法。32.2 实现 Runnable 接口实现*启动线程必需是用 start33. 停止线程*不要使用 Thread 供应的 stop 方法来实现停止线程可编辑资料 - - - 欢迎下载精品名师归纳总结*通过供应公开的方法来更换执行标志的方式来让线程中的代码完成执行,以达到来停止线程的目的。34. 常用方法long getId:猎取线程的 idid是由 jvm 自动安排 void setName:设置线程的名称String getName:猎取线程的名称void setPriority:设置优先级 1MIN_PRIORITY10MAX_PRIORITY默认为 5NORM_PRIORITYint getPriotiry:猎取线程的优先级值void join:等待指定线程执行完成static void currentThread:猎取当前执行的线程对象static void sleep:让当前线程休眠 暂停执行 指定毫秒数static void yield:让当前正在执行的线程变回可运行状态 ,CPU重新挑选线程执行 有可能仍会挑选到该线程 35. 线程同步synchronized synchronized块让多个线程使用同一个锁资源 , 必需得到锁资源的线程才能执行 ,其他线程必需等待该线程执行完之后释放锁资源之后才能猎取锁并执行synchronized方法在方法上用 synchronized修饰,当一个线程在执行对象的同步方可编辑资料 - - - 欢迎下载精品名师归纳总结法时,其他线程将不能执行该对象的任意同步方法,但可以执行非同步方法* 假如是静态方法,就全部静态方法使用的是同一把锁,跟一般方法互不影响Lock36. wait notifywait : 让当前正在使用该对象的线程进入等待状态,进入等待状态之后必需被 notify或 notifyAll唤醒notify: 随机唤醒一个正在当前对象上等待的线程notifyAll:唤醒全部在当前对象上等待的线程