JavaSE阶段学习总结(学习路线框架+各部分重点)

JavaSE阶段学习总结(学习路线框架+各部分重点)_第1张图片

一、Java语言初识

1、百度百科对Java的解释

        Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。

2、Java语言业务方向上的分类

  • JAVA SE (标准版)(桌面程序,控制台开发……)
  • JAVA ME — Android (电子设备端)(手机,小家电……)
  • JAVA EE (面向企业)(Web端,服务器开发……)
  • 2006年Hadoop诞生,Java进军大数据领域

3、JDK、JRE 和 JVM

  • JDK: 开发者工具包 (配置环境变量)
  • JRE: Java运行环境
  • JVM: Java虚拟机(JVM是Java跨平台的关键,包含在JRE中,实现了Write Once、Run Anywhere,一次编写,到处运行)
    JavaSE阶段学习总结(学习路线框架+各部分重点)_第2张图片

4、编译与运行

Created with Raphaël 2.2.0 编写:HelloWorld.java DOS命令:javac HelloWorld.java (编译) 生成:HelloWorld.class DOS命令:java HelloWorld (运行) 打印运行结果

5、编译型语言与解释型语言

  • 编译型语言

    • 编译型语言的首先将源代码编译生成机器语言,再由机器运行机器码(二进制)
    • 程序在执行之前需要一个专门的编译过程,把程序编译成 为机器语言的文件,运行时不需要重新翻译,直接使用编译的结果就行了
    • 程序执行效率高,依赖编译器,跨平台性差些,如C、C++、Delphi等
  • 解释型语言

    • 源代码不是直接翻译成机器语言,而是先翻译成中间代码,再由解释器对中间代码进行解释运行
    • 程序不需要编译,程序在运行时才翻译成机器语言,每执行一次都要翻译一次,因此效率比较低
    • Python/JavaScript / Perl /Shell等都是解释型语言,跨平台性较好
  • 编译型与解释型,两者各有利弊

    • 编译型语言由于程序执行速度快,同等条件下对系统要求较低,因此像开发操作系统、大型应用程序、数据库系统等时都采用它,像C/C++、Pascal/Object Pascal(Delphi)等都是编译语言
    • 而一些网页脚本、服务器脚本及辅助开发接口这样的对速度要求不高、对不同系统平台间的兼容性有一定要求的程序则通常使用解释型语言,如JavaScript、VBScript、Perl、Python、Ruby、MATLAB 等等

6、Java集成开发环境(IDE)

  • Eclipse 免费而经典的JavaIDE,具有强大的插件支持能力
  • NetBeans 开源软件开发集成环境,是一个开放框架,可扩展的开发平台
  • IntelliJ IDEA 相比之下更加人性化,在业界被公认为最好的java开发工具,社区版免费,但完整版收费(在校师生可利用学校邮箱“xxx.edu.cn”申请免费订阅)

二、基础语法

    1、注释

        1.1行内注释

             //xxxx…

        1.2多行注释

             /* xxxx…
             xxxx…
              */

        1.3文档注释( javadoc生成帮助文档)

             /**
             *xxxx…
             */

    2、Java标识符(关键字)

        2.1 总览

JavaSE阶段学习总结(学习路线框架+各部分重点)_第3张图片

        2.2 按其用途划分为如下几组

            2.2.1 用于数据类型

                用于数据类型的关键字有: boolean、byte、char、 double、 false、float、int、long、new、short、true、void、instanceof

            2.2.2 用于语句

                用于语句的关键字有: break、case、 catch、 continue、 default 、do、 else、 for、 if、return、switch、try、 while、 finally、 throw、this、 super

            2.2.3 用于修饰

                用于修饰的关键字有: abstract、final、native、private、 protected、public、static、synchronized、transient、 volatile

            2.2.4 用于方法、类、接口、包和异常

                用于方法、类、接口、包和异常的关键字有: class、 extends、 implements、interface、 package、import、throws

            2.2.5 Java保留的没有意义的关键字

                如 cat、 future、 generic、innerr、 operator、 outer、rest、var 等都是Java保留的没有意义的关键字

            2.2.6 Java文字

                Java还有3个保留字: true、false、null。它们不是关键字,而是文字。包含Java定义的值。和关键字一样,它们也不可以作为标识符使用。

            2.2.7 学会面向百度编程

                关键字的使用要学会去百度查看,所谓有问题先百度,经过思考后还不能解决的再去问其他人。

    3、数据类型

        3.1 基本数据类型

            3.1.1 整数
