1. java : 诞生于1995年 ,纯面向对象,跨平台,主要用于互联网和嵌入式;
2. date.getTime() -- 1970至今的毫秒数;
3. java运行机制 : 先编译,后解释
首先将具有平台依赖性的.java源文件通过编译器编译成平台中立的.class字节码文件,在jvm中运行时再根据平台的不同选择对应的解释器解释成机器码文件运行。
4. jvm(java virtual machine) : JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。这就是Java的能够“一次编译,到处运行”的原因。
JVM是Java程序运行的容器,但是他同时也是操作系统的一个进程,因此他也有他自己的运行的生命周期,也有自己的代码和数据空间。
JVM在整个jdk中处于最底层,负责与操作系统的交互,用来屏蔽操作系统环境,提供一个完整的Java运行环境,因此也叫虚拟计算机.操作系统装入JVM是通过jdk中Java.exe来完成,通过下面4步来完成JVM环境。
5. jre(java runtime environment) : java运行环境 编译器 + jvm
6. jdk(java development kit): java开发工具 jre + 核心类库 + 工具
7. java的编译运行命令 :
javac -d . Hello.java
java p.Hello
javadoc -d . Hello.java
8. java结构 :
package : 包名全小写
class : 类名首字母大写 只能有一个公开类 并且公开类的类名必须与源文件的文件名一致
method : 方法名驼峰命名法
filed : 属性变量驼峰命名法
9. 变量类型 :
基本类型 : byte(1) short(2) int(4) long(8) float(4) double(8) char(2) boolean(1)
引用类型 : String 数组 类 接口 枚举 注解
10. 运算符 :
+、-、*、/、%
==、+=、-=、*=、/=、%=
短路 : &&、||、!
非短路 : &、|、^、~
<<、>>、>>>
a>b?a:b
11. 选择语句 :
if(...) {} else if(...) {} else {}
switch(...) {case 1 : ;break; ... default : ;break;}
12. 循环语句 :
for(..;..;..;) {}
while(..) {}
do {} while(...);
13. 方法 : 修饰符 返回值 方法名 (参数表) 抛出的异常 {函数体}
14. 方法的重载 : 方法名相同 参数表不同
15. 方法的覆盖 :
返回值 方法名 参数表 完全相同
修饰符与父类相同或更宽
不能抛出比父类更多的异常
16. 面向对象 : 将一切客观存在的事物都当做对象来处理
17. 封装 : 隔绝 与保护 形成一个内外分明的间隔
18. 继承 : 父子关系的维系 单继承
19. 多态 : 主要关系之外的附加关系的维系 多继承多实现
接口 : 公开抽象方法
公开静态常量
20. this(...) : 调用本类的构造方法
super(...) : 调用父类的构造方法
以上两个都必须在方法的第一行
21. this.method() : 调用本类的方法
super.method() : 调用父类的方法
22. 抽象 abstract :
抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类
23. 集合 : Collection : 元素是对象
List : 元素有序,可以重复
ArrayList :
Vector :
LinkedList :
Set : 元素无序,不可以重复
HashSet :
TreeSet :
Map : 键唯一,值随意
HashMap :
HashTable :
Properties : 用于加载配置信息
TreeMap :
集合的遍历 :
Set与List的遍历 :
Set
}
for(String str : set) {
System.out.println(str);
}
Map遍历 :
值遍历 :
Collection
for(Object o : c) {}
键遍历 :
Map
Set
for(String key : set) {
System.out.println(key + "----------" + map.get(key));
}
Map
Set
Iterator
while(iterator.hasNext()) {
String key = iterator.next();
System.out.println(key + "---------" + map.get(key));
}
键值遍历 :
Map
Set
for(Map.Entry
System.out.println(me.getKey() + "-------" + me.getValue());
}
Map
Set
Iterator
while(iterator.hasNext()) {
Map.Entry
System.out.println(me.getKey() + "---------" + me.getValue());
}
24. IO :
字节流 : InputStream/OutputStream
FileInputStream/FileOutputStream 节点流
DataInputStream/DataOutputStream 过滤流
ObjectInputStream/ObjectOutputStream 过滤流
BufferedInputStream/BufferdOutputStream 过滤流
PrintStream --- System.out.print() 过滤流
字符流 : Rider/writer
FileReader/FileWriter 节点流
BufferedReader/BufferedWriter/PrintWriter 过滤流
桥转换流 : InputStreamReader/OutputStreamWriter 唯一设置编码格式的流
对象序列化 : 对象在流中传输 实现Serializable接口
开发过程 :
创建节点流
封装过滤流
输入/输出
关闭流(一般关闭最外层的流即可)
25.
线程 : 一个进程中并发的一个顺序执行流程
并发 : 对于一个CPU,宏观并行,微观串行,cpu分时间片
空间 : 堆空间共享 栈空间独立
创建线程 : implements Runnable / extends Thread
启动关闭 : thread.start() thread.stop();
初始状态 : 创建Thread对象
可运行状态 : thread.start()
运行状态 : cpu选中
终止状态 : 线程运行完成
阻塞状态 : 等待输入 join sleep
锁池状态 : 加同步,但是没有获得锁标记
等待队列状态 : wait
线程同步 synchronized
死锁 :多个同步 相互join
26. 反射 : 从类对象中获取类的信息来操作类
类加载 : jvm第一次使用一个类时,会根据类的classpath路径寻找到这个类的.class字节码文件,读取其中的信息并保存到类对象中;
类对象 : 保存类的信息的对象;
类对象的获取 : Class.forName(全限定名);
类.class
对象.getClass()
类对象的使用 :
Class c = Class.forName("java.util.Map");
Object o = c.newInstance();
c.getAnnotation(annotationClass);
c.getFields();
c.getField(name);
c.getMethods();
Method method = c.getMethod(name, parameterTypes);
method.invoke(o, args);
27. 枚举 : Enum 是所有 enum 的父类
enum A {
SPRING("春天"),
SUMMWER("夏天");
private String name;
private A(String name) {
this.name = name;
}
public String getValue() {
return this.name;
}
}
28. 自定义注解 :
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD,ElementType.METHOD,ElementType.TYPE})
@interface In {
public String value() default "hello";
}
29. 异常 :
Throwable - Error
- Exception
| - RuntimeException
抛出异常 : throw new RuntimeExcepiton();
处理异常 : throws Exception
try {} catch(Exception e) {} finally {}
自定义异常 :
class MyException extends Exception {
public MyException(String name) {
super(name);
}
}
30. 网络
ServerSocket ss = new ServerSocket();
while(true) {
Socket s = ss.accept();
PrintWriter out = new PrintWriter(s.getOutputStream());
out.println("hello world");
out.flush();
}
Socket s = new Socket(ip, port);
BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));
String str = in.readLine();
System.out.println(str);
31. 基类 Object
finalize();
getClass();
hashCode();
equals();
clone();
wait();
notify();
notifyall();
toString();
32. 修饰符
public protected (default) private
static abstract final
synchronized
transient 修饰属性,不进行序列化
33. 线程绑定 : ThreadLocal 本地线程 原理是以自身为键的map
34. 关键字 : instance 判断对象的实际类型是否属于某个类
35. 泛型 : 为了定义集合或是其他类的类型安全
36. Integer常量池 : -127 --- 128
int a = 100;
Integer in = new Integer(100);
System.out.println(a==in);
结果为true;
int a = 500;
Integer in = new Integer(500);
System.out.println(a==in);
结果也为true
37. String 串池 : 常量
StringBuilder StringBuffer
String abc = "abc";
String bcd = new String("abc");
System.out.println(abc==bcd);
结果为false