![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java基础
文章平均质量分 81
K'illCode
记录自己的学习历程,大部分来自转载,如有侵权联系删除.......
展开
-
必须掌握的hashcode()方法
一、hashcode是什么?1、hash和hash表是什么? 想要知道这个hashcode,首先得知道hash,通过百度百科看一下:hash是一个函数,该函数中的实现就是一种算法,就是通过一系列的算法来得到一个hash值。这个时候,我们就需要知道另一个东西,hash表,通过hash算法得到的hash值就在这张hash表中,也就是说,hash表就是所有的hash值组成的,有很多种...原创 2019-06-16 18:47:07 · 39086 阅读 · 25 评论 -
Java引用类型原理剖析
Java中一共有4种引用类型(其实还有一些其他的引用类型比如FinalReference):强引用、软引用、弱引用、虚引用。其中强引用就是我们经常使用的 Objecta=newObject(); 这样的形式,在Java中并没有对应的Reference类。本篇文章主要是分析软引用、弱引用、虚引用的实现,这三种引用类型都是继承于Reference这个类,主要逻辑也在Reference中。问题...原创 2019-02-10 16:28:02 · 389 阅读 · 0 评论 -
为什么不建议在for循环中使用"+"进行字符串拼接
本文,也是对于Java中字符串相关知识的一个补充,主要来介绍一下字符串拼接相关的知识。本文基于jdk1.8.0_181。 字符串拼接字符串拼接是我们在Java代码中比较经常要做的事情,就是把多个字符串拼接到一起。我们都知道,String是Java中一个不可变的类,所以他一旦被实例化就无法被修改。不可变类的实例一旦创建,其成员变量的值就不能被修改。这样设计有很多好处,比如可以...原创 2019-01-22 13:41:15 · 846 阅读 · 0 评论 -
String有关的那点事儿
String,是Java中除了基本数据类型以外,最为重要的一个类型了。很多人会认为他比较简单。但是和String有关的面试题有很多,下面我随便找两道面试题,看看你能不能都答对:Q1:String s = new String("hollis");定义了几个对象。Q2:如何理解String的intern方法?上面这两个是面试题和String相关的比较常考的,很多人一般都知道答案。A1...原创 2019-01-25 17:31:23 · 214 阅读 · 0 评论 -
Java流及流操作示例
流此处的流(Stream)与io中的输入流(InputStream)与输出流(OutputStream)是不同的概念,与实时处理数据的流也是不同的概念,但它们也有相似之处。Stream是对集合类的增强,它将List、Map等集合作为数据源,串行或并行地操作集合类,这些操作包括遍历(foreach)、过滤(filter)、排序(sort)、匹配(match)、映射(map)、计数(count...原创 2018-12-17 10:19:08 · 358 阅读 · 0 评论 -
Java泛型基础
Java泛型基础 1. 认识泛型 泛型是在JDK1.5之后增加的新功能. 泛型可以解决数据的安全性问题, 主要的原理是在类声明的时候通过一个标识表示类中某个属性的类型或者是某个方法的返回值及参数类型. 格式: 访问权限 class 类名称<泛型, ...="">{ 属性 方法} 对象的创建: 类名称&l...原创 2018-12-14 16:59:20 · 160 阅读 · 0 评论 -
Java String 对 null 对象的容错处理
前言最近在读《Thinking in Java》,看到这样一段话:Primitives that are fields in a class are automatically initialized to zero, as noted in the Everything Is an Object chapter. But the object references are initia...原创 2018-12-04 19:25:17 · 182 阅读 · 0 评论 -
Java反射中,Class.forName和ClassLoader的区别
前言最近在面试过程中有被问到,在Java反射中Class.forName()加载类和使用ClassLoader加载类的区别。当时没有想出来后来自己研究了一下就写下来记录一下。解释在java中Class.forName()和ClassLoader都可以对类进行加载。ClassLoader就是遵循双亲委派模型最终调用启动类加载器的类加载器,实现的功能是“通过一个类的全限定名来获取描述此类的...原创 2018-11-24 09:47:40 · 235 阅读 · 0 评论 -
java安全沙箱之ClassLoader双亲委派机制
简介 “类加载体系”及ClassLoader双亲委派机制。java程序中的 .java文件编译完会生成 .class文件,而 .class文件就是通过被称为类加载器的ClassLoader加载的,而ClassLoder在加载过程中会使用“双亲委派机制”来加载 .class文件,先上图: 看着图从上往下介绍: BootStrapClassLoader 启动类...原创 2018-11-09 11:37:48 · 193 阅读 · 0 评论 -
Java 泛型
1.Java中的泛型是什么 ? 使用泛型的好处是什么? 这是在各种Java泛型面试中,一开场你就会被问到的问题中的一个,主要集中在初级和中级面试中。那些拥有Java1.4或更早版本的开发背景的人都知道,在集合中存储对象并在使用前进行类型转换是多么的不方便。 泛型防止了那种情况的发生。它提供了编译期的类型安全,确保你只能把正确类型的对象放入集合中,避免了在运行时出现ClassCast...原创 2018-10-30 19:45:39 · 130 阅读 · 0 评论 -
ServletContext与Web应用以及Spring容器启动
一、ServletContext对象获取Demo Servlet容器在启动时会加载Web应用,并为每个Web应用创建唯一的ServletContext对象。 可以把ServletContext看作一个Web应用的服务器端组件的共享内存。在ServletContext中可以存放共享数据,有4个读取或者设置共享数据的方法: CounterServlet.java ...原创 2018-10-30 19:37:06 · 581 阅读 · 1 评论 -
equals() 方法和 hashCode() 方法
Java的基类Object提供了一些方法,其中equals()方法用于判断两个对象是否相等,hashCode()方法用于计算对象的哈希码。equals()和hashCode()都不是final方法,都可以被重写(overwrite)。 本文介绍了2种方法在使用和重写时,一些需要注意的问题。 一、equal()方法 Object类中equals()方法实现如下: ...原创 2018-09-15 17:44:26 · 170 阅读 · 0 评论 -
Java体系化学习路线图
Web应用,最常见的研发语言是Java和PHP。后端服务,最常见的研发语言是Java和C/C++。大数据,最常见的研发语言是Java和Python。可以说,Java是现阶段中国互联网公司中,覆盖度最广的研发语言,掌握了Java技术体系,不管在成熟的大公司,快速发展的公司,还是创业阶段的公司,都能有立足之地。有不少朋友问,除了掌握Java语法,还要系统学习哪些Java相关的技术,今天分享一个,互联网...转载 2018-07-16 13:02:03 · 233 阅读 · 0 评论 -
Java中class的初始化顺序
class的装载在讲class的初始化之前,我们来讲解下class的装载顺序。以下摘自《Thinking in Java 4》 由于Java 中的一切东西都是对象,所以许多活动 变得更加简单,这个问题便是其中的一例。正如下一章会讲到的那样,每个对象的代码都存在于独立的文件 中。除非真的需要代码,否则那个文件是不会载入的。通常,我们可认为除非那个类的一个对象构造完毕, 否则代码不会真的载入。由于s...转载 2018-04-28 17:05:27 · 173 阅读 · 0 评论 -
Java基础知识总结 - 超详细篇收藏
1,JDK:Java Development Kit,java的开发和运行环境,java的开发工具和jre。2,JRE:Java Runtime Environment,java程序的运行环境,java运行的所需的类库+JVM(java虚拟机)。3,配置环境变量:让java jdk\bin目录下的工具,可以在任意目录下运行,原因是,将该工具所在目录告诉了系统,当使用该工具时,由系统帮我们去找指定的...原创 2018-04-01 16:07:13 · 292 阅读 · 0 评论 -
Java基础知识总结(绝对经典)
写代码:1,明确需求。我要做什么?2,分析思路。我要怎么做?1,2,3。3,确定步骤。每一个思路部分用到哪些语句,方法,和对象。4,代码实现。用具体的java语言代码把思路体现出来。学习新技术的四点:1,该技术是什么?2,该技术有什么特点(使用注意):3,该技术怎么使用。demo4,该技术什么时候用?test。--------------------------------------------...原创 2018-03-04 14:10:04 · 191 阅读 · 0 评论 -
LinkedList源码分析
注:本文所有方法和示例基于jdk1.8概述LinkedList是一种可以在任何位置进行高效地插入和移除操作的有序序列,它是基于双向链表实现的,是线程不安全的,允许元素为null的双向链表。源码分析1. 变量/** * 集合元素数量 **/transient int size = 0;/** * 指向第一个节点的指针 * Invariant: (first...原创 2019-02-18 14:53:30 · 171 阅读 · 0 评论 -
ArrayList源码分析&手写ArrayList
注:本文所有方法和示例基于jdk1.8简介ArrayList是我们开发中非常常用的数据存储容器之一,其底层是数组实现的,我们可以在集合中存储任意类型的数据,ArrayList是线程不安全的,非常适合用于对元素进行查找,效率非常高。线程安全性对ArrayList的操作一般分为两个步骤,改变位置(size)和操作元素(e)。所以这个过程在多线程的环境下是不能保证具有原子性的,因此A...原创 2019-02-18 15:06:58 · 753 阅读 · 0 评论 -
Java程序员的10种错误
这个列表总结了10个Java开发人员最常犯的错误,是我基于大量的github上的开源项目,Stack overflow上的问题,还有一些流行的google搜索的分析,没有明显示的评估证明它们是前10,但它们绝对是很常见的。1.Array转ArrayList当需要把Array转成ArrayList的时候,开发人员经常这样做:List<String> list = Array...原创 2019-03-15 19:42:37 · 199 阅读 · 0 评论 -
Java 中的类型传递问题解惑
我之前一直犯了一个错误,认为 Java 中是有引用传递的,其实不然,写这篇文章一方面是纠正自己的理解,另一个是希望看到文章的人不要犯同样的错。01 类型传递有什么蹊跷?要讨论 Java 中是值传递还是引用传递,先来看看如何定义值传递和引用传递。 值传递(pass by value):在调用函数时将实际参数拷贝一份传递到函数中,这样在函数中如果对参数进行修改,将不会...原创 2019-06-15 13:56:15 · 189 阅读 · 0 评论 -
Java多态的实现机制是什么
Java多态的实现机制是父类或接口定义的引用变量可以指向子类或实现类的实例对象,而程序调用的方法在运行期才动态绑定,就是引用变量所指向的具体实现对象的方法,也就是内存里正在运行的那个对象的方法,而不是引用变量的类型中定义的方法。浅谈多态机制的意义及实现在面向对象编程(Object-Oriented Programming, OOP)中,多态机制无疑是其最具特色的功能,甚至可以说...转载 2019-06-15 13:54:58 · 621 阅读 · 0 评论 -
静(动)态代理
静态代理接下来我们实现简单的加减乘除的案例,并且通过静态代理的方式给每个运算方法加上日志的功能,即打印出:"你输入的参数为a和b,相加结果为c"。1. 案例截屏2. AtService.javapublic interface AtService { int add(int a,int b); int min(int a,int b); int mul(i...原创 2019-06-03 17:31:31 · 210 阅读 · 0 评论 -
Java 20 种常用类库和 API
一个有经验的Java开发人员特征之一就是善于使用已有的轮子来造车。《Effective Java》的作者Joshua Bloch曾经说过:“建议使用现有的API来开发,而不是重复造轮子”。在本文中,我将分享一些Java开发人员应该熟悉的最有用的和必要的库和API。顺便说一句,这里不包括框架,如Spring和Hibernate因为他们非常有名,都有特定的功能。本文总结了日志、JSON解析、单测、...原创 2019-05-19 09:21:27 · 403 阅读 · 0 评论 -
Java 的反射中,Class.forName 和 ClassLoader 的区别
前言最近在面试过程中有被问到,在Java反射中Class.forName()加载类和使用ClassLoader加载类的区别。当时没有想出来后来自己研究了一下就写下来记录一下。解释在java中Class.forName()和ClassLoader都可以对类进行加载。ClassLoader就是遵循双亲委派模型最终调用启动类加载器的类加载器,实现的功能是“通过一个类的全限定名来获取描述此类的...原创 2019-05-10 09:36:51 · 184 阅读 · 0 评论 -
Java中的反射机制
一.概念反射就是把Java的各种成分映射成相应的Java类。Class类的构造方法是private,由JVM创建。反射是java语言的一个特性,它允程序在运行时(注意不是编译的时候)来进行自我检查并且对内部的成员进行操作。例如它允许一个java的类获取他所有的成员变量和方法并且显示出来。Java 的这一能力在实际应用中也许用得不是很多,但是在其它的程序设计语言中根本就不存在这一特性。...原创 2019-05-03 15:11:36 · 91 阅读 · 0 评论 -
Java中的注解是如何工作的
自Java5.0版本引入注解之后,它就成为了Java平台中非常重要的一部分。开发过程中,我们也时常在应用代码中会看到诸如@Override,@Deprecated这样的注解。这篇文章中,我将向大家讲述到底什么是注解,为什么要引入注解,注解是如何工作的,如何编写自定义的注解(通过例子),什么情况下可以使用注解以及最新注解和ADF(应用开发框架)。这会花点儿时间,所以为自己准备一杯咖啡,让我们来进入注...原创 2019-05-02 18:16:09 · 122 阅读 · 0 评论 -
少写点if else和switch
前言作为搬砖在第一线的底层工人,业务场景从来是没有做不到只有想不到的复杂。不过他强任他强,if-else全搞定,搬就完了。但是随着业务迭代或者项目交接,自己在看自己或者别人的if代码的时候,心情就不再表述了,各自深有体会。所以我们一起看看if还能怎么写最基本if-else假设有这么个场景,不同情况下打印不同值。因为涉及到的条件太多,就不提三目运算之类优化了。if(a=...原创 2019-05-02 17:46:11 · 134 阅读 · 0 评论 -
Java的四大引用
导读本文会按照以下思路进行:(1)Java的四种对象引用的基本概念(2)四种对象引用的差异对比(3)对象可及性的判断以及与垃圾回收机制的关系(4)引用队列ReferenceQueue的介绍Java的四种对象引用的基本概念从JDK1.2版本开始,把对象的引用分为四种级别,从而使程序更加灵活的控制对象的生命周期。这四种级别由高到低依次为:强引用、软引用、弱引用和虚引用。...原创 2019-04-29 19:40:32 · 142 阅读 · 0 评论 -
七大排序算法 - 冒泡、简单选择、直接插入、希尔、堆、归并、快速
排序的相关概念排序的分类 根据在排序过程中带排序的记录是否全部被放置在内存中,排序分为: 内排序 外排序 1.内排序内排序是在排序整个过程中,带排序的所有记录全部放置在内存中。影响内排序的主要因素 时间性能。 (主要受比较和移动两种操作的影响) 辅助空间。 算法的复杂性。 内排序的分类根据排序...原创 2019-04-16 15:02:10 · 576 阅读 · 0 评论 -
Java集合框架综述
一、集合框架图简化图:说明:对于以上的框架图有如下几点说明1、所有集合类都位于java.util包下。Java的集合类主要由两个接口派生而出:Collection和Map,Collection和Map是Java集合框架的根接口,这两个接口又包含了一些子接口或实现类。2、集合接口:6个接口(短虚线表示),表示不同集合类型,是集合框架的基础。3、抽象类:5个抽象类(长虚线表...原创 2019-03-31 16:01:58 · 171 阅读 · 0 评论 -
HashMap在Java1.7与1.8中的区别
基于JDK1.7.0_80与JDK1.8.0_66做的分析JDK1.7中使用一个Entry数组来存储数据,用key的hashcode取模来决定key会被放到数组里的位置,如果hashcode相同,或者hashcode取模后的结果相同(hash collision),那么这些key会被定位到Entry数组的同一个格子里,这些key会形成一个链表。在hashcode特别差的情况下,比...原创 2019-03-24 16:42:08 · 216 阅读 · 0 评论 -
搞懂 transient 关键字
什么是 transient?简单来说就是,被 transient 修饰的变量不能被序列化。具体来看下面的示例1importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.ObjectInputStream;importjava.io.ObjectOutputStream;impo...原创 2019-03-08 13:02:15 · 369 阅读 · 1 评论 -
Java序列化你应该知道的
什么是序列化我们的对象并不只是存在内存中,还需要传输网络,或者保存起来下次再加载出来用,所以需要Java序列化技术。Java序列化技术正是将对象转变成一串由二进制字节组成的数组,可以通过将二进制数据保存到磁盘或者传输网络,磁盘或者网络接收者可以在对象的属类的模板上来反序列化类的对象,达到对象持久化的目的。怎么序列化一个对象?要序列化一个对象,这个对象所在类就必须实现Java序列化的...原创 2019-03-08 12:56:06 · 127 阅读 · 0 评论 -
Java 泛型详解-最详细的
对java的泛型特性的了解仅限于表面的浅浅一层,直到在学习设计模式时发现有不了解的用法,才想起详细的记录一下。本文参考java 泛型详解、Java中的泛型方法、 java泛型详解概述泛型在java中有很重要的地位,在面向对象编程及各种设计模式中有非常广泛的应用。什么是泛型?为什么要使用泛型?泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参...原创 2019-03-15 20:31:25 · 399 阅读 · 0 评论 -
java基础思维导图,让java不再难懂
最近看了一些文章的思维导图,发现思维导图真是个强大的工具。了解了思维导图的作用之后,觉得把它运用到java上应该是个不错的想法,这样回顾知识点的时候一目了然,快速知道自己的短板。思维导图不仅仅只有简单明了这个好处,它还能加深人对主题的印象和理解,能达到快速阅读的好处,就好像一本书的目录大纲,当你阅读了导图之后再带有目的的去找资料往往能达到事半功倍的效果。就从java基础开始吧。花了3天的晚转载 2018-02-05 18:35:45 · 1049 阅读 · 4 评论 -
git的使用
本文导航◈ 设置用户信息07%◈ GIT 命令17%◈ 新建一个仓库17%◈ 查找一个仓库20%◈ 与远程仓库连接22%◈ 克隆一个仓库27%◈ 在仓库中列出分支32%◈ 创建新分支35%◈ 删除一个分支37%◈ 切换到另一个分支42%◈ 添加文件44%◈ 文件状态47%◈ 提交变更49%◈ 推送变更55%◈ 推送分支到仓库57%◈ 合并两个分支62%◈ 从远端服务器合并到本地服务器64%◈ 检查转载 2018-01-03 13:31:28 · 197 阅读 · 0 评论 -
Java基础 tomcat使用和配置
Web开发模型Web相关概念问题:什么是web?Web指的就是网页,我们所说的web指的是Internet主机上供外界访问的资源问题:web资源类型有那些?静态web资源:指web页面上供人们浏览的数据,它始终不变,如hmtl动态web资源:指web页面中内容是由程序产生的,供人们浏览,并且在不同的时间点,数据不一样,并且还可以实现人与人之间的交互.简单原创 2017-12-14 08:41:25 · 603 阅读 · 0 评论 -
Java基础 HTTP协议
HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HTTP-NG(Next Generation of HTTP)的建议已经提出。HTTP协议的主要特点可概括如下:1.支持客户/服务器模式。原创 2017-12-14 08:40:16 · 930 阅读 · 0 评论 -
Java基础 注解Annotation
注解Annotation注解介绍定义注解annotation是Java语言中用于描述类,成员变量,构造方法,成员方法,方法参数及包声明的特殊的修饰符.用于描述这些信息的元数据.例如@Override用于描述一个方法是在子类中重写的方法特点是JDK5.0之后引入的特性.注解是以”@注解名”在代码中存在的作用创建文档跟踪代码依赖性原创 2017-12-14 08:39:18 · 396 阅读 · 0 评论 -
Java基础 XML解析
XML基础Xml基本介绍问题:什么是xml,它的作用是什么?XML 指可扩展标记语言所谓的可扩展标记语言,简单说就是指xml文件中的标签可以任意定义。XML 被设计用来传输和存储数据。问题:xml它存储的是什么样数据?Xml中存储的是有关系的数据。Everyday ItalianGiada De Laure原创 2017-12-14 08:38:06 · 518 阅读 · 0 评论