类型 大小(字节)
byte 1
short 2
int(默认) 4
long 8
类型 进制
0b
0x 十六
0
            3.1.2 浮点数
类型 大小(字节)
float 4
double(默认) 8
BigDecimal 可变
            3.1.3 字符
类型
char 2字节
ascii
utf-8
Unicode
‘\u0000’
            3.1.4 布尔值
类型 大小(位)
boolean 1

        3.2 引用数据类型

类型
接口
数组

        3.3 类型转换

类型 转换方式
自动类型转换 低转高
强制类型转换 高转低 (低)高

        3.4 变量和常量

            3.4.1 变量模版

                

type varName [=value];
            3.4.2 作用域
类型
类变量
实例变量
局部变量
            3.4.3 常量
final MAX_VALUE = 1;
            3.4.4 命名规范

                 1. 见名知意
                 2. 驼峰命名(变量,方法)
                 3. 类,首字母大写,驼峰命名
                 4. 常量 大写+下划线
                 5. 不要使用拼音
                 6. 良好的代码规范是一切的基础

        3.5 运算符

类型 举例
算数运算符 +  -  *  /  %  ++  - -
赋值运算符 =
关系运算符 >  <  >=  <=  ==  !=  instanceof
逻辑运算符 &&   ||   !
位运算符 &  |  ^  ~  >>  <<  >>>
条件运算符 ?   :
扩展运算符 +=  -=  *=  /=

        3.6 包机制

几个注意点
1、域名倒写
2、放置命名冲突
3、package
4、import

        3.7 javaDoc

            3.7.1 JDK帮助文档

                https://docs.oracle.com/javase/8/docs/api/

            3.7.2 Javadoc
javadoc
@auther
@Version
@Since
@param
@return
@throws

三、流程控制

    1、Scanner

用户交互System.in

    2、顺序结构

程序默认的结构,自上而下的执行

    3、选择结构

        3.1 if单选择结构

        3.2 if-else双选择结构

        3.3 if – else if – else多选择结构

        3.4 switch结构

            3.4.1 变量模版
几点注意
jdk支持了String类型
case穿透现象
break
default

    4、循环结构

        4.1 while循环

        4.2 do…while循环

        4.3 for循环

        4.4 增强for循环

for(ElementType element: arrayName){};

    5、break & continue

类型 用途
break 跳出循环
continue 终止当次循环
标签continue 类似C/C++中的goto
return 结束方法的运行

四、方法

    1、方法的定义

修饰符 返回值 方法名 (参数名) {return 返回值};

    2、方法的调用

类名.方法    对象.方法

    3、方法重载

方法名相同,参数列表不同

    4、命令行传参

给main方法传递参数

    5、可变长参数

写法:… (必须放在最后一个参数)

    6、递归

自己调用自己,给自己一个出口

五、数组

    1、数组的定义

        1.1 定义的语法

(1) type arrayName[];
(2) type[] arrayName;

    2、数组的初始化

        2.1 静态初始化

int intArray[] = {1,2,3,4};

        2.2 动态初始化

必须是同一类型

float floatArray[] = new float[3];
floatArray[0] = 1.0f;
floatArray[1] = 132.63f;
floatArray[2] = 100F;

    3、数组的使用

(1)通过下标拿到值
(2)增强for循环遍历
ArrayIndexoutofBoundsException(数组越界异常)

    4、二维、多维数组

