常用集合、数据接口:set list hash

 

java基础

  1. 数据类型:8种基本的数据类型,所占的字节数以及长度,对应的封装类型。
  2. collection:3种接口以及实现类(list、map、set)
  3. 面向对象的三大特征:
  4. 重写和重载的区别:
  5. String、StringBuilder、StringBuffer的区别
  6. 单例模式:
  7. JDK、JRE、JVM三者的区别和联系:
  8. JVM:工作原理、引用类型、类加载、回收机制
  9. 接口和抽象类的区别、用法
  10. Throw throws的区别:
  11. 线程相关

 

二、java web开发框架

 

  1. SSH
  2. Jfinal

 

三、mysql数据库操作

 

 

四、计算机网络:

  1. 基础的名词、域名、IP:
  2. HTTP、TCP
  3. Get、Post的区别

 

 

五:算法:

  1. 排序算法;插入排序、选择排序、冒泡排序 o(N2)
  2. 堆排序:

数据结构全书浏览。

https://blog.csdn.net/qq_41523096/article/details/86560570?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

 

 

 

 

 

8种基本的数据类型https://www.runoob.com/java/java-basic-datatypes.html

1字节=8位=1byte  位:2进制中的一个位置

4个整型、2个浮点、一个布尔、一个字符型

 

Object类

 

Number类

Object类

 

byte

short

int

long

Float

double

boolean

char

位数

8

16

32

64

32

64

1

16

符号位

1

1

1

1

1

1

 

 

范围

2^7

2^15

2^31

2^63

7

15

 

+2^15

正比负少1,0

-128 +127

-32768

32767

 

 

整24

浮7

整48

浮15

True 1 false 0

0-65,535

没有负

java.lang

Byte

Short

Integer

Long

Float

Double

 

Character

 

包装类: https://www.runoob.com/java/java-number.html

封装基本类型位对象,提供多种方法调用。

装箱:基本数据类型转对象

拆箱:对象转基本数据类型

这种由编译器特别支持的包装称为装箱,所以当内置数据类型被当作对象使用的时候,编译器会把内置类型装箱为包装类。相似的,编译器也可以把一个对象拆箱为内置类型。Number 类属于 java.lang 包。(.valueOf()返回内置数据类型, toString())以字符串形式返回值

补充:

首先,我们看一下双等号“ == ”和equals()方法的不同之处。

双等号“ == ”,对于基本数据类型,比较的是它们的值。

对于非基本类型,比较的是它们在内存中的存放地址,或者说是比较两个引用是否引用内存中的同一个对象。

equals()是在Object基类中定义的方法。

这个方法的初始行为是比较对象的内存地址,但在一些类库中,这个方法被覆盖掉了,如String,Integer,Date等。在这些类当中equals有其自身的实现(一般是比较值),而不再是比较类在堆内存中的存放地址了。

对于复合数据类型之间进行equals比较,在没有覆写equals方法的情况下,它们之间的比较还是基于他们在内存中的存放位置的地址值的,因为Object的equals方法也是用双等号“ == ”进行比较的,所以比较后的结果跟双等号“ == ”的结果相同。

 

Collection 接口:都在java.util 包中,属于JDK。

包含集合框架、遗留的 collection 类、事件模型、日期和时间设施、国际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组、日期Date类、堆栈Stack类、向量Vector类等)。集合类、时间处理模式、日期时间工具等各类常用工具包。

复杂(全):

https://blog.csdn.net/u010775025/article/details/79315361?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

简单(简洁):

https://blog.csdn.net/Dreamhai/article/details/80570544

 

下面都有三种接口,List、set接口继承Collection接口。Map是util下一个独立的接口

尽管Map接口和它的实现也是集合框架的一部分,但Map不是集合,集合也不是Map。因此,Map继承Collection毫无意义,反之亦然。

Collection接口是集合类的根接口,Java中没有提供这个接口的直接的实现类。但是却让其被继承产生了两个接口,就是Set和List。Set中不能包含重复的元素。List是一个有序的集合,可以包含重复的元素,提供了按索引访问的方式。

Map是Java.util包中的另一个接口,它和Collection接口没有关系,是相互独立的,但是都属于集合类的一部分。Map包含了key-value对。Map不能包含重复的key,但是可以包含相同的value。

Iterator,所有的集合类,都实现了Iterator接口,这是一个用于遍历集合中元素的接口,主要包含以下三种方法:

1.hasNext()是否还有下一个元素。

2.next()返 回下一个元素。

3.remove()删除当前元素。

 

 

实现collection的接口的两个子接口:List Set

 

List: 是一个有序的集合,提供下标、索引使用户可以操作集合内部元素(类似于数组,只不过存放的是对象),与Set不同,它允许元素重复。实现List接口的类有LinkedListArrayListVectorStack

Set是一种不包含重复元素的集合。通过LinkedHashSet(有序)通过链表的形式保证有序。

 

