【java学习路线图】入门java干货满满

举报
杨小羊 发表于 2020/09/28 16:21:39 2020/09/28
【摘要】 java入门技术路线,结合个人笔记,分享。

java基础及语法

JDK=JRE+JAVA开发工具  JRE=JVM+JAVA核心类库(J2SE )

.java编写到到运行过程  java文件(代码文件)  -->   class文件(字节文件)   -->   JVM  -->执行           javac  编译  java 运行

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




【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。