上届世界杯_世界杯韩国 - cngkpt.com

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

一、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,一次编写,到处运行)

4、编译与运行

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 总览

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 整数

类型大小(字节)byte1short2int(默认)4long8

类型进制0b二0x十六0八

3.1.2 浮点数

类型大小(字节)float4double(默认)8BigDecimal可变

3.1.3 字符

类型char 2字节asciiutf-8Unicode‘\u0000’

3.1.4 布尔值

类型大小(位)boolean1

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、package4、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穿透现象breakdefault

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++中的gotoreturn结束方法的运行

四、方法

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类

功能DateSimpleDateFormat yyyy-MM-dd HH:mm:ssCalender (建议使用)

7、String类

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

8、StringBuffer

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

9、StringBuilder

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

八、集合框架

1、Collection

1.1 List(有序可重复)

1.1.1 ArrayList(常用)

常用方法addremovecontainssize

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, outputstreamStringReader, Writerpipe(管道流) PipeOutputStreamFile( , , , )

4、处理流

4.1 buffer

类型bufferInputStreambufferOutputStreambufferReaderbufferWriter

4.2 序列化/反序列化

Serializable transient(透明的)

4.3 Data

类型DataInputStreamDataOutputStream

4.4 object流

4.5 转换流

类型InputStreamReaderOutputStreamWriter

4.6 Filter

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

4.7 print

类型PrintWriterPrintStream

十、多线程

1、进程和线程

进程=火车,线程=车厢

2、线程创建的方式

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

3、静态代理

new Thread (Runnable).start();

4、Lambda表达式

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

5、线程的状态

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

6、常用方法

方法名称sleepjoinyieldisLivestartsetPriorityinterrupt

7、线程同步

7.1 同步描述

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

7.2 Synchronized

7.2.1 同步方法

弊端:锁住的代码太多了

7.2.2 同步代码块(常用)

锁住一个方法,效率高

7.2.3 死锁

两个人都抱着对方的锁

四个条件破坏其中一个即可互斥请求与保持不剥夺条件循环等待条件

7.3 Lock(优先级高)

ReentrantLocklocktrylockunlock

7.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 性能分析

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