int[][]

    5、Arrays工具类

    6、排序算法

类型
冒泡排序
选择排序
插入排序
快速排序
归并排序
希尔排序
堆排序
基数排序
这里给出一篇关于排序算法非常优秀的博文:算法学习总结(2)——温故十大经典排序算法

六、面向对象

    1、类与对象

类是对对象的抽象,对象是类的实例

    2、构造方法

构造的重载
(1) 默认的无参构造
(2) 如果手动定义了有参构造就必须手动再加一个无参构造
(3) 单例模式,需要构造器私有 (保证一个类仅有一个实例,并提供一个访问它的全局访问点,二十四种设计模式之一)

    3、new 对象

栈存放引用,堆存放具体的对象

    4、封装

属性私有、利用get/set方法

    5、继承

几点注意
(1)继承关键词 extends
(2)最上层类 Object
(3)子类拥有父类的全部特性
(4)方法覆盖(重写)
(5)this关键字
(6)super关键字
(7)java是单继承,只能继承一个父类

    6、多态

父类的引用指向子类的对象 Father father = new Son();
instanceof关键字,用来测试一个对象是否为一个类的实例

    7、接口

几点注意
(1) 接口关键词 interface
(2) 约束 只能定义方法名,不能写实现
(3) 类实现接口必须重写其中的方法,否则类要加上abstract关键字成为抽象类
(4) 只有一个方法的接口叫做函数式接口,可用lambda表达式简化
(5) 接口比抽象类更抽象
(6) 一个类可以实现多个接口

    8、内部类