Map(键值对:key-value)请注意,Map没有继承Collection接口,Map提供keyvalue的映射。一个Map中不能包含相同的key,每个key只能映射一个valueMap接口提供3种集合的视图,Map的内容可以被当作一组key集合,一组value集合,或者一组key-value映射。

 

ArrayList内部是由数组是实现的,而LinkList内部是由循环双向链表实现的。两个都继承了AbstractListAbstractList 是一个抽象类,实现了List 接口。两者都是线程不安全的,想要实现线程安全,则需要加上

 

Hash 寻址冲突的解决办法; https://www.cnblogs.com/gongcheng-/p/10894205.html

 

Hashmap的实现:https://blog.csdn.net/Jae_Peng/article/details/79562432

HashMapMap.Entry静态内部类实现中存储key-value对。HashMap使用哈希算法,在putget方法中,它使用hashCode()equals()方法,对象的hashCodeequals()方法。当我们通过传递key-value对调用put方法的时候,HashMap使用Key hashCode()和哈希算法来找出存储key-value对的索引。Entry存储在LinkedList中,所以如果存在entry,它使用equals()方法来检查传递的key是否已经存在,如果存在,它会覆盖value,如果不存在,它会创建一个新的entry然后保存。当我们通过传递key调用get方法时,它再次使用hashCode()来找到数组中的索引,然后使用equals()方法找出正确的Entry,然后返回它的值。属于解决hash冲突中的链地址法。

 

HashCode equils: https://www.cnblogs.com/zcjyzh/p/9329346.html

要求:1. equils值相等的两个对象,hashcode值也相等

2. hashcode值相等的两个对象,equils值不要求相等

如果重写了equils,不重写hashcode会违反第一条规定。

即重写了键对象的equils,如果不重写HashCODE,会导致自定义的相等对象灭有相同的hachcod映射值,

 

线程安全的是指加上了同步(操作的时候上了锁synchronize,读音:心儿阔奈子)

总结;

如果涉及到堆栈,队列等操作,应该考虑用List,对于需要快速插入,删除元素,应该使用LinkedList,如果需要快速随机访问元素,应该使用ArrayList

如果程序在单线程环境中,或者访问仅仅在一个线程中进行,考虑非同步的类,其效率较高,如果多个线程可能同时操作一个类,应该使用同步的类。

要特别注意对哈希表的操作,作为key的对象要正确复写equalshashCode方法。

尽量返回接口而非实际的类型,如返回List而非ArrayList,这样如果以后需要将ArrayList换成LinkedList时,客户端代码不用改变。这就是针对抽象编程。

 

 

当对字符串进行修改的时候,需要使用 StringBuffer StringBuilder 类。

 

String 类不同的是,StringBuffer StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。

 

StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。

 

由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。

 

 

重写和重载:Java 重写(Override)与重载(Overload) https://www.runoob.com/java/java-override-overload.html

重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写 (子类继承父类)

重载(overloading) 是在一个类里面方法名字相同,而参数不同。返回类型可以相同也可以不同。(常用的是构造函数)

 

面向对象的三大特征:抽象、继承、多态

继承java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。

https://www.runoob.com/java/java-inheritance.html

继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。

支持多次继承,不支持多继承。

 

多态; 继承-重写-父类引用指向子类对象 https://www.runoob.com/java/java-polymorphism.html

 

抽象https://www.runoob.com/java/java-abstraction.html

 

接口和抽象类的区别:

1:类描述对象的属性和方法。接口则包含类要实现的方法

1. 抽象类中的方法可以有方法体,就是能实现方法的具体功能,但是接口中的方法不行。

2. 抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是 public static final 类型的。

3. 接口中不能含有静态代码块以及静态方法( static 修饰的方法),而抽象类是可以有静态代码块和静态方法。

4. 一个类只能继承一个抽象类,而一个类却可以实现多个接口。

JDK 1.8 以后,接口里可以有静态方法和方法体了。

接口:https://www.runoob.com/java/java-interfaces.html

关键字为 interface

实现接口用implemts

public interface Hockey extends Sports, Event 多继承

 

; 为了更好地组织类,Java 提供了包机制,用于区别类名的命名空间。把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用。

 

Java 8新特性; https://www.runoob.com/java/java8-new-features.html

JDKJREJVM三者间的联系与区别

 

https://www.cnblogs.com/bingyimeiling/p/10266949.html

  1. JDK 用于开发,JRE 用于运行java程序 ;如果只是运行Java程序,可以只安装JRE,无序安装JDK
  2. JDk包含JREJDK JRE 中都包含 JVM
  3. JVM java 编程语言的核心并且具有平台独立性

开发过程;

使用JDK(调用Java API)编写Java源代码,存储于.java文件中。

JDK中的编译器javac.exeJava源代码编译成为字节码,存储在.class文件中。

JRE加载、验证、执行Java字节码。

JVM字节码解释为机器码并映射到CPU指令集或OS(操作系统)的系统调用。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值