JavaSE大复习--看完就知道自己的不足

1.jdk java开发者工具包 jvm java虚拟机 jrejava 运行环境
2.安装jdk 配置环境变量
// 文件名和类名必须相同
// 类名首字母大写
public class HelloWorld{
public static void main(String args[]){
   System.out.println("HelloWorld");
}
}
javac 命令编译生成.class文件 java 文件名 运行java程序
cd cd .. cd\
dir 显示目录
rd 删除
cls 清屏
md 创建文件夹
盘符:
// 单行注释
/**/多行注释
/***/文档注释
java 命名规则
以字母_$开头
字母_$数字组成
大小写敏感
不能使用关键字
类名首字母大写 属性和方法名首字母小写 驼峰原则 
变量:是一个容器,内容可以变化 x y z
常量:不会变化的量,一旦赋值不能改变(全大写)
基本数据类型:数字型,字符型,布尔型
数字型:byte 1 short 2 int 4 long 8 float 4 double 8
字符型:char 2
布尔型:boolean
引用数据类型:类 接口 数组
int 和 char 可以互转 (ASCII)
32 空格
0 空
48-57 0-9
A-Z 65-90
a-z 97-122
运算符
算术运算符 + - * / %(双目) -- ++(单目)
++ 在前 先自增再赋值
++ 在后 先赋值再自增
int b = 1;
b=b++;
syso(b);
关系运算符:>,<,>=,<=,!=,== true/false
逻辑运算符:& | ! && || true/false
与有一为假则为假
短路:当第一个条件已经决定了结果,第二不再运行
赋值运算符:= += -+ /= *+ %= 把右边的结果赋值给左边的变量
三目运算符:表达式1?表达式2:表达式3; 表达式1 为true 运行表达式2 否则表达式3(if else)
位运算符:>> << ^  2<<3


单目>算术>关系>逻辑>三目>赋值
大小水桶原理
double <- float <- long <- int <- short char <- byte(自动转型)
double b  = 1;
强制类型转换
double d = 10;
int a = (int)d;
People p = new Student();
Student np = (Student)p;
Scanner sc  = new Scanner(System.in);
// 程序的运行规则
顺序 系统默认从上往下,从左往右
选择 if else switch case 三目运算
循环 while do while for 迭代Iterator
if(){


}else{


}
switch(int byte short char String){
case:
        break;
        case:
}
计算一个日期过了多少天?
循环三要素:初始化,条件表达式,增量
while 和do while的区别: 先判断后执行,先执行一次后判断
for(1;2;3){
4;
}
for 1 -2 -4 -3 -2 -4 -3 
break; continue; 循环控制语句
break 结束当前一层循环 continue 跳出本次循环继续下一次


嵌套
嵌套选择 if(){
if(){
}
}
嵌套循环 while(){
for(){
}
}
菱形,99乘法表,素数,百钱买白鸡,冒泡排序
语句块 普通语句块{}
静态代码块 static{}
递归log(log(f))
方法自己调用自己,方法内容控制是否继续调用
5! 文件读取(递归方法)


进制转换:乘权求和,除基取余(小数部分,乘2取整,直到为0)


面向对象:(类和对象)
万物皆是对象。
通过关键字new创建一个对象
new 调用构造方法(用来生成一个对象的方法)
构造方法:方法名和类名相同 没有返回值
如果一个类没有写构造方法:jvm会帮你自动创建一个无参的构造方法
如果有了构造方法,jvm不会帮你再创建。
初始化一些数据,用于传参


Object 是java的根。
封装,继承,多态,抽象
封装作用:安全
封装的实现:public protected default private
所有类       *        
子父类       * *
同一包     * * *
类本身       *   * * *
package 包
单例的问题 构造方法私有化
继承:子类继承(extends )父类,子类就拥有了父类的非私有属性和方法(包含父类的父类)
构造方法不能继承
java单继承和多实现 
java代码的运行顺序:先静态后动态,先父类后子类
父类的静态代码块,子类的静态代码块,父类的代码块,父类的构造方法,子类的代码块,子类的构造方法
多态:重写和重载
重写:子类继承父类,子类方法名返回值和参数列表同父类一样,方法体不同
重载:在一个类中,方法名相同参数类型不同(顺序,类型,个数)


