第1章 Java概述
重要特性:
Write Once Run Anyway
简单性:相比C++移除指针、运算符重载、多重继承等,垃圾自动回收。
平台无关性:Java引进虚拟机(JVM,Java Virtual Machine)概念。
安全性:没有指针,内存由系统分配。
动态转载:类运行时是动态装载的。
编译过程:
JRE: Java Runtime Environment JDK:Java Development Kit
JRE和JDK的区别:https://www.cnblogs.com/mark5/p/11063047.html
第2章 Java语言基础
数据类型名称位长字节型byte8短整型short16整型int32长整型long64单精度型float32双精度型double64字符型char16布尔型boolean1
数据输入:类Scanner
,import java.util.Scanner
;
方法nextBoolean()nextDouble()nextFloat()nextInt()nextLine()next()
第3章 程序流程控制
声明多维数组:int array[][],int[][] array
和其他高级编程语言不同,Java多维数组不必须是规则矩阵形式。
int[][] a = new int[2][];
a[0] = new int[2];
a[0][0]=12;
a[0][1]=2;
a[1] = new int[1];
a[1][0]=111;
for(int i=0; i<a.length; i++){
for(int j=0; j<a[i].length; j++){
System.out.print(a[i][j] + "\t");
}
System.out.println();
}
数组复制:System.arraycopy(src, srcPos, dest, destPos, length);
;
int array[] = new int[10];
for(int i=0; i<10; i++){
array[i]=i;
}
int array1[] = new int[5];
System.arraycopy(array, 0, array1, 0, 5);
for(int i:array1){
System.out.print(i + "\t");
}
数组排序:import java.util.Random; import static java.util.Arrays.sort;
;
Random的使用:http://c.biancheng.net/view/867.html
Random r = new Random();
int array[] = new int[10];
for(int i=0; i<10; i++){
array[i]=r.nextInt()%100;
}
sort(array);//Arrays类中的sort()使用的是“经过调优的快速排序法”
for(int i=0; i<array.length; i++){
System.out.print(array[i] + "\t");
}
第4章.类与对象
用关键字static修饰的方法称为类方法,又称为静态方法。不用static修饰的方法称为实例方法,又称为对象方法。
类方法只能操作类变量,不能操作实例变量。
Java的值传递还是引用传递:https://www.jianshu.com/p/457bfc91df79,https://www.javadude.com/articles/passbyvalue.htm
“primitives are passed by value, objects are passed by reference”.
java常用的包:看看就行了
序号包名功能描述1java.langjava的核心类库,包含了运行java程序必不可少的系统类,如基本数据类型、基本数学函数、字符串处理、线程、异常处理类等,系统缺省加载这个包。2java.iojava语言的标准输入/输出类库,如基本输入/输出流、文件输入/输出、过滤输入/输出流等等。3java.utilJava的实用工具类库Java.util包。在这个包中,Java提供了一些实用的方法和数据结构。例如,Java提供日期(Data)类、日历(Calendar)类4java.awt.image处理和操纵来自于网上的图片的java工具类库。5java.net实现网络功能的类库有Socket类、ServerSocket类。6java.awt构建图形用户界面(GUI)的类库,低级绘图操作Graphics类,图形界面组件和布局管理7java.awt.eventGUI事件处理包 。8java.sql实现JDBC的类库。
import的使用:当定义包后,在同一个包中的类是默认隐式导入的。但如果一个类访问来自另一个包中的类,则前者必须显示通过import语句导入后者后才能使用。
基本类型的封装类:使用范型数据的时候只能使用封装的类。
原始类型封装类静态的常用方法booleanBooleanBoolean.parseBoolean(String str)charCharacterisDigit(char ch);isLetter(char ch);isLowerCase(char ch);toLowerCase(char ch)byteByteByte.parseByte(String str)shortShortShort.parseShort(String str)intIntegerInteger.parseInt(String str)longLongLong.parseLong(String str)floatFloatFloat.parseFloat(String str)doubleDoubleDouble.parseDouble(String str)
第5章面向对象高级特性
实操:https://www.liaoxuefeng.com/wiki/1252599548343744/1255943520012800
下面都是概念
需要掌握的知识点:
- 继承(extends)+ 关键字this和super+ final关键字+ 转型和多态+ 抽象类(abstract class )和接口(interface)+ 内部类+ 匿名对象和类+ 异常类+ 泛型类
转型与多态:
- 上转型:子类对象到父类对象的类型转换,即把创建的子类对象放到父类的对象变量中,该过程是自动完成的,有些像基本类型的自动类型转换。 + 下转型:父类对象到子类对象的转换,必须使用强制转换。 + 多态:是指同一个操作被不同类型对象调用时可能产生不同的行为。
final关键字:
final的本义是“最终”,final可以修饰变量、一般方法和类 。
final修饰变量,表示变量一旦获取了初始值就不能被修改;
final修饰方法,表示该方法在派生子类中不能被重写,只能引用;
final修饰类,表示该类不能派生出子类。
抽象类(abstract class )和接口(interface):
相同点有:
- 都包含抽象方法,这些方法在继承抽象类或实现接口的类中都要具体实现,如果有一个不实现,该类就是抽象类,还是不能创建实例对象。 + 抽象类和接口都包含抽象方法,不能用new创建对象实例,两者都可以通过上转型对象或接口回调方式实现多态机制。
不同点有:
- 声明方式不同,接口使用interface关键字,而抽象类使用abstract class关键字。 + 成员变量不同,接口中只能有静态常量,而抽象类中不受限制。 + 成员方法不同,接口中的方法均是public abstract;而抽象类中抽象方法必须加上修饰符abstract。另外,接口中不能定义静态方法,而抽象类可以。
内部类:
如果一个类A的内部定义了一个类B,那么类A称为外部类或外嵌类,而类B称为内部类或内嵌类 。
匿名对象和类:
new 类名([实参列表]){//;类体
继承“类名”的子类
}
对象只能使用一次。
异常:
try catch final(final块一定会执行)
常用异常类:
空指针异常类:NullPointerException
类型强制转换异常:ClassCastException
数组负下标异常:NegativeArrayException
数组下标越界异常:ArrayIndexOutOfBoundsException
第6章.OOP程序设计的基本原则
知识点:了解就行
- 对象的抽象+ 单一职责原则+ 迪米特原则+ 接口隔离原则+ 开放-封闭原则+ 里氏替换原则+ 合成/聚合复用原则
第7章 常用类
常用的方法在java.md里面有。
知识点:
- String类+ StringBuffer类+ String类与StringBuffer类比较+ StringTokenizer类+ 日期类(Date、Calendar)
String类和StringBuffer类:
String类定义字符串常量对象,可以直接定义,也可以用构造方法定义。StringBuffer类对象必须使用构造方法定义。
String的内容一旦声明不可改变,如果要改变,改变的是String的引用地址。
用StringBuffer创建的字符串对象可以修改。并且所有的修改都直接发生在包含该字符串的缓冲区上。
日期类(Date、Calendar):
Date类可以得到一个完整的日期,但是日期格式不符合平常看到的格式,时间也不能精确到毫秒,要想按照用户自己的格式显示时间可以使用Calender类完成操作。Date类取得的时间是一个正确的时间,但显示格式不符合习惯,可以利用DateFormat类进行格式化。
Calender可以将取得的时间精确到毫秒,但是此类是抽象类,要想使用抽象类,必须依靠对象的多态性,通过子类进行父类得实例化操作,其子类是GregorianCalender,在Calender中提供了部分常量,分别表示日期的各个数字。
第8章 图形界面设计
不考,java swing
第9章 Java输入和输出
知识点:代码见java.md
- 文件操作:File+ 字节流:InputStream和OutputStream+ 字符流:Reader和Writer
第10章多线程
见Java.md:Java并发编程、wait、notify、notifyAll,JDBC