这篇博文主要是将java基础进行整理,整理出大概的轮廓,然后我会针对每个不懂的点进行分析,增加自身的印象,大家有任何好的建议可以提出,毕竟刚刚进入这个行业,同时如果有任何错误的地方希望纠正,谢谢。
java基本概念
1. 保留字和关键字
关键字--指电脑语言中有特别意义的标识符
用于类的接口声明:class extends implements interface
包引入和包声明:import package
数据类型:boolean byte char short int long float double
某些数据类型的可先值:false true null
流程控制:break case continue default for do while if else return switch
异常处理:catch finally throw throws try
修饰符:abstract final native private protected public static synchronized transient volatile
操作符:instanceof
创建对象:new
引用:this super
方法返回类型:void
保留字--在升级版本可能成为关键字
byValue,cast,false,future,generic,inner,operator,outer,rest,true,var,goto,const,null
2. JDK,JRE,JVM,API
JVM--java虚拟机,用于执行类文件
JRE--java运行时环境
JDK--java开发工具包;包括bin,include,lib,jre
API--应用程序接口
3. java的跨平台原理
通过和c语言进行比较,将程序区分为编译和运行;c语言的编译过程和运行
过程都是平台相关性的,即是编译性语言;而java则是将源文件编译成class
文件,通过jvm消除平台相关性,既是解释性语言;实现了java的跨平台
数据类型
1. 基本数据类型和引用数据类型
数据类型--对内存的一种抽象的表达方式
基本数据类型和引用数据类型区别:
主要区别在存储方式的不同;基本数据类型的数据是存储在栈内,而
引用数据类型则是在栈内存储引用,数据存储在堆内
2. 自动类型转换和强制类型转换
自动类型转换过程:byte,char-->short-->int-->long-->float-->double
自动类型转换规则:多数据类型运算时默认转换为数据类型最大的,实数常量
默认为double,而整数默认为int
问题:自动类型转换发生原因以及规则,强制类型转换过程
3. 基本类型和包装类型
包装类型产生原因:java是基于对象的语言,可以扩大基本类型的操作
自动装包/拆包过程--有编译器实现基本类型和包装类型之间的转换
缓存机制--Integer数据小于127具有缓存作用,直接访问数据而不是通过引用
(注意每个数据都具有缓存机制)
面向对象特性
1. 面向对象和面向过程比较
面向过程:分析解决问题所需的步骤并通过函数将步骤进行实现
面向对象:指将对象作为程序的基本单元,并封装程序和数据
对象:指类的实例,具有状态和行为
类:描述了一类对象的状态和行为
注意:通过jvm了解对象的创建和销毁过程
2. 面向对象特性
(1)抽象:忽略与当前目标无关的方面而充分关注与当前目标相关的方面
(2)封装:将抽象性接口的实体细节进行隐藏的方式
(3)继承:是联结类的层级模型并明确描述共性
(4)多态:允许通过类对象对同一消息做出不同响应,包括参数化多态和包含性多态
<1>方法重载和重写以及动态链接
重载:以统一方式处理不同类型数据的方式,指同名函数具有不同参数列表
重写:指在类层次结构中子类和父类具有相同标识的方法
注:方法签名--用于区分不同方法的标识符
包括方法名;方法参数;方法返回值,而重载的标识则是方法名和参数
方法重载和重写区别
重载属于静态多态性,而重写则是动态多态性
(注:普通方法属于动态多态性,但是没有涉及继承时重载属于静态多态)
java绑定机制
静态绑定--指在编译过程中对方法进行绑定,包括final,static,private和构造方法
动态绑定--在运行时根据对象类型进行绑定
3. 接口和抽象类
接口--一系列方法的声明,是一些方法特征的集合
抽象类--用来表征我们在对问题领域进行分析,设计中得出的抽象概念
区别:抽象类表示一类事物的高度聚合;而接口则是定义了行为规范
4. 代码块--包括普通代码块,构造代码块,静态代码块,同步代码块
注:构造代码块优于构造方法执行
5. 内部类--包括成员内部类、静态嵌套类、方法内部类、匿名内部类
异常
1. 异常体系--异常是指用于传送系统问题,故障和未按规定执行的动作的相关信息
异常超类是Throwable;包括error和exception
error和exception区别
error--指jvm出现不可恢复的错误,只能避免
exception--指程序中操作不当出现的非正常情况
2. 异常分类--包括编译性异常和运行时异常
3. 异常捕获-- try-catch语句
4. 异常抛出-- thorw语句和throws语句
注:final,finally,finalize的区别.
final: 修饰符,final类不能有子类,final方法不能被子类覆盖,final变量表示常量,只能赋值一次.
finally: 语句块,必须和try连用.特点,无论是否有异常,最终都会执行finally代码块,目的:释放资源.
finalize: Object类中的方法,当某一个对象被垃圾回收器(GC),就会调用该对象的finalize方法
线程
1. 进程和线程
并行--指两个或多个事件在同一时刻发生
并发--指两个或多个事件在同一时间段发生
进程--指内存中运行的应用程序,有着独立的内存空间
线程--指进程的一个执行任务,堆空间是共享的
2. 线程生命周期
线程状态(java.lang.Thread.State)
NEW--线程创建,未启动
RUNNABLE--线程处于就绪或运行状态
BLOCKED--线程处于线程池并等待进入临界区
WAITING--线程等待被唤醒
TIMED_WAITING--线程处于有时间限制的等待被唤醒状态
TERMINATED--线程处理完毕,处于死亡状态
多线程技术产生原因:
解决处理器单元内多个线程执行的问题,减少处理器单元的闲置时间
3. 线程同步
IO/NIO
1. io流体系--使用装饰模式进行功能叠加
<1>包括字节流(InputStream/OutputStream)和字符流(Reader/Writer)
<2>以功能区分:文件流,内存流,转换流,缓冲流,打印流,
扫描器,管道流,合并流,对象流,标准输入输出
注: NIO包中定义了作为数据容器的缓冲区
问: 对象的序列化--将对象值得数据信息以二进制格式进行保存
序列化目的--方便网络传输以及将对象信息持久化在磁盘中
实现序列化--实现Serializable接口
集合
1. 集合体系
<1>collection
(1)List
ArrayList--基于数组的List接口实现
LinkedList--基于链表的List接口实现
(2)Set
HashSet--基于哈希表的Set接口实现
TreeSet--基于红黑树的Set接口实现
<2>Map
HashMap--基于哈希表的Map接口实现
HashTable--同步的基于哈希表的Map接口实现
TreeMap--基于红黑树的Map接口实现
2. 迭代器--即集合类具有迭代功能的原因
分析:通过在集合类内部增加实现Iterator接口的内部类
并通过iterator方法返回当前迭代器以实现迭代功能
3. 问题
<1>集合以接口进行划分原因和作用
<2>集合基于数据结构的源码实现
网络编程
1. 网络基础
IP地址--通过IP协议提供的统一地址格式为主机分配逻辑地址
端口--用于区分不同进程
URL--统一资源定位符
套接字--包括源IP地址及其端口和目标IP地址及其端口,标识客户端请求服务器和服务
2. 网络编程(ServerSocket和Socket)