Java核心技术读书笔记.ppt
- 格式:ppt
- 大小:438.00 KB
- 文档页数:25
深入理解java核心技术:写给java工程师的干货笔
记
深入理解Java核心技术:写给Java工程师的干货笔记
作者:XXX
出版时间:XXXX年X月
目录
前言
第1章 Java语言基础
Java的历史与现状
Java的跨平台原理
数据类型与变量
运算符与表达式
控制流语句
函数与方法
错误与异常处理
面向对象编程基础类与对象的关系
继承与多态
封装与访问控制
接口与回调函数
第2章 Java核心技术集合框架概述
List接口及其实现类 Set接口及其实现类 Map接口及其实现类泛型与集合框架
并发编程基础
多线程编程技术
网络编程基础
数据库编程基础
第3章 Java扩展技能 XML解析技术
JSON解析技术
正则表达式应用
日志框架使用
单元测试框架使用
版本控制工具使用
第4章 Java应用案例
日志管理系统的设计与实现
网络爬虫的设计与实现
数据库分页查询的优化方案
多线程下载器的设计与实现
基于Spring框架的Web应用开发实践。
《Java核⼼技术》读书笔记(1-5章)+= 是右结合运算符枚举类型:变量只能存储这个类型声明中给定的某个枚举值,或者null,表⽰没有设置任何值。
switch,如果case匹配不上会调⽤defaultfor循环中注意浮点数的判断for(double i=0,i!=10,i+0.1){sout{i}}Arrays是⼀个类,包含操作数组的静态⽅法如toString,sort,equal,binarySearch⼆维数组实际上是⼀个特殊的数组,第⼀个索引是数组的内存中的位置,第⼆个是该数组的元素索引。
隐式参数,如this,⽅法的调⽤者,如this。
显⽰参数,传递的参数。
类的静态域是所有实例共享静态⽅法使⽤的场景不需要访问对象状态⼀个⽅法只需要访问类的静态域⽅法参数使⽤不能修改⼀个基本数据类型的参数可以改变⼀个对象的参数状态不能让对象参数引⽤⼀个新的对象,⽆法实现交换功能⼀个构造器可以调⽤另⼀个// 使⽤thispublic Employee(double s){this("employee",s);nextId++}super1. 调⽤⽗类的⽅法2. 调⽤⽗类构造器,只能是第⼀条构造器,如果参数不⼀致编译报错私有域⽗类不能直接使⽤⼦类private私有域。
⽅法覆盖在覆盖⼀个⽅法的时候,⼦类⽅法不能低于超类⽅法的可见性。
如果超类⽅法时public修饰,⽽⼦类遗漏了该修饰符,那么编译器会把它解释为试图提供更严格的访问权限。
阻⽌继承final关键字修饰类,只有其⽅法被⾃动的成为final,⽽不包括域。
内联早期java中,有些程序员为了避免动态绑定的带来的系统开销⽽使⽤final关键字,⽽如果⼀个⽅法没有被覆盖并且很短,编译器就能够对他进⾏优化处理,这个过程称为内联。
强转在超类转换成⼦类前,应该⽤instanceof进⾏检查。
如何有效的定义equals1. 判断this==otherObject2. 判断otherObject==null3. 判断getClass==otherObject.getClass()4. 判断私有域的值是否⼀致ArrayListensureCapacity设定了⼀个值可以加快arrayList初始化时间add⽅法添加,set⽤来替换,如果不存在会报错public void demoTest01(){ArrayList<String> list = new ArrayList<>(3);list.set(0,"3");}ng.IndexOutOfBoundsException: Index: 0, Size: 0装箱拆箱包装类由于每个值分别包装在对象中,所有ArrayList<Integer>的效率远远低于int[]数组,适⽤于⼩型集合。
Java核⼼技术-读书笔记基本语法Java中的所有函数都属于某个类的⽅法Java没有任何⽆符号的int、long、short 或 byte 类型浮点数值不适⽤于⽆法接受舍⼊误差的⾦融计算中,⽐如2.0-1.1不会输出想要的0.9,如果不允许有任何舍⼊误差,应该使⽤BigDecimal类建议不要在程序中使⽤char类型,除⾮确实需要处理UTF-16的代码单元,最好将字符串作为抽象数据类型处理boolean类型:整数和布尔值之间不能相互转换利⽤final指⽰常量,只能赋值⼀次,⼀旦被赋值后,就不能更改了类常量:希望某个常量可以在⼀个类中的多个⽅法中使⽤,⽤ static final 设置,如果⼀个常量被声明为 public 那么其他类⽅法也可以使⽤这个常量,const是java的保留关键词,但并没有使⽤操作符:>>>运算符会⽤0填充⾼位,这与>>不同,它会⽤符号位填充⾼位,不存在<<<运算符字符串:String.subtring,+,String.join等等String类没有提供⽤于修改字符串的⽅法,不能修改Java字符串中的字符,可以提取⼦串后拼接,String不可变,StringBuilder可变⼀定不要使⽤==运算符检测两个字符串是否相等,它只能判断两个字符串是否在放置在同⼀个位置上,可以⽤equals或compareTo空串是长度为0的字符串,是⼀个java对象,null则不是⽐C++多了带标签的break: ⽬的是跳出嵌套的深层循环,标签必须放在希望跳出的最外层循环之前,并紧跟⼀个冒号,通过执⾏带标签的break跳转到带标签语句块的末尾,if语句也同样使⽤,但不能跳⼊语句块,只能跳出Java没有提供运算符重载的功能,除了字符串拼接的 +java.math包中的BigInteger和BigDecimal类可以处理包含任意长度数字序列的数值,实现了任意精度的整数和浮点数运算数组:将⼀个数组变量拷贝给另⼀个数组变量,两个变量将引⽤同⼀个数组int[] a = b;a[5] = 12; // now b[5] is also 12如果希望将⼀个数组的所有值拷贝到另⼀个新的数组中,需要使⽤Arrays类的copyOf⽅法OOP算法+数据结构 = 程序⾯向过程往往先考虑算法实现,然后考虑数据存储⾯向对象是相反的过程,将数据放在第⼀位,才考虑操作数据的算法⾯对⼀个需求,先从设计类开始,然后再往类中添加⽅法。
java核⼼技术要点笔记2第4章对象和类1.⾯向对象类:构造对象的模板,创建类的实例:由类构造对象的过程,封装,继承;对象:对象的特性——对象的⾏为,对象的状态,对象的标识;类之间的关系: 依赖(“user-a”),⼀个类的⽅法操纵另⼀个类的对象 聚合(“has-a”),类A的对象包含类B的对象 继承(“is-a”),类A 拓展了类B2.使⽤预定义类并不是所有的类都具有⾯向对象的特征,例如Math类;对象不会⾃动被初始化为null,⽽必须通过调⽤new或将它们设置为null进⾏初始化(可以将java对象看成是c++的对象指针);3.⽤户⾃定义类主⼒类:类中没有main⽅法,有⾃定义的实例域和实例⽅法;在⼀个源⽂件中,只能有⼀个共有类,但可以有任意数⽬的⾮公有类;多个源⽂件的使⽤:编若两个类单独存在于两个源⽂件,则编译 javac Employee*.java 或者 javac EmployeeTest.java (会⾃动搜索Employee.java)构造器:构造器与类同名,每个类可以有⼀个以上的构造器,构造器可以有0个,1个或多参数,构造器没有返回值,伴随new操作⼀起使⽤;隐式参数和显式参数:关键字this表⽰隐式参数;import java.util.*;1public class StaticTest2 {3public static void main(String[] args)4 {5// fill the staff array with three Employee objects6 Employee[] staff = new Employee[3];78 staff[0] = new Employee("Tom", 40000);9 staff[1] = new Employee("Dick", 60000);10 staff[2] = new Employee("Harry", 65000);1112// print out information about all Employee objects13for (Employee e : staff)14 {15 e.setId();16 System.out.println("name=" + e.getName() + ",id=" + e.getId() + ",salary="17 + e.getSalary());18 }1920int n = Employee.getNextId(); // calls static method21 System.out.println("Next available id=" + n);22 }23 }2425class Employee26 {27private String name;28private double salary;29private int id;30private static int nextId = 1;31public Employee(String n, double s)33 name = n;34 salary = s;35 id = 0;36 }3738public String getName()39 {40return name;41 }4243public double getSalary()44 {45return salary;46 }4748public int getId()49 {50return id;51 }5253public void setId()54 {55 id = nextId; // set id to next available id56 nextId++;57 }5859public static int getNextId()60 {61return nextId; // returns static field62 }6364public static void main(String[] args) // unit test65 {66 Employee e = new Employee("Harry", 50000);67 System.out.println(e.getName() + " " + e.getSalary());68 }697071 }4.静态域和静态⽅法静态域:若将域定义为static,每个类中只有⼀个这样的域。