向上转型和向下转型
向上转型:创建一个子类的对象,将指针指向父类的引用。
Person p  = new Student();
向下转型:把这个对象原本的样子给展示出来。
Student s = (Student)p;
this 对象本身,谁调用我,this就是谁
super 父类本身,指父类出面
final 最终的 最后的 不变的
修饰类 类不能被继承
修饰属性 变量变常量, 值不能改变
修饰方法 方法不能被重写


final static 修饰属性 定义全局的常量


static 静态的 全局的 修饰属性 变成全局属性 修饰方法 变成全局方法。 全局的可以通过类名直接调用。
静态代码块
static{
  // 最先执行 执行一次 初始化
}
package 包 解决类名相同问题。权限管理
import 导包 import static 静态导入


== 和 equals的区别
基本数据类型无区别
引用数据类型 == 比较内存地址 而equals比较的是内容


abstract 抽象 修饰类,方法
修饰类 类变成抽象类。
修饰方法,方法变成抽象方法
抽象方法没有方法体。
抽象类的定义:至少有一个抽象方法的类叫抽象类。
抽象类有自己的构造方法
抽象类存在的意义:让子类继承 提供一种模版
类的半抽象
抽象类和普通类的关系:
相互继承
interface 接口
抽象方法和全局常量 纯粹的抽象类(模版)
接口是一种特殊的抽象类
接口中方法不一定要用public abstract关键字修饰
接口和普通类的关系
普通类可以实现接口
抽象类和接口的关系
抽象类可以实现接口
抽象类可以继承抽象类
接口可以继承接口(多继承)
数组:
由一组相同数据类型组成的有序的集合。
静态定义:int a[] = {1,2,3,4};
动态定义:int a[] = new int[4];
数组的长度:length属性 a.length
数组下标从0开始。
数组的遍历和排序
使用循环遍历
排序:升序从小到大,降序从大到小
冒泡,快速,选择,插入,顺序
Arrays 数组工具类 sort() 升序排序
二分法查找法
// 异常
异常的定义
错误的定义
异常和错误的区别
try catch finally throw throws
处理异常的方式:
抓和抛
try{
}catch(异常类型){
  // 异常的处理
}finally{
  // 无论如何都会执行
}
throw关键字用于抛出异常
throws 声明要抛出的异常
常见的五个运行时异常:
NullPointerException
ArrayIndexOutOfBoundsException
IndexOutOfBoundsException
StringIndexOutOfBoundsException
IOException
RuntimeException
常见的五个jar包
io
lang
util
net
sql
// 常用类
包装类(基本数据类型)
int Integer byte Byte short Short
char Character
char [] ->String
包装类出现的目的:方便数据类型的转换,以对象的方式看待基本数据类型
parseXXX 解析成XXX类型
XXX.valueOf() 转换为XXX类型
XXX.XXXValue()拆箱
基本数据类型和对应的包装类之间
基本数据类型->包装类类型
Integer i = 1;// 自动装箱
基本数据类型<-包装类类型
int j = i;// 自动拆箱
Math abs sqrt pow round ceil floor random PI E
String final 字符常用类(值传递)
StringBuffer 可变的字符常用类 效率低 线程安全
StringBuilder可变的字符常用类 效率高 线程不安全
String charAt() charArray() length() indexOf lastIndexOf startWith() endWith()
subString() replace() replaceAll() split() trim() concat() contains() getBytes()
Byte[]->String new String(byte[]);
String 转换字符串编码 new String(x.getBytes(["源编码"]),"转成的编码");
utf-8 gbk gb2312 iso8859-1
Date 日期类 代表当前服务器时间
// 日期格式化
SimpleDateFormat()
format() Date->String
parse() String->Date
"yyyy-MM-dd HH:mm:ss"
"yyyy/MM/dd HH:mm:ss"
"yyyy年MM月dd日 HH时mm分ss秒"
Calendar 日历类 
月份从0月开始 正常显示要加1
File 文件类(文件、文件夹)
exists()判断文件是否存在
mkdirs()创建所有的不存在的文件夹
createNewFile()创建一个新文件
delete()删除文件或文件夹(空的)
getName 获取文件名
getAbsolutePath()获取绝对路径
isFile() 是否是文件
isDirectory()是否是文件夹
listFiles()返回当前文件夹里的所有文件
length()返回文件的大小(字节)
容器(集合)
Map k-v
Collection 无序,不唯一 
List 有序,不唯一
Set 无序,唯一
List
ArrayList 数组 读取 写弱 线程不安全 效率高
Vector 线程安全 效率低
LinkedList 链表 读弱 写强 线程不安全 效率高
Set
HashSet 无序 唯一 其次
TreeSet 有序 唯一 最慢
LinkedHashSet 有序 唯一 最快
Map
HashMap key唯一 value不唯一 无序 线程不安全 效率高 可以为空值
TreeMap value不唯一 有序
LinkedHashMap key有序唯一 value 无序不唯一
Dictionary
HashTable key唯一 value不唯一 无序 线程安全 效率低 不可以为空值
size() 大小
List通过get(index)获取元素 for for each Iterator
Set 没有get没有下标 迭代 for each Iterator
Map get(key) 获取元素 values keySet entrySet
Collections 集合工具类参照Arrays
Collections Collection 的区别
自定义比较
Comparable 接口 比较接口 重写CompareTo 方法 排序
重写equals和hashCode这两个方法
泛型 泛化的类型
List l = new ArrayList();
IO流
输入和输出 InputStream Reader OutputStream Writer 
字节和字符 InputStream OutputStream Reader Writer 
节点和包装 BufferedInputStream BufferedReader
转换流 InputStreamReader OutputStreamWriter
InputStream FileInputStream ObjectInputStream DataInputStream
OutputStream FileOutputStream ObjectOutputStream DataOutputStream
Reader FileReader 
Writer FileWriter
read(byte []b)
read(byte[]b,int s,int e)
write(byte[]b)
readLine(String s)!=null
write(String s)
newLine()// 换行
flush() // 刷新缓存数据到硬盘里
序列化和反序列化(实现Serializable)
把内存中的对象写入文件里面存到硬盘上
把硬盘上的文件读取成内存中的对象
持久化数据,数据网络传输
// 多线程
java实现多线程的两种方式
extends Thread
implements Runnable
重写run方法
程序,线程,进程
一个进程就是一个程序的运行过程
一个程序是一些代码的集合
一个线程是进程中的一条命令或一个任务
进程是有多个线程组成
通过Thread类的start方法启动一个线程
start和run的区别
start先做准备工作再调用run方法
run方法是线程的主体
线程的生命周期
新生 new 
就绪 start
运行 cpu调度 yield 进入就绪状态
阻塞 sleep wait join notify notifyAll 进入就绪状态
死亡 run走完
线程通信
wait notify notifyAll 
notify 唤醒一个等待的线程
notify 唤醒所有等待的线程
线程同步问题 解决资源共享情况产生的并发性问题
线程上锁 synchronized 
方法上锁 限制整个方法只能被一个线程调用
对象上锁 限制一个对象只能被一个线程使用
java是单继承多实现的,提供接口可以实现资源共享
// 网络
TCP、UDP
RUL 统一资源定位符
RUI 统一资源标识符
网络的三大组成
IP 32位 0-255 127.0.0.1(本机)
port 网络门口0-65536 8080tomcat 80网页默认 1521 oracle 3306 mysql 
协议(TCP、UDP)
TCP 点对点模式 面向连接的 先连接后通信 安全 没有大小限制 对网络要求比较高 效率低
UDP 广播模式 面向无连接的 不需要连接,直接发包 不安全 64k 
TCP 文件传输
UDP 游戏
TCP Socket客户端 ServerSocket服务器
getInputStream 
getOutputStream
accept();// 返回一个连接的套接字对象


UDP DatagramSocket数据包套接字  DatagramPacket 数据包
客户端和服务器不区分
send()// 发送
receive()// 接收
七层网络协议
应用
表示
回话
传输
网络
数据链路
物理
// 反射
获取一个类的.class文件生成一个Class对象
通过Class对象获取类中的属性和方法
getDeclaredMethods()
getDeclaredFeilds()
getDeclaredConstructors()
Class.newInstance();
Constructor.newInstance();
反射的用处:
降低耦合 EJB Spring Hibernate Sturts
坏处:
打乱内部联系,不安全,效率低
Xml
可扩展标记语言
数据存储,数据交互,属性
DOM SAX JDOM DOM4J
DOM4J
正则表达式
.代表所有
[] 范围
{}出现的次数
\d 0-9
\s 空白
\w a-zA-Z0-9
? 至多一次
+ 至少一次
* 0-M
|
&& 交集
^非 以...开头
$以...结束

























































你可能感兴趣的:(JavaSE大复习--看完就知道自己的不足)