Java基础
文章平均质量分 87
蹲街式等待
这个作者很懒,什么都没留下…
展开
-
Java 序列化反序列化框架比较
文章目录一、简介二、序列化框架三、序列化框架对比测试1、对象准备2、JDK方式3、FastJson方式4、Hessian方式5、Protostuff方式6、测试代码四、总结五、序列化应用场景六、注意事项一、简介序列化:将Java对象转化成字节数组。反序列化:将字节数组转化成Java对象。影响序列化选择有两个因素:序列化之后码流的大小,如果太大,那么将会影响网络传输的性能。序列化和反序列化过程的性能。二、序列化框架本文主要进行以下序列化框架的对比测试:JDKFas原创 2022-04-10 19:55:27 · 1784 阅读 · 0 评论 -
Java中 List、Set、Map遍历方式以及性能比较
目录一、简介二、遍历方式1、ArrayList遍历方式(1)for循环遍历(2)foreach循环遍历(3)Iterator迭代器遍历2、LinkedList遍历方式(1)for循环遍历(2)foreach循环遍历(3)Iterator迭代器遍历3、HashSet遍历方式(1)foreach循环遍历(2)Iterator迭代器遍历4、HashMap遍历方式(1)entrySet遍历(2)Iterator迭代器遍历5、LinkedHashMap遍历方式(1)entrySet遍历(2)Iterator迭代器遍历原创 2022-01-13 22:40:37 · 8022 阅读 · 0 评论 -
ArrayList和HashMap遍历比较
目录一、ArrayList遍历方式1、普通for循环遍历2、增强for循环遍历3、Iterator迭代器遍历4、三种方式比较二、Map遍历方式1、增强for循环 + keySet() 遍历2、增强for循环 + entrySet() 遍历3、Iterator + keySet() 遍历4、Itorator + entrySet() 遍历5、四种方式比较三、java开发手册(关于map的)一、ArrayList遍历方式1、普通for循环遍历for(int i=0; i<lists.size();原创 2021-12-06 23:29:48 · 644 阅读 · 0 评论 -
Java 中sleep()与wait()的区别
一、原理不同sleep()是Thread类的静态方法,是线程用来控制自身流程的,它会使此线程暂停执行指定的时间,而把执行机会让给其他的线程,等到计时时间到,此线程会自动苏醒。wait()是Object类的方法,用于线程间的通信,这个方法会使当前拥有该对象锁的进程等待,直到其他线程调用notify()方法才醒来,也可以指定时间自己醒来。二、锁的处理机制不同sleep()...原创 2020-05-06 17:02:37 · 361 阅读 · 1 评论 -
Windows查找JDK的路径
第一步:确定是否安装JDK在控制台输入:java -version输出结果:此时说明你电脑安装了JDK。第二步:查找路径然后在控制台输入:java -verbose输出结果:从最后的jre目录可以找到相应的jdk目录。如果第二步找不到对应的jdk目录,还有一种方式可以快速找到对应的jdk目录,那就是第一步中执行命令有结果输出,说明JDK路径已经添加到了系统环境变量中,我...原创 2020-03-12 14:51:13 · 18353 阅读 · 0 评论 -
MAC查找JDK的路径
在控制台中输入:/usr/libexec/java_home -V输出如下结果:Matching Java Virtual Machines (4): 1.8.0_121, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home 1.7.0_79, x86_64...原创 2020-03-03 10:08:11 · 783 阅读 · 0 评论 -
Java提高篇 —— Java三大特性之继承
一、前言 在《Think in java》中有这样一句话:复用代码是Java众多引人注目的功能之一。但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情。在这句话中最引人注目的是“复用代码”,尽可能的复用代码使我们程序员一直在追求的,现在我来介绍一种复用代码的方式,也是java三大特性之一——继承。 二、继承 ...原创 2018-08-14 09:57:40 · 7072 阅读 · 0 评论 -
Java提高篇 —— Java关键字之static的四种用法
一、前言 在java的关键字中,static和final是两个我们必须掌握的关键字。不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构。下面我们先来了解一下static关键字及其用法。 二、static关键字 1、修饰成员变量 在我们平时的使用当中,static最常用的功能就是修饰类的属性和方法,...原创 2018-08-10 18:04:47 · 7156 阅读 · 0 评论 -
Java提高篇 —— Java三大特性之多态
一、前言 面向对象编程有三大特性:封装、继承、多态。 封装:隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据。对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法。 继承:是为了重用父类代码。两个类若存在IS-A的关系就可以使用继承。,同时继承也为实现多态做了铺垫。那么什么是多态呢?多态的实现机制又是什...原创 2018-08-14 10:28:49 · 3915 阅读 · 0 评论 -
Java提高篇 —— 抽象类与接口
一、前言 接口和内部类为我们提供了一种将接口与实现分离的更加结构化的方法。 抽象类与接口是java语言中对抽象概念进行定义的两种机制,正是由于他们的存在才赋予java强大的面向对象的能力。他们两者之间对抽象概念的支持有很大的相似,甚至可以互换,但是也有区别。 二、抽象类 我们都知道在面向对象的领域一切都是对象,同时所有的对象都是通...原创 2018-08-14 14:30:13 · 3895 阅读 · 0 评论 -
Java提高篇 —— Java浅拷贝和深拷贝
一、前言 我们知道在Java中存在这个接口Cloneable,实现该接口的类都会具备被拷贝的能力,同时拷贝是在内存中进行,在性能方面比我们直接通过new生成对象来的快,特别是在大对象的生成上,使得性能的提升非常明显。然而我们知道拷贝分为深拷贝和浅拷贝之分,但是浅拷贝存在对象属性拷贝不彻底问题。下面我们就具体来看一下深浅拷贝问题。 二、定义 首先来看看浅拷贝和深...原创 2018-08-14 15:31:24 · 3847 阅读 · 0 评论 -
Java提高篇 —— Java内部类详解
一、简介 内部类是一个非常有用的特性但又比较难理解使用的特性。 内部类我们从外面看是非常容易理解的,无非就是在一个类的内部在定义一个类。public class OuterClass { private String name ; private int age; public String getName() { ...原创 2018-08-14 18:07:24 · 7717 阅读 · 0 评论 -
Java提高篇 —— Java关键字之final的几种用法
一、前言 在java的关键字中,static和final是两个我们必须掌握的关键字。不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构。下面我们来了解一下final关键字及其用法。 二、final关键字 在java中,final的含义在不同的场景下有细微的差别,但总体上来说,它指的是“这是不可变的”。...原创 2018-08-12 18:13:40 · 4036 阅读 · 0 评论 -
Java提高篇 —— String缓冲池
一、String缓冲池 首先我们要明确,String并不是基本数据类型,而是一个对象,并且是不可变的对象。查看源码就会发现String类为final型的(当然也不可被继承),而且通过查看JDK文档会发现几乎每一个修改String对象的操作,实际上都是创建了一个全新的String对象。 字符串为对象,那么在初始化之前,它的值为null,到这里就有必要提下””、n...原创 2018-08-15 18:48:16 · 5097 阅读 · 0 评论 -
HashMap实现原理及源码分析
目录一、什么是哈希表二、HashMap实现原理三、为何HashMap的数组长度一定是2的次幂?四、重写equals方法需同时重写hashCode方法五、总结一、什么是哈希表在讨论哈希表之前,我们先大概了解下其他数据结构在新增,查找等基础操作执行性能:数组: 采用一段连续的存储单元来存储数据。对于指定下标的查找,时间复杂度为O(1);通过给定值进行查找,需要遍历数组,逐一比对给定关键字和数...原创 2018-12-14 14:40:31 · 7390 阅读 · 0 评论 -
Java基础 —— JVM内存模型与垃圾回收
目录一、概述二、运行时数据区方法区运行时常量池堆栈本地方法栈程序计数器三、对象访问四、垃圾回收如何定义垃圾1、引用计数法2、可达性分析垃圾回收方法1、Mark-Sweep标记-清除算法2、Copying复制算法3、Mark-Compact标记-整理算法4、Generational Collection 分代收集垃圾收集器1、Serial收集器2、ParNew收集器3、Parallel Scaven...原创 2018-12-14 16:38:38 · 7311 阅读 · 0 评论 -
Java提高篇 ——Java注解
注解语法Java 注解用于为 Java 代码提供元数据。作为元数据,注解不直接影响你的代码执行,但也有一些类型的注解实际上可以用于这一目的。Java 注解是从 Java5 开始添加到 Java 的。因为平常开发少见,相信有不少的人员会认为注解的地位不高。其实同 classs 和 interface 一样,注解也属于一种类型。注解(Annotation) 相当于一种标记,在程序中加入注解就等于为...原创 2018-12-14 19:53:50 · 4039 阅读 · 0 评论 -
Java提高篇 —— Java三大特性之封装
一、封装 封装从字面上来理解就是包装的意思,专业点就是信息隐藏,是指利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外接口使之与外部发生联系。系统的其他对象只能通过包裹在数据外面的已经授权的操作来与这个封装的对象进行交流和交互。也就是说用户是无需知道对象内部的细节(当然...原创 2018-08-14 09:35:13 · 6997 阅读 · 0 评论 -
Java中String、StringBuffer、StringBuilder三者的区别
一、简介 String、StringBuffer、StringBuilder三个类之间的区别主要是在两个方面:运行速度和线程安全。二、区别1、运行速度,或者说是执行速度 在这方面运行速度快慢为:StringBuilder > StringBuffer > StringString String为字符串常量,是不可变的对象,因此在每次对 String 类型进...原创 2018-03-12 21:16:32 · 4664 阅读 · 0 评论 -
Java基础——Java异常处理机制
一、引言 try…catch…finally恐怕是大家再熟悉不过的语句了,而且感觉用起来也是很简单,逻辑上似乎也是很容易理解。不过,我亲自体验的“教训”告诉我,这个东西可不是想象中的那么简单、听话。不信?那你看看下面的代码,“猜猜”它执行后的结果会是什么?不要往后看答案、也不许执行代码看真正答案哦。如果你的答案是正确,那么这篇文章你就不用浪费时间看啦。public cl原创 2017-11-08 20:15:17 · 7338 阅读 · 1 评论 -
Java基础——类加载机制及原理
一、什么是类的加载? 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并且向Java程序员提供了访问方法区内的数据结构的接口。原创 2017-11-10 17:48:00 · 7863 阅读 · 0 评论 -
Java基础知识(一)
一、接口类描述了一个实体,包括实体的状态,也包括实体可能发出的动作。接口定义了一个实体可能发出的动作。但是只是定义了这些动作的原型,没有实现,也没有任何状态信息。所以接口有点象一个规范、一个协议,是一个抽象的概念;而类则是实现了这个协议,满足了这个规范的具体实体,是一个具体的概念。从程序角度,简单理解,接口就是函数声明,类就是函数实现。需要注意的是同一个声明可能有很多种原创 2017-10-25 15:53:33 · 7083 阅读 · 0 评论 -
finally语句与return语句的执行顺序
网上有很多人探讨Java中异常捕获机制try...catch...finally块中的finally语句是不是一定会被执行?很多人都说不是,当然他们的回答是正确的,经过我试验,至少有两种情况下finally语句是不会被执行的:try语句没有被执行到,如在try语句之前就返回了,这样finally语句就不会执行,这也说明了finally语句被执行的必要而非充分条件是:相应的try语句一定原创 2017-11-10 18:19:09 · 7576 阅读 · 2 评论 -
Java基础——volatile关键字解析
简介 volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关的,因此在讲述volatile关键之前,我们先来了解一下与内存模型相关的概念和知识,然后分析了volatile关键字的实现原理,最后给出了几个使用volatile关键字的场景。 以下是本文的目录大纲: 一、内存模型的相关概...原创 2017-11-17 16:10:10 · 7235 阅读 · 0 评论 -
Java基础——Java多线程中sleep()、wait()和notify()
一、sleep()sleep()方法源码: /** * Causes the currently executing thread to sleep (temporarily cease * execution) for the specified number of milliseconds, subject to * the precision and acc...原创 2017-11-02 16:28:56 · 7775 阅读 · 0 评论 -
Java基础——虚拟机结构
一、Java平台结构图二、JVM、JRE和JDK关系JVM:Java Virtual Machine(Java虚拟机),负责执行符合规范的Class文件JRE: Java Runtime Environment (java运行环境),包含JVM和类库JDK: Java Development Kit(java开发工具包),包含JRE和开发工具包,例如javac、javah三、JVM所处的位置 ...原创 2017-11-03 18:22:33 · 7254 阅读 · 0 评论 -
Java基础——synchronized
synchronized重要!重要!重要!重要的事情说三遍,一定要记下来哦。Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。 一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块...原创 2017-11-04 17:25:09 · 7043 阅读 · 0 评论 -
Java基础——Java NIO详解(一)
一、基本概念1、I/0简介 I/O即输入输出,是计算机与外界世界的一个借口。IO操作的实际主题是操作系统。在java编程中,一般使用流的方式来处理IO,所有的IO都被视作是单个字节的移动,通过stream对象一次移动一个字节。流IO负责把对象转换为字节,然后再转换为对象。2、什么是NIO NIO即New IO,这个库是在JDK1.4中才引原创 2017-11-21 18:30:05 · 7727 阅读 · 0 评论 -
Java基础——Java IO详解
一、概述1、Java IO Java IO即Java 输入输出系统。不管我们编写何种应用,都难免和各种输入输出相关的媒介打交道,其实和媒介进行IO的过程是十分复杂的,这要考虑的因素特别多,比如我们要考虑和哪种媒介进行IO(文件、控制台、网络),我们还要考虑具体和它们的通信方式(顺序、随机、二进制、按字符、按字、按行等等)。Java类库的设计者通过设计大量的类来攻克这些难原创 2017-11-21 18:29:00 · 9165 阅读 · 0 评论 -
Java基础——Java NIO详解(二)
一、简介 在我的上一篇文章JavaNIO详解(一)中介绍了关于标准输入输出NIO相关知识, 本篇将重点介绍基于网络编程NIO(异步IO)。二、异步IO 异步 I/O 是一种没有阻塞地读写数据的方法。通常,在代码进行 read() 调用时,代码会阻塞直至有可供读取的数据。同样, write()调用将会阻塞直至数据能够写入,关于同步的IO原创 2017-11-21 18:29:38 · 7465 阅读 · 0 评论 -
Java基础——深入理解Java线程池
简介 我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。 那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务? 在原创 2017-11-22 14:47:36 · 7468 阅读 · 0 评论 -
Java基础——线程及并发机制
前言 在Java中,线程是一个很关键的名词,也是很高频使用的一种资源。那么它的概念是什么呢,是如何定义的,用法又有哪些呢?为何说Android里只有一个主线程呢,什么是工作线程呢。线程又存在并发,并发机制的原理是什么。这些内容有些了解,有些又不是很清楚,所以有必要通过一篇文章的梳理,弄清其中的来龙去脉,为了之后的开发过程中提供更好的支持。目录一、线程定义原创 2017-12-05 10:37:32 · 7253 阅读 · 0 评论 -
Java基础——深入理解ReentrantLock
一、简介 在Java中通常实现锁有两种方式,一种是synchronized关键字,另一种是Lock。二者其实并没有什么必然联系,但是各有各的特点,在使用中可以进行取舍的使用。二、ReentrantLock与synchronized的比较相同点:(1)ReentrantLock提供了synchronized类似的功能和内存语义。不同原创 2017-12-07 11:43:30 · 4195 阅读 · 0 评论 -
Java基础——Java反射机制及IoC原理
一、概念 主要是指程序可以访问,检测和修改它本身状态或行为的一种能力,并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义。在java中,只要给定类的名字, 那么就可以通过反射机制来获得类的所有信息。 反射是Java中一种强大的工具,能够使我们很方便的创建灵活的代码,这些代码可以再运行时装配,无需在组件之间进行源代码链接。但是反射使用原创 2017-11-08 21:15:57 · 7687 阅读 · 0 评论