1、数据类型
基本数据类型:8种;
引用数据类型:所有的类和对象,还有数组。
2、字符串String与可修改字符串StringBuffer、StringBuilder的区别
字符串不是基本数据类型;
字符串是一个常量,是不可变的,每次修改都会生成一个新的字符串对象;
StringBuffer和StringBuilder是每次修改时不会产生新的对象,所以效率更高;
StringBuffer是线程安全的;
StringBuilder是非线程安全的。
3、数组特点
数据类型单一;
长度固定;
内存地址连续。
4、排序算法
想要将一列数按从小到大(或从大到小)的顺序排列-->
冒泡排序:每轮循环时,从头到尾依次比较相邻元素,不满足顺序就相互交换位置,直到所有元素都满足顺序,即可不再循环。
插入排序:(类似抓扑克牌) 将序列看成有序(第1个元素)和无序(第2个~最后一个)两组,每轮循环时,将无序序列中的首个元素插入到有序序列中的合适位置组成新的有序序列,直到无序序列的元素个数为0。
选择排序:把该列数看成无序序列,每轮循环时,从剩余的无序序列中找到最大(或最小)的元素放在第1位,直到剩余的无序序列的元素个数为0。
快速排序:(类型2分法) ,每次选择一个序列中的数作为基准数,将序列中的数按左小右大的规则放在基准数的合适位置,递归这一操作,直到有序。
5、异常
throwable是错误和异常的超类,往下分为error(错误)和exception(异常)两个子类;
error:系统级别的错误,是程序无法自动修复的,eg.内存异常、线程死锁等;
exception:程序可以预先设定解决方案来解决的异常,其往下又分为运行时异常和受检查的异常,eg.IO异常、sql异常;
运行时异常:代码在运行时可能出错的异常;
受检查的异常:代码编译不通过的异常,必须处理。
6、集合
集合分为Collection接口和Map接口两大类;
Collection接口的父接口是Iterable;
Collection接口的常用子接口有List和Set;
List:存储的数据有序不唯一,常用实现类ArrayList(遍历速度快)、LinkedList(修改速度快)、Vector(线程安全);
Set:存储的数据无序且唯一,常用实现类HashSet、TreeSet(自然升序);
Map接口(键值对映射)的常用实现类有HashMap(适合高效搜索)、HashTable(线程安全)、TreeMap(key的自然升序);
使用迭代器Iterator接口用来动态遍历、修改集合数据。
7、线程
线程的实现方式:
第一种:写一个类,继承Thread类,重写Run()方法,调用该实例的start()启动;
第二种:写一个类,实现Runnable接口,构造它的Thread类实例,再调用该实例的Start()启动。
异步和同步:
同步:多个线程排队调用,一次一个;
异步:多个线程同时调用,谁先抢到谁优先。
使用Synchronized对象锁,可以在方法和代码块中,实现线程同步。
常用API:
sleep():自动唤醒;
wait():线程等待,需要用notify()方法唤醒;
yeild():线程礼让。
8、方法重写与方法重载
9、面向对象
封装:属性私有化,提供get/set方法来访问;
继承:单一继承;
多态:用父类的类型代替子类作为形参。
10、接口和抽象类
接口:关键字Interface,只可定义抽象方法和常量;
抽象类:关键字Abstract,可以定义普通方法和抽象方法。
11、反射
可以动态的构造出类,访问其属性和方法。
12、IO字节流和字符流
13、XML文档的解析与创建
14、网络编程
基于TCP/IP协议,利用网络套接字Socket进行网络传输数据,也是用字节输入输出流来读取和发送数据。