![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java基础
文章平均质量分 73
莫失莫忘hh
保持学习,保持充实
展开
-
String字符串详细讲解 以及inner面试大坑 填埋
前言:因为最近刷了一些面试题,碰到一些关于String字符串的问题,所以在这里记录一下进入String这个类的源码当中,public final class String,可以看到String是final类型,所有不可以被继承,这样的设计有什么好处呢?主要是为了安全和高效。安全性的体现:因为String经常被使用在java类中充当参数,比如,文件路径,如果此时字符串是可变的,那么操作就...原创 2019-05-30 18:57:14 · 674 阅读 · 0 评论 -
LinkedBlockingQueue
一.介绍LinkedBlockingQueue是JUC包下的一个类,见名大概也就能猜到,这是一个基于链表实现的阻塞的队列,这是一个线程安全的类。继承关系见如下:它的数据结构如下: static class Node<E> { E item; /** * One of: * - the real successor Node * - this Node, meaning the successor is.原创 2022-03-01 10:53:55 · 475 阅读 · 0 评论 -
List集合删除元素的正确姿态
一、集合元素遍历在遍历集合的时候,我们可能会根据业务的需要而需要排除集合的一些元素,通常我们遍历List集合常用的有下列3种方式:1.普通for循环for(int i= 0; i<list.size(); i++) {}2.增强forfor(int i : list){}3.迭代器Iterator <Integer> iterator = list.ite...原创 2020-05-03 21:47:28 · 1730 阅读 · 1 评论 -
泛型及当中的T、E、?分别代表什么意思
一、泛型泛型是jdk1.5之后的新特性,最大的好处是使用集合的时候更加安全,泛型指定了类型之后,在编译器就能知道是否插入了错误的对象。取出的时候也能够安全取出,不需要做类型转换。List<String> list = new ArrayList<String>();使用了List<T>指定了 容器中只能允许添加String类型的对象,如果你添加了一个In...原创 2020-04-16 19:10:49 · 8402 阅读 · 2 评论 -
java8新特性之Lambda 表达式
因为编程习惯不想改变,很多语法上就没有用Lambda表达式,都是用传统的编码风格,但是最近读同事的代码发现,lambad这种函数式编程貌似用的很普遍了,所以写一篇博文来记录一下。1、Lambda 表达式这是java8中的一个重要新特性,推崇函数式编程,可以大大减少代码的书写量。可以将函数作为参数传递。基本语法:// 当代码语句只有1句时,可以省略大括号。并且如何需要返回时,会自动返...原创 2020-04-13 11:30:22 · 173 阅读 · 0 评论 -
Calendar日期类的Set方法与Add方法的区别,有坑!
1. Claendar这是JDK提供给我们对日期操作的一个类,我们常用它来进行日期的基本操作。我是使用newInstence()方法来获得实例对象。Calendar calendar = Calendar.getInstance();2.设置日期的操作通常设置日期会使用 Set和 Add这两个方法。Set方法set(你想设置的域,你想设置的值);比如下面的方法 我想10天之后的dat...原创 2020-02-21 12:57:25 · 3102 阅读 · 0 评论 -
Java反射
1.什么是反射反射首先是能够获取到Java中要反射类的字节码 ,然后将字节码中的方法,变量,构造函数等映射成相应的 Method、 Filed、 Constructor 等类,而已让我们间接的调用。2、常用API先创建一个类用于测试public class Order { public String oid = "00001";//订单的编号 double tot...原创 2019-07-30 13:05:36 · 127 阅读 · 0 评论 -
异常知识总结
1、Thrownable是java中的顶级异常类,继承至Object,实现了序列化接口,有两个重要的子类:Exception和Error,二者都是java中处理异常的子类,各自都包含大量的子类。**(1)**Error是表示系统级别的错误,是java运行环境内部或者硬件错误,不能指望程序员来处理这类问题,除了退出程序之外,没有其他选择,这是java虚拟机抛出的。加粗样式...原创 2019-07-26 10:23:56 · 228 阅读 · 0 评论 -
IO流总结
一、什么是流流通常可以理解外一串连续不断的数据的集合,就像你家的水龙头,水的一端是水泵在一点一点的供水,而在另外一端看到的是一股连续不断的水流。数据的写入可以是一段一段向管道中写入数据,这些数据段,会先后排成一个长长的数据流。对于数据读取程序来说,看不到流写入时的情况,每次读取只能先读取前面先到达的数据,再读取后面的数据。就好像水龙头,你只有放掉了水管前面的水,才能收到水管后面的水。二、IO流...原创 2019-07-27 13:04:29 · 142 阅读 · 0 评论 -
JAVA的序列化与反序列化(一)
序列化序列化是一种对象持久化的手段。通常我们在jvm平台创建对象。但是仅仅当jvm正在运行时,对象才会存在。也就是说,当java运行停止之后,这个对象所保存的信息也就消失了。那么当我们需要保存一个java对象的信息,并需要的时候又可以把他取出来。java的序列化就可以帮我们实现。我们对Java对象进行序列化的时候,会把其状态保存为一组字节,当我们需要的时候,又将其取出来。必须注意地是,对象序列...原创 2019-09-03 13:01:32 · 153 阅读 · 0 评论 -
JAVA的序列化与反序列化(二)之源码分析
在上一篇文章中java的序列化与反序列化介绍到序列化是用来持久化对象的。只展示了基本的用法。本文章将介绍,为绕这几个问题展开:1、为什么实现Serializable,而不做任何事情就可以进行序列化操作2、如何自定义序列化的机制(比如:我们序列化一个对象的时候,需要自定义改变他的值)。我们进入ObjectOutputStream源码的writeObject方法如下:public final ...原创 2019-09-03 21:09:32 · 289 阅读 · 0 评论 -
线程池面试知识总结
一、什么是线程池线程池是一种池化技术的典型实现,所谓池话技术就是提前保存大量资源以备不时之需。在资源有限的前提下,使用池化技术可以大大提高资源的利用率,提高性能。(以备不时之需)线程池还有一个作用就是可以限定线程的个数,不会因为内存中线程个数太多而导致内存溢出。二、线程池的分类newSingleThreadExecutor:一个单线程的线程池,可以用于需要保证顺序执行的场景,并且只有一个...原创 2019-09-17 11:11:34 · 135 阅读 · 0 评论 -
HashMap源码分析(一)之hash方法,put方法,resize方法
1、什么是HashMapHashMap是基于hash表的一个Map接口的实现。也就是数组+链表的存储方式。、数组特点:查找快 增删 慢链表的特点: 增删快 查找慢数组链表将两个特性结合了哈希表、是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列...原创 2019-07-19 23:19:11 · 695 阅读 · 2 评论 -
java容器HashSet
(1) HashSetHashSet是set接口的一个实现类,底层是基于hashmap实现的,没有顺序,并且不能存储重复值,这个特性导致它常用来去重。 public HashSet() { map = new HashMap<>(); }在创建HashSet的时候,创建了一个HashMap。(2)基本方法1、add方法 public b...原创 2019-07-24 09:03:57 · 251 阅读 · 0 评论 -
Integer之间的比较
先上代码: @Test public void test1(){ Integer i = 100; Integer i2 = 100; System.out.println(i==i2); // 输出 true }按照我们平常了解 ==是用来比较地址的,因为Integer是包装类,每声明一个Integer i...原创 2019-07-12 10:43:19 · 721 阅读 · 0 评论 -
关于java当中的Enum枚举类
Enum枚举类前言: 记录一下关于枚举类的学习过程。我们知道枚举类enum是在jdk1.5引入的新特性,在此之前,我们常用的表示常量的的方式是声明public final static,例如:public class UserState{ public final static int LOGIN = 1 ; public final static int LOGOUT = 0 ;...原创 2019-05-20 19:06:36 · 289 阅读 · 0 评论 -
创建线程的两种方式
先来了解一下与线程相关的概念,如程序,进程,以及他们之间的区别1)、程序Program:程序是一段静态的代码, 它是应用程序执行的蓝本。2)、进程Process进程是指一种正在运行的程序, 有自己的地址空间。3)、线程Thread进程内部的一个执行单元, 它是程序中一个单一的顺序控制流程。线程又被称为轻量级进程(lightweight process)。如果在一个进程中同时运行了多个线...原创 2019-06-22 14:23:50 · 1920 阅读 · 0 评论 -
String、StringBuffer与StringBuider的区别联系
一、 StringString是字符串常量,它与StringBuilder,StringBuffer最大的区别就是,它是一个不可变对象,String内部是一个private final char value[]数组,每次对String类型进行改变其实都等同于生成了一个新的String对象,然后将指针指向新的String对象,所以经常改变内容的字符串最好不用String。由于创建String对...原创 2019-07-12 19:12:31 · 381 阅读 · 0 评论 -
抽象类与抽象方法
抽象方法使用abstract修饰的方法,没有方法体,只有方法的声明。定义的是一种“规范”。要求子类必须实现父类定义的抽象方法。抽象类使用abstract 修饰的类。通过abstract方法定义规范,然后要求子类必须定义具体实现。通过抽象类,我们可以严格限制子类的设计,使得子类之间更加通用。抽象类与抽象方法代码如下:public abstract class Animal { /...原创 2019-07-09 19:35:40 · 181 阅读 · 0 评论 -
什么是接口?接口和抽象类的区别?
1、接口接口就是比“抽象类"还“抽象”的“抽象类”, 可以更加规范的对子类进行约束。全面地专业地实现了:规范和具体实现的分离。接口是完全面向规范的,规定了-批类具有的公共方法规范。从接口的实现者角度看,接口定义了可以向外部提供的服务。从接口的调用者角度看,接口定义了实现者能提供那些服务。接口是两个模块之间通信的标准,通信的规范。如果能把你要设计的模块之间的接口定义好,就相当于完成了系统...原创 2019-07-09 21:10:39 · 22871 阅读 · 2 评论 -
java面向对象的三大特性和五大基本原则
1.继承继承是一种子类复用父类的属性和方法的一种机制,这是属于类与类之间的关系,在java中用extend关键字,提供继承信息的类称为父类(超类,基类);得到继承的类称为子类(派生类),继承让软件系统中有了一定的延续。如果父类具备的功能需要子类特殊定义的时候,需要进行方法的重写。2.封装封装是一种信息隐蔽的技术,他的目是使得对象的使用者和生产者分离,使对象的定义和实现分开。通过对数据的封装,...原创 2019-07-10 09:46:10 · 203 阅读 · 0 评论 -
Java容器ArrayList源码分析
一、什么是容器容器,用来存储一类相同的数据。数组是一种容器,它是一种线性结构,在查找方面,效率非常高,但是数组的长度需要我们在创建的时候,就设定好。这一性质,让它有些时候并不占优势,所以我们就要选择一种可变的容器,如List ,Set。他们都可以用来存储相同数据,并且加入的泛型设置,可以在编译器,就对存入的数据进行类型检查,泛型提供了更安全的容器保证。(java中容器的框架图:)Colle...原创 2019-07-14 15:56:06 · 105 阅读 · 0 评论 -
静态成员类、非静态成员、匿名类、局部类 瞅一瞅
平常我们定义一个类的时候,类名需和类文件名相同,并且访问权限只能使用public和default。而内部类是指在外部类的内部再定义一个类,类名不需要和文件名相同。内部类可以是静态static的,也可用public,default(包限定),protected和private修饰。...原创 2019-07-10 15:52:18 · 323 阅读 · 0 评论 -
java容器手写简单ArrayList
之前分析记录了一下源码,现在模仿源码,手写ArrayList的功能,简单实现,加深记忆/** * @author hao * @create 2019-07-15 ${TIM} */public class DiyCollection { //元素个数 private int size; //数组存储 private Object elementD...原创 2019-07-15 10:17:36 · 160 阅读 · 0 评论 -
Java容器LinkedList源码分析
LinkedListLinkedList是List接口下的另一个实现类,ArrayList的特点是查询速度快,增、删慢,因为它底层是数组,增、删要进行数组复制,扩容操作。而LinkedList恰恰相反,它增,删,速度快,查询速度慢,底层是用双向链表实现。结构图如下:双链表是一种线性结构。由多个节点组成。在LinkedList中定义成了一个内部类Node,有三个成员变量,用来表示一个节点。...原创 2019-07-15 19:37:56 · 100 阅读 · 0 评论 -
Object类当中的equals和hashCode方法
Object类当中的equals和hashCode方法**前言:**最近学习过程中,碰到了涉及需要对equals方法,和hashCode方法的重写,发现对之前的java基础知识有点陌生了,所以有必要去复习一下,然后顺便记录一下。我们知道equals方法hashCode都是Object这个超类当中的方法。进入jdk的源码看一下。1.equals()方法 /** * Ind...原创 2019-05-20 13:19:34 · 1176 阅读 · 0 评论