1.Java运行原理
- 1.计算机语言发展过程
- 机器语言
- 汇编语言
- 高级语言
-
解释型语言(JavaScript)
要想运行多次,需要进行多次解释
支持跨平台 -
编译型语言(C\C++)
要想运行多次,不需要进行多次编译
不支持跨平台
-
- 2.Java运行原理
- 先编译,再解释
- .java源文件—>编译器(javac)—>.class字节码文件—>JVM(java 不同平台)—>机器指令
2.配置环境
-
环境变量
>path 告诉操作系统,去什么位置找相关的命令 >JAVA_HOME JDK的安装目录 规避对系统级别环境变量造成误修改的风险 后来随着Java语言的流行,很多框架或者服务都是基于Java语言开发的 这些框架或者服务器就将JAVA_HOME的配置作为一个规范了,比如Tomcat >classpath 告诉Jvm去什么位置找字节码文件,默认 .
-
源文件–>.class字节码–>JVM(不同的平台)
-
javac 编译、java 运行
3.Java语言基础
*注释
*变量
*标识符
*数据类型
byte 1(字节) 8bit -128~127
short 2
int 4
long 8 64bit -2的63次方~2的63次方-1
4.程序流程控制
*顺序流程
*分支流程(选择)
>if分支
&单分支
&双分支
&多分支
>switch分支
switch (表达式){
case : {
}
}
表达式类型:byte,short,int,char,enum(1.5),String(1.7)
*循环流程
>for
>while
*运算符
5.方法的定义
修饰符 返回值类型 方法名(参数列表) 异常声明{
方法体
}
6.数组
7.面向对象
*万物皆对象
*封装
*继承
*多态(静态绑定|动态绑定)
8.异常
-
Throwable
>Error >Exception &运行时异常 RuntimeException的子类 &编译时异常 Exception的子类 在编译阶段必须对其进行处理
-
异常的原理
如果程序在执行的过程中发生了异常,底层会创建对应类型的对象,然后通过throw 关键字将异常向上抛出。 程序会找对异常处理的代码,如果有,将给处理的代码处理,如果没有继续抛出
-
异常处理的方式
>通过throws继续向上抛出 >try...catch进行补货
9.集合
-
1)Collection 存放单值类型数据
>List 有序、可重复 &注意:有序指的是集合中的元素有下标,放进去和取出来的顺序一致 &ArrayList 底层是数组 优点:查询效率高,因为数组中的元素在内存中是连续的,可以快速的根据下标获取集合中的元素 缺点:增删效率低,因为在对数组中元素进行增删操作的时候,涉及移位 &LinkedList 底层是链表 优点:增删效率高 因为对链表上的元素进行增删操作的时候,不需要移位,只需要改变链表中节点的指向即可 缺点:查询效率低,查询集合中的元素的时候,需要进行全链表的扫描 &Vector 底层也是数组,只不过是线程安全的 >Set 无序、不可重复 &HashSet 底层是HashMap &SortedSet 让集合中的元素具备了排序的能力 #TreeSet 底层是TreeMap
-
2)Map 存放的是键值对类型
>HashMap 数组 + 链表 + 红黑树 >SortedMap &TreeMap 底层是可排序的二叉树 在向集合中放元素的时候,遵循左小右大的原则,在取元素的时候按照中序遍历的方式取原则
10.线程
-
线程创建的方式
>继承Thread类 >实现Runable接口 >实现Callable接口
-
启动线程
strat
-
停止线程
-stop 不推荐实现 -正确停止线程的方式 是通过标记位进行停止
-
连线题
类 方法 sleep Object join yield Thread wait notify notifyAll
-
线程几种状态之间的装换
>初始状态 >可运行 >运行 >终止 >阻塞 >等待 >锁池
线程几种状态的转换图:
11.IO
*按照传输内容分类
字节流 字符流
*按照流向分类
输出流 输入流
*按照流的功能分类
节点流
过滤器
*字节
>FileInputStream
>FileOutputStream
*字符
>BufferReader
>PrintWriter
面试题:裸机、JDK、API下,使用记事本复制图片到指定位置?
12.反射
*反射反射,程序员的快乐
*获取类对象
>Class.forName
>类名.class
>对象.getClass()