【java学习路线图】入门java干货满满
JDK=JRE+JAVA开发工具 JRE=JVM+JAVA核心类库(J2SE )
.
j2 se关键字
{ }( )空格代表方法和判断条件
continue(跳出本次),break(终止),if{ }else{ },while(){ },do{ }while( ),for( ; ; )
函数,数组
插入排序,希尔排序,选择排序
冒泡排序
for (int j = 0; j < a.length - 1; j++) {
for (int i = 0; i < a.length - j - 1; i++) {
if (a[i] > a[i + 1]) {
int temp = a[i];
a[i] = a[i + 1];
a[i + 1] = temp;
}
}
}
二分查找
// 上限 中值 下限
int min, mid, max;
min = 0;
max = tmp.length - 1;
mid =( min + max) / 2;
while (tmp[mid] != search) {
if (tmp[mid] < search) {
min = mid + 1;
} else if (tmp[mid] > search) {
max = mid - 1;
}
mid = ( min + max) / 2;
}
IO流
createNewFile()
字节流(乱码问题),字符流
输入流:java.io.InputStream 输出流:java.io.OutputStream
final和finally
final修饰在
类 :不能继承
属性 :不能赋值
方法: 不能重写
finally肯定会执行,最后执行 try{ }catch{ }finally { }
/:除
%:取余
++:自增(在原值的基础上加一)
前++ 先增加后操作 int i=0; int result=++i; i为1 result为1
后++ 先操作后增加 int i=0; int result=i++; i为1 result为0
运算符== 和equals()
StringBuffer中 ( == 和equals() 一样 同为判断内存地址)
String中
== 判断内存地址
和equals() 判断值(String中重写了equals() 方法)
基本类型,泛型
全局变量默认为0
局部变量需要赋值
泛型,T指定类型
单继承,多实现接口
extends 继承
父构造器有参数 子类构造器必须super(5)传参,且需放在第一行
super关键字作用
1:主要存在于子类方法中,用于指向子类对象中父类对象。 2:访问父类的属性 3:访问父类的函数 4:访问父类的构造函数
重写方法:方法名,返回类型,参数都一致
对象流
实现了Serializable接口
函数返回类型
void 引用类型和非引用类型(八大基本类型)
类型转换
(小转大)自动转换和强制转换
存放数据
io流存放
.properties文件配置
java面向对象
面向对象三大特性:封装,继承,多态
抽象,接口,枚举,包
集合,多线程,网络编程(TCP/UDP)
集合的Collection的使用方法
接口:是代表集合的抽象数据类型。例如 Collection、List、Set、Map 等。之所以定义多个接口,是为了以不同的方式操作集合对象
实现(类):是集合接口的具体实现。从本质上讲,它们是可重复使用的数据结构,例如:ArrayList、LinkedList、HashSet、HashMap。
实例化ArrayList();
HashSet 底层数据结构是哈希表。(无序,唯一) 如何来保证元素唯一性? 1.依赖两个方法:hashCode()和equals()比对字符串
差集、并集。
java泛型,<T>类型代表java类型
Map函数
HashMap()
异常
finally肯定会执行,最后执行 try{ }catch{ }finally { }
throw 抛出异常,往上一级抛出
*集合和数组
(List,Set,Map键值对)
通过List接口声明 = 实例化子类
Collection ├List (有序集合,允许相同元素和null) │├LinkedList (非同步,允许相同元素和null,遍历效率低插入和删除效率高) │├ArrayList (非同步,允许相同元素和null,实现了动态大小的数组,遍历效率高,用的多)
查询快 增删慢
ArrayList初始长度为10,扩容机制1.5倍,old+(old >> 1)初始值加初始值右移一位
│└Vector(同步,允许相同元素和null,效率低) │ └Stack(继承自Vector,实现一个后进先出的堆栈) └Set (无序集合,不允许相同元素,最多有一个null元素)**
|-HashSet(不按存储顺序,不允许相同元素,最多有一个null元素)
|-TreeSet(不可重复,自定义排序)
自定义排序需要实现Comparable<Integer>接口<类名>
哈希值一致, 对象未必一致;哈希值不一致 , 对象 一定不一致
哈希分组 然后通过遍历组内哈希值再遍历组内元素
List<String> ls= new ArrayList<String>(); //使用
ls.add("aa")添加集合元素 ls.get(0)//获取指定位置元素
for (String str : ls) { //使用forreach遍历ArrayList中的元素 System.out.print(str+" "); }
ls1.addAll(ls);//把另外一个几个元素放进去
ls.indexOf("cc")//用来查找元素位置,查找不到则返回-1
Map (没有实现collection接口,key不能重复,value可以重复,一个key映射一个value) ├Hashtable (实现Map接口,同步,不允许null作为key和value,用自定义的类当作key的话要复写hashCode和eques方法,) ├HashMap (实现Map接口,非同步,允许null作为key和value,用的多) └WeakHashMap(实现Map接口)
Map提供key到value的映射。一个Map中不能包含相同的key,每个key只能映射一个value。
Map numbers = new HashMap (); numbers.put(“one”, new Integer(1));
进程,线程实现*
关键字synchronized
使用在方法上,避免单独跑一个进程
继承Thread类
实现Runnable接口,需要重写run方法,通过start()启动
与继承Thread类区别:Runnable可实现数据共享
使用匿名内部类->实例化的类Thread再 new Runnable重写run方法
eg:抢票系统
死锁的互斥同步 (在互斥的基础上,让线程拥有先后顺序)
在死锁进程加入判断
使用wait( )方法等待进程,notify( )重新唤醒进程
抽象类abstract
接口关键字implements
死锁一旦发生不能解决。只能避免 避免就是 互斥(某个时刻只能进入一个线程) synchronzied 同步 (在互斥的基础上,让线程拥有先后顺序)
反射机制,封装
封装:
私有属性通过一个公开方法进行访问,就是封装
私有属性可以通过反射来获取
一般步骤:
*获取Class对象的三种方式 1.通过类名获取 类名.class 该方法无法加载类 2.通过对象获取 对象名.getClass() 3.通过全类名获取 Class.forName(全类名) 该方法可以加载类,就是可以加载静态内容
*接口和抽象类的区别
abstract修饰的类-抽象类
子类继承抽象父类,必须重写抽象方法
extends继承父类
创建interface接口类
通过implements继承接口,可以多继承用","隔开
抽象类可以有构造函数,接口不可以有构造函数 抽象类中可以有普通成员变量,接口中没有全局普通成员变量,只能有常量 抽象类中的方法可以被static修饰,接口中的方法不可以被static修饰(jdk1.8之前) 抽象类中可以有普通方法和抽象方法,接口中的方法全是抽象方法(jdk1.8之前) 抽象中的方法可以被public,protected等修饰符修饰,接口中的方法全都是public abstract的方法,如果省略修饰符,则默认的也都是public abstract修饰 一个类只能继承一个抽象类,接口可以被多实现,即一个类只能继承一个类,可以实现多个接口
设计模式
单例模式
1.都需先 将构造函数私有化
饿汉式:不管用不用先实例化唯一的对象,消耗内存
private static Test3 test = new Test3();
懒汉式:用的时候再实例化唯一的对象,在不实用的时候节约内存(懒加载)
private static Test3 test = null;
synchronized
工厂模式
网络编程
TCP/IP
UDP/IP
- 点赞
- 收藏
- 关注作者
评论(0)