局部内部类
静态内部类
匿名内部类(重点

七、异常

    1、Throwable

        1.1 Exception

运行时异常
(1) ArithmeticException 算数异常 如:1/0
(2) ClassNotFoundException 找不到对应的类
(3) NullPointException 空指针异常
(4) UnknownTypeException 遇到未知类型
(5) ArrayIndexoutofBoundsException 下标越界异常
(6) …

        1.2 Error

            1.2.1 AWT错误
            1.2.2 JVM错误
StackOverFlow 栈溢出
OutOfMemory 内存溢出

    2、五个关键字

五个关键字
try{}
catch(){} 异常应设置先小后大
finally{} 无论有没有异常都执行,一般用来关闭通道
throw 手动抛出异常
throws 方法抛出异常

    3、自定义异常

继承Exception类即可

七、常用类

    1、Object类

常用方法
hashcode()
toString()
clone()
getClass()
notify()
wait()
equals()

    2、Math类

常见的数学运算

    3、Random类

生成随机数 如:UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。

    4、File类

功能
创建文件
查看文件
修改文件
删除文件

    5、包装类

自动装箱和拆箱

    6、Date类

功能
Date
SimpleDateFormat yyyy-MM-dd HH:mm:ss
Calender (建议使用)

    7、String类

不可变性,为final类型,操作量较少

    8、StringBuffer

可变长 append() 多线程数据量较大 效率低,但安全

    9、StringBuilder

可变长 append() 单线程数据量较大 效率高,但不安全

八、集合框架

    1、Collection

        1.1 List(有序可重复)

            1.1.1 ArrayList(常用)
常用方法
add
remove
contains
size
            1.1.2 LinkList(常用)
常用方法
getFirst()
getLast()
removeFirst()
addFirst()
            1.1.3 Vector
            1.1.4 Stack

        1.2 Set(无序不可重复)

            1.2.1 HashSet(常用)
            1.2.2 TreeSet

    2、Map

        2.1 HashMap(重点)

JDK1.7 : 数组+链表
JDK1.8 : hash表 = 数组+链表+红黑树

        2.2 TreeMap

    3、Collections 工具类

    4、泛型

泛型 <> 约束,避免类型转换之间的问题

九、IO流

    1、字节流

输出: OutputStream
输入: InputStream

    2、字符流

Reader/Writer

    3、节点流

类型
CharArrayReader, Writer, inputstream, outputstream
StringReader, Writer
pipe(管道流) PipeOutputStream
File( , , , )

    4、处理流

        4.1 buffer

类型
bufferInputStream
bufferOutputStream
bufferReader
bufferWriter

        4.2 序列化/反序列化

Serializable  transient(透明的)

        4.3 Data

类型
DataInputStream
DataOutputStream

        4.4 object流

        4.5 转换流

类型
InputStreamReader
OutputStreamWriter

        4.6 Filter

过滤器,它是Servlet技术中最核心的技术之一

        4.7 print

类型
PrintWriter
PrintStream

十、多线程

    1、进程和线程

进程=火车,线程=车厢

    2、线程创建的方式

方式 注意
Thread start(),本地方法:java无权调用,交给底层的C处理
Runnable 函数式接口 注意lambda表达式的使用
Callable 可以有返回值

    3、静态代理

new Thread (Runnable).start();

    4、Lambda表达式

函数式编程,避免内部类定义过多
new Thread(()->{…}).start();

    5、线程的状态

状态分类
新建
就绪
运行
阻塞
死亡

    6、常用方法

方法名称
sleep
join
yield
isLive
start
setPriority
interrupt

    7、线程同步

        7.1 同步描述

几点描述
多个对象操作同一资源,并发
队列+锁
第一个线程进来拿到锁,后面就要排队了,直到这个人释放锁,后面拿到锁才能进去

        7.2 Synchronized

            7.2.1 同步方法
弊端:锁住的代码太多了
            7.2.2 同步代码块(常用)
锁住一个方法,效率高
            7.2.3 死锁
两个人都抱着对方的锁
四个条件破坏其中一个即可
互斥
请求与保持
不剥夺条件
循环等待条件

        7.3 Lock(优先级高)

ReentrantLock
lock
trylock
unlock

        7.4 同步巧记

多线程的锁机制,可以用厕所门口排队来形容,不加锁或者乱加锁(加到门外边儿或者死锁),厕所门就失守或者锁死了,大家就都难受了
JavaSE阶段学习总结(学习路线框架+各部分重点)_第4张图片

    8、线程通信

几点注意
缓冲区:消息队列
标识位:红绿灯模型
wait();
notifyAll();

    9、线程池(Pool)

几点注意
池化技术
池的大小
最大连接数
保持时间

十一、网络编程

    1、IP

IP是整个TCP/IP协议族的核心,也是构成互联网的基础

    2、端口

设备与外界通讯交流的出口

    3、Socket编程

TCP和UDP

    4、TCP

几点注意
三次握手
四次挥手
面向连接

    5、UDP

几点注意
非面向连接,无连接
Packet

    6、URL

在WWW上,每一信息资源都有统一的且在网上唯一的地址,该地址就叫URL

    7、Tomcat

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器

十二、GUI

    1、AWT

        1.1 Frame

        1.2 监听事件

类型
鼠标监听
键盘监听
窗口监听
动作事件

    2、Swing

需要掌握的几点
文本框
标签
按钮
文本域
面板
布局方式
关闭窗口
列表

    3、小游戏

需要掌握的几点
Timer
键盘鼠标监听
游戏帧的概念

十三、注解和反射

    1、注解

分类
元注解
内置注解
自定义注解

    2、反射

        2.1 Class

newInstance();

        2.2 类加载机制

        2.3 Method

invoke(user,“xxx”); 存在重载,也需要写参数的类型

        2.4 Field

set(user,“xxx”);

        2.5 Construct

newInstance(); 获取的时候需要,传递参数的class类型

        2.6 破坏私有关键字

setAccessible(true);

        2.7 反射获得注解,泛型

        2.8 性能分析

正常 > 检测关闭的反射 > 默认的反射

JavaSE阶段学习总结(学习路线框架+各部分重点)_第5张图片

你可能感兴趣的:(JavaSE)