![](https://img-blog.csdnimg.cn/20190918140129601.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java基础
凌琅Zxin
这个作者很懒,什么都没留下…
展开
-
题目整理
一、接口java接口包含函数声明和变量声明。(×)分析:接口中声明的“变量”必须为public final static,所以为常量。二、异常1、开销在java中,我们可以用违例(Exception)来抛出一些并非错误的消息,但这样比直接从函数返回一个结果要更大的系统开销。(√)分析:try{}catch{}会增加额外的开销2、关于异常的编程,以下描述错误的是:(3 )...原创 2019-08-01 20:55:46 · 414 阅读 · 0 评论 -
ConcurrentHashMap
1.存储结构static final class HashEntry<K,V> { final int hash; final K key; volatile V value; volatile HashEntry<K,V> next;}ConcurrentHashMap 和 HashMap 实现上类似,最主要的差别是Concur...原创 2019-04-13 11:12:18 · 119 阅读 · 0 评论 -
LinkedList
1.概览基于双向链表实现,使用 Node 存储链表节点信息。private static class Node<E> { E item; Node<E> next; Node<E> prev;}每个链表存储了 first 和 last 指针:transient Node<E> first;transie...原创 2019-04-13 11:01:38 · 118 阅读 · 0 评论 -
Vector源码
1.同步它的实现与ArrayList 类似,但是使用了synchronized 进行同步。public synchronized boolean add(E e) { modCount++; ensureCapacityHelper(elementCount + 1); elementData[elementCount++] = e; return tru...原创 2019-04-12 17:33:35 · 108 阅读 · 0 评论 -
CopyOnWriteArrayList源码
1.读写分离写操作在一个复制的数组上进行,读操作还是在原始数组中进行,读写分离,互不影响。写操作需要加锁,防止并发写入时导致写入数据丢失。写操作结束之后需要把原始数组指向新的复制数组。public boolean add(E e) { final ReentrantLock lock = this.lock; lock.lock(); try { ...原创 2019-04-12 17:33:08 · 172 阅读 · 0 评论 -
ArrayList源码
1.概览public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable实现了 RandomAccess 接口,因此支持随机访问。这是理所当然的,因为ArrayList 是基于数组实现的。...原创 2019-04-12 17:24:01 · 124 阅读 · 0 评论 -
TreeMap源码
原博1.介绍所有已实现的接口:Serializable, Cloneable, Map<K,V>, NavigableMap<K,V>, SortedMap<K,V>public class TreeMap<K,V> extends AbstractMap<K,V> implements NavigableMap&l...转载 2019-03-21 14:29:41 · 124 阅读 · 0 评论 -
容器(Collection/Map)、容器中的设计模式
1.容器主要包括:Collection:存储着对象的集合 Map:存储着键值对(两个对象) 的映射表。1.1 CollectionSet List Queue1.1.1 SetTreeSet: HashSet LinkedHashSet对比: 基于 支持 时间复杂度 TreeSet 红黑树 有序性操作 O(logN)...原创 2019-04-11 23:02:09 · 273 阅读 · 0 评论 -
缓冲池、String/StringBuffer/StringBuilder、intern()
1.缓冲池1.1 new Integer(123) 与 Integer.valueOf(123) 的区别在于:new Integer(123) :每次都会新建一个对象 Integer.valueOf(123) :会使用缓存池中的对象,多次调用会取得同一个对象的引用。Integer x = new Integer(123);Integer y = new Integer(123);...原创 2019-04-21 12:50:01 · 177 阅读 · 0 评论 -
float 与 double、隐式类型转换、switch、重写与重载、Java 与 C++ 的区别、JRE or JDK
1.float 与 double1.1 字面量属于 double 类型,不能直接将 1.1 直接赋值给 float 变量,因为这是向下转型。// float f = 1.1;Java 不能隐式执行向下转型,因为这会使得精度降低。1.1f 字面量才是 float 类型。float f = 1.1f;2. 隐式类型转换因为字面量 1 是 int 类型,它比 short ...原创 2019-04-21 13:58:01 · 767 阅读 · 0 评论 -
LinkedHashMap
1.存储结构继承自 HashMap,因此具有和 HashMap 一样的快速查找特性。public class LinkedHashMap<K,V> extends HashMap<K,V> implements Map<K,V>内存维护了一个双向链表,用来维护插入顺序或者 LRU 顺序。/*** The head (eldest) of t...原创 2019-04-14 14:57:09 · 140 阅读 · 0 评论 -
题目整理
一、Statement和PreparedStatementPreparedStatement继承Statement,PreparedStatement 实例包含已编译的 SQL 语句, 所以其执行速度要快于Statement对象。作为Statement的子类,PreparedStatement继承了Statement的所有功能。三种方法execute、executeQuery和ex...原创 2019-08-01 20:03:36 · 307 阅读 · 0 评论 -
面向对象回顾(静态变量、类加载机制/双亲委派模型、Object类的方法、类和对象区别)
1.静态变量存在什么位置?方法区2.类加载机制,双亲委派模型,好处是什么?某个特定的类加载器在接到加载类的请求时,首先将加载任务委托给父类加载器,依次递归,如果父类加载器可以完成类加载任务,就成功返回;只有父类加载器无法完成此加载任务时,才自己去加载。使用双亲委派模型的好处在于Java类随着它的类加载器一起具备了一种带有优先级的层次关系。例如类java.lang.Objec...原创 2019-05-09 23:30:44 · 261 阅读 · 0 评论 -
面向对象回顾(构造函数、覆盖和重载、Query接口的list方法和iterate方法、面向对象的"六原则一法则"、反射、内部类)
1.什么是构造函数?什么是构造函数重载?什么是复制构造函数?当新对象被创建的时候,构造函数会被调用。每一个类都有构造函数。在程序员没有给类提供构造函数的情况下,Java编译器会为这个类创建一个默认的构造函数。Java中构造函数重载和方法重载很相似。可以为一个类创建多个构造函数。 每一个构造函数必须有它自己唯一的参数列表。Java不支持像C++中那样的复制构造函数,这个不同...原创 2019-05-09 22:53:03 · 345 阅读 · 0 评论 -
基础回顾(Map、==/equals()/hashcode())
1.map的分类和常见的情况java为数据结构中的映射定义了一个接口java.util.Map。它有四个实现类,分别是:HashMap Hashtable LinkedHashMap TreeMapMap主要用于存储健值对,根据键得到值,因此不允许键重复(重复了覆盖了),但允许值重复。Hashmap:是一个最常用的Map。它根据键的HashCode值存储数据。 根据...原创 2019-05-09 22:26:55 · 291 阅读 · 0 评论 -
集合对比
1. 初始容量CollectionSet:HashSet TreeSet LinkedListSetList:ArrayList 数组的默认大小为 10 LinkedListQueuePriorityQueueMapTreeMap HashTable 默认为11 负载因子:0.75 HashMap 不指明大小时,默认为16 负载因子...原创 2019-05-14 20:53:27 · 604 阅读 · 0 评论 -
关键字回顾(final/finally/finalize()、Synchronized、volatile、static)
1. final, finally, finalize的区别final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。finally是异常处理语句结构的一部分,表示总是执行。finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。1.1 final当用fin...原创 2019-05-09 17:22:24 · 344 阅读 · 0 评论 -
基础回顾(正则、循环、&和&&、 int和Integer、String /StringBuffer、Array和ArrayList、值传递和引用传递、 Lamda、java8)
1. 正则表达式1.1Java中是如何支持正则表达式操作的?Java中的String类提供了支持正则表达式操作的方法,包括:matches()、replaceAll()、replaceFirst()、split()。此外,Java中可以用Pattern类表示正则表达式对象,它提供了丰富的API进行各种正则表达式操作,如:import java.util.regex.Matche...原创 2019-05-09 16:53:02 · 259 阅读 · 0 评论 -
WeekHashMap
1.存储结构WeakHashMap 的 Entry 继承自 WeakReference。被 WeakReference 关联的对象在下一次垃圾回收时会被回收。WeakHashMap 主要用来实现缓存,通过使用 WeakHashMap 来引用缓存对象,由 JVM 对这部分缓存进行回收。private static class Entry<K,V> extends Wea...原创 2019-04-14 16:25:21 · 529 阅读 · 0 评论 -
HashMap源码分析
转自https://blog.csdn.net/duoduo18up/article/details/795034631.HashMap定义/*基于Map接口实现,允许null值和null键。 * HashMap和Hashtable很相似,只是Hashtable是同步的,以及不能为null的键 * HashMap有两个重要参数,capacity和load factor 默认的load...转载 2019-03-10 22:26:32 · 199 阅读 · 0 评论 -
Hashtable源码分析
转自https://blog.csdn.net/duoduo18up/article/details/801670741.定义public class Hashtable<K,V> extends Dictionary<K,V> implements Map<K,V>,Cloneable,java.io.Serializable继...转载 2019-03-10 22:25:43 · 119 阅读 · 0 评论 -
面向对象4(匿名对象、内部类、包、修饰符、代码块)
1.匿名对象指在创建对象的时候,只有创建语句,没将对象地址赋值给某个变量new Person();1.1 特点1、创建时,可直接使用,没有变量名new Person().eat();2、匿名对象在未指定其引用变量时,只可使用一次new Person().eat();new Person().eat();再次调用eat(),需重新创建一个Person对象。3、...原创 2019-03-03 21:42:42 · 200 阅读 · 0 评论 -
面向对象3(final、static、instanceof、向上/向下转型、初始化次序)
1. final对于基本类型,final 使数值不变; 对于引用类型,final 使引用不变,也就不能引用其它对象,但是被引用的对象本身是可以修改的。可用来修饰类、类的成员、局部变量:final修饰的类——不可以被继承,但可以继承其他类 final修饰的方法——不可以被重写。但若父类中没有final修饰的方法,子类重写后,可加final修饰 private 方法隐式地被指定为 fi...原创 2019-03-03 20:43:15 · 214 阅读 · 0 评论 -
面向对象2(构造方法、抽象类、接口)
目录1.构造方法2.抽象类2.1抽象方法定义格式:2.2抽象类定义格式2.3特点2.4细节2.5抽象类中可包含的内容3.接口3.2接口定义格式3.3特点3.4优点3.5接口和抽象类的对比3.5.1 相同点3.5.2 不同点3.6接口可多实现的原因3.7 总结1. 构造方法名称必须和类名一致。没有返回值类型,也不需要写返回...原创 2019-03-03 20:30:09 · 231 阅读 · 0 评论 -
面向对象1(super、this)
目录1.局部变量和成员变量2.参数传递2.1基本数据类型作为参数传递2.2 引用类型作为参数传递3.面向对象的三个特征3.1 封装3.2 继承成员变量成员方法3.3 多态前提:定义格式:缺点优点4.this关键字通过this实现构造方法的相互引用5.super关键字1. 局部变量和成员变量 局部变量 成...原创 2019-03-03 17:26:19 · 267 阅读 · 0 评论 -
IO-6(PrintStream/PrintWriter)
1.PrintStream/PrintWriter字节打印流/字符打印流添加输出数据的功能,可方便打印各种数据值1.1方法print():<==>write()写入串时不换行println():自动换行,特有功能,和系统相关1.2 使用步骤创建流 写数据 关闭流import java.io.FileNotFoundException;impor...原创 2019-03-05 23:06:47 · 161 阅读 · 0 评论 -
IO-5(InputStreamReader、OutputStreamWriter、序列化流、反序列化流、Serializable、transient)
1.InputStreamReader字节流通向字符的桥梁所有已实现的接口:Closeable, Readable直接已知子类:FileReader将字节输入流转换为字符输入流使用指定的字符编码表(可显式指定也可接受默认),读取字节并将其解码为字符1.1构造函数InputStreamReader(InputStream in):创建一个使用默认字符集的In...原创 2019-03-05 22:45:42 · 202 阅读 · 0 评论 -
IO-4(BufferedInputStream、BufferedInputStream、BufferedReader、BufferedWriter)
1.BufferedInputStream字节缓冲输入流从文件中读取数据1.1 读数据步骤创建数据流对象 将基本流包装秤高效流 读数据 关闭流import java.io.BufferedInputStream;import java.io.FileInputStream;import java.io.IOException;public class Test{...原创 2019-03-05 16:45:30 · 240 阅读 · 0 评论 -
IO-3(Reader、Writer、编码、FileReader、FileWriter)
1. Reader字符输入流read(0:读取单个字符返回read(char[]):将数据读到数组中,返回读取的个数2. Writer字符输入流已知子类:BufferedWriter:高效 CharArrayWriter:写入内存缓冲区,不是写入文件 PrintWriter:打印流,提供自动刷新,自动换行等功能写的位置不同,所以write()未实现,所以Wri...原创 2019-03-05 15:59:05 · 213 阅读 · 0 评论 -
常用API-1(Object类、String类、StringBuffer类、StringBuilder类)
1. Object类Java语言的根类,即所有类的父类。1.1 clone()返回一个Object对象的复制。这个复制返回的是一个新对象。clone() 是 Object 的 protected 方法,它不是 public,一个类不显式去重写clone(),其它类就不能直接去调用该类实例的 clone() 方法。1.1.1 浅拷贝拷贝对象和原始对象的引用类型引用同一个对象。...原创 2019-03-03 23:12:56 · 171 阅读 · 0 评论 -
网络通信-1(InetAddress、UDP、TCP、DatagramPacket、DatagramSocket、UDP通信示例)
1. 网络通信1.1三要素:IP地址:网络中设备表示,可用主机名 端口号,用于表示进程的逻辑地址 传输协议:通讯的规则,常见的协议:TCP、IP1.2 Socket为网络编程提供的一种机制。通信的两端都有Socket。网络通信其实就是Socket间的通信,数据在两个Socket之间通过IO传输。2. InetAddress所有已实现的接口:Serializ...原创 2019-03-06 17:07:05 · 758 阅读 · 0 评论 -
类加载、类加载器、反射
1. 类加载若程序使用的类未加载到内存中,则系统会通过加载、连接、初始化三步实现对这个类的加载。1.1 加载将class文件读入内存,并为之建立一个Class对象任何类被使用时都会有一个Class对象。1.2 连接1.2.1 验证是否有准确的内部结构,并和其他类协调一致1.2.2 准备负责为类的静态成员分配内存,并设置默认初始化1.2.3 解析将类的二进...原创 2019-03-09 13:41:14 · 135 阅读 · 0 评论 -
IO-1(Java IO、File类)
1. 简介之前的程序,数据都存储在内存中,一旦运行结束,数据消失。数据持久化存储:将内存中的数据存储到内存以外的持久化设备中(硬盘,光盘、U盘等)。OS中,数据都保存文件存放在相应的文件夹。集合只能在内存中临时存储数据,要长期存储需要用到IO流。1.1 IO输出(写)output:需把内存中的数据存储到持久化设备中输入(读)input:把持久化设备上的数据读到内存中...原创 2019-03-04 21:01:43 · 176 阅读 · 0 评论 -
集合-2(Set(HashSet、TreeSet、LinkedHashSet)、List(ArrayList、LinkedList、Vector)、Map(HashMap、TreeMap...))
1.Set接口集合中的元素不能重复,所以存入Set的元素都必须定义equals()来确保对象的唯一性。无序、无索引1.1HashSet类实现了Set接口,此实现不是同步的。由哈希表支持。实际上是一个HashMap集合。不能保证迭代顺序和存储顺序一致。特别是它不保证该顺序恒久不变。保证元素唯一的方式:hashCode()和equals()(若为自定义类,需重写两个方法...原创 2019-03-09 21:24:00 · 593 阅读 · 1 评论 -
常用API-3(System类、Math类、Arrays类、正则表达式)
1.Syetemjava.lang包中,被final修饰,不可被继承。代表程序所在系统,提供了对应的一些系统属性信息和系统操作。不可手动创建System类的对象(因为构造函数被private修饰)。System类中的方法都是static,直接可用类名访问。1.1方法currentTimeMills():当前系统时间与1970年1月1日00:00:00的毫秒差exit(...原创 2019-03-04 15:44:14 · 154 阅读 · 0 评论 -
常用API-2(字符串与数组)
1.字符串的生命与初始化主要有一下两种情况:String s1=new String("abc"); String s2=new String("abc"); 存在两个引用对象s1和s2,两个内容相同的字符串对象“abc” 它们哎内存中的地址时不同的; 只要用到new总会生成新的对象。 String s1="abc"; String s2="abc"; 在JVM...原创 2019-03-04 15:05:10 · 176 阅读 · 0 评论 -
集合-1(Collection、迭代器、Collections、泛型)
1. CollectionCollection是整个集合框架的基础,作用只是提供维护一组对象的基本接口。1.1 创建集合父类引用指向子类对象Collection<元素类型> 变量名=new ArrayList<元素类型>();//只可存储<>指定的类型Collection 变量名=new ArrayList();//集合元素默认为O...原创 2019-03-09 17:08:12 · 338 阅读 · 0 评论 -
Java NIO
Java NIO是在jdk1.4开始使用的,它既可以说成“新I/O”,也可以说成非阻塞式I/O。阻塞:暂停一个线程执行以等待某个结果的发生。如果客户端还没有对服务器端发出请求,那么ServerSocket.accept()将会阻塞。 如果连接成功,当数据还没有准备好时对InputStream.read()的调用同样会阻塞。当要处理多个连接时,需要采用多线程的方式,由于每个线程都拥...原创 2019-03-06 23:04:37 · 173 阅读 · 0 评论 -
异常
1. 异常编译或运行时异常Java代码把异常封装成了一个类。出现问题时,就回创建异常类对象并抛出异常相关信息(异常出现的位置、原因等)。2. ExceptionException类及其子类是Throwable的一种形式。Throwable常用方法: String getMessage():原因 String toString():类型、原因 void prin...原创 2019-03-09 15:43:33 · 285 阅读 · 0 评论 -
网络通信-2(TCP通信、ServerSocket、Socket)
1. TCP通信UDP中只有发送端和接收端,不区分客户端和服务器端。计算机之间可以任意地发送消息。TCP通信严格区分客户端和服务器。通信时,必须由客户端去连接服务器才能实现通信。服务器不可主动连接客户端。且服务器应事先启动,等待客户端的连接。2. ServerSocket2.1 构造方法ServerSocket(int port):创建绑定到特定端口的服务器套接字...原创 2019-03-06 21:22:04 · 261 阅读 · 0 评论