
java
文章平均质量分 70
Yanliang_
The man who has made up his mind to win will never say "impossible ".
展开
-
Java volatile关键字解惑
volatile特性内存可见性:通俗来说就是,线程A对一个volatile变量的修改,对于其它线程来说是可见的,即线程每次获取volatile变量的值都是最新的。volatile的使用场景通过关键字sychronize可以防止多个线程进入同一段代码,在某些特定场景中,volatile相当于一个轻量级的sychronize, 因为不会引起线程的上下文切换,但是使用volatile必须满足两个条件:原创 2017-11-30 22:31:31 · 223 阅读 · 0 评论 -
ArrayList动态扩容机制--源码解析
阅读原文ArrayList动态扩容机制–源码解析/** * Default initial capacity. * 默认容量大小 */private static final int DEFAULT_CAPACITY = 10;/** * Shared empty array instance used for empty instances. * 空对象数...原创 2018-01-07 20:27:06 · 452 阅读 · 0 评论 -
简易租车系统
本系统用java语言所写,不涉及任何框架。纯JavaSE基础,本人练习所写。需求设计一个简易的租车系统,要求实现租车,并统计车型、载客数、载人数、租赁总价钱。 题目来自: imooc的《Java入门第二季》 思路设计一个Car类,作为各个汽车类的父类,然后设计几种汽车类型继承该父类。汽车出租类。完成租赁任务Car类/** * Project:原创 2018-01-09 11:50:12 · 2084 阅读 · 0 评论 -
JavaIO -- File类
File类文件和目录路径名的抽象表示。 File不能访问文件内容本身。如果需要访问文件内容本身,则需要使用输入/输出流。(以下样例代码 默认在e:\JavaIO文件夹下操作)构造方法File(File parent, String child) 从父抽象路径名和子路径名字符串创建新的 File实例。 File(String pathname) 通过将给定的路径名字符串转换为抽...原创 2018-03-15 17:47:37 · 209 阅读 · 0 评论 -
Java反射机制及API使用
原文地址反射简单来说,就是动态加载对象,并对对象进行剖析。在Java中的反射机制是指在运行状态中,对于任意一个类,都能够知道并获取这个类的所有属性和方法。Java反射机制的作用:在运行时判断任意一个对象所属的类。在运行时判断任意一个类所具有的成员变量和方法。在运行时任意调用一个对象的方法在运行时构造任意一个类的对象反射机制的优缺点是什么?反射机制的优点就是可以...原创 2018-05-17 18:07:03 · 371 阅读 · 0 评论 -
Java 虚拟机类加载机制
原文地址 虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验,转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,This is the class loading mechanism of the virtual machine本文基于HotSpot虚拟机类加载类从被加载到虚拟机内存开始,到卸载出内存为止,整个过程包括加载(Loading)、验...原创 2018-05-06 16:17:57 · 146 阅读 · 0 评论 -
Java集合之LinkedList源码解析
原文地址LinkedList在Java.util包下继承自AbstractSequentialList实现 List 接口,能对它进行队列操作。实现 Deque 接口,即能将LinkedList当作双端队列使用。实现了Cloneable接口,即覆盖了函数clone(),能克隆。实现java.io.Serializable接口,这意味着LinkedList支持序列化,能通过序列化...原创 2018-05-29 17:11:10 · 228 阅读 · 0 评论 -
Java集合之ArrayList源码解析
原文地址ArrayListArrayList是List接口的 可变数组的实现。实现了所有可选列表操作,并允许包括 null 在内的所有元素。除了实现 List接口外,此类还提供一些方法来操作内部用来存储列表的数组的大小。ArrayList继承自 AbstractList<E>,这是一个抽象类对一些基础的list操作做了一些封装.实现了RandomAccess 标记接口,表明...原创 2018-05-30 17:29:32 · 182 阅读 · 0 评论 -
Java集合之HashMap源码解析
原文地址HashMapHashMap 是 Map 的一个实现类,它代表的是一种键值对的数据存储形式。大多数情况下可以直接定位到它的值,因而具有很快的访问速度,但遍历顺序却是不确定的。HashMap最多只允许一条记录的键为null,允许多条记录的值为null。不保证有序(比如插入的顺序)、也不保证序不随时间变化。jdk 8 之前,其内部是由数组+链表来实现的,而 jdk 8 ...原创 2018-06-07 14:10:53 · 271 阅读 · 0 评论 -
Java集合之LinkedHashMap源码解析
原文地址LinkedHashMapLinkedHashMap继承自HashMap实现了Map接口。基本实现同HashMap一样,不同之处在于LinkedHashMap保证了迭代的有序性。其内部维护了一个双向链表,解决了 HashMap不能随时保持遍历顺序和插入顺序一致的问题。 除此之外,LinkedHashMap对访问顺序也提供了相关支持。在一些场景下,该特性很有用,比如缓存。在实现...原创 2018-06-24 11:50:33 · 303 阅读 · 0 评论 -
撸一个JSON解析器
原文地址JSONJSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。JSON与...原创 2018-06-29 17:08:46 · 2019 阅读 · 6 评论 -
利用maven创建Java项目
原文地址之前写项目的时候,一直利用的start.spring.io这个网站,直接初始化的项目文件。一直没有自己创建过maven项目。最近再写JSON解析器的时候,由于不需要使用框架,就想着自己利用maven搭建一个Java项目。MavenMaven是一个项目管理工具。主要用于jar包管理,工程打包、编译、部署之类的事情Maven也可以来做。使用Maven构建一个项目之后,在项目目录...原创 2018-06-29 17:10:11 · 656 阅读 · 0 评论 -
Java中日期和时间的应用
原文地址今天在写项目时用到了Java中关于时间和日期方面的东西,就顺便记录下这方面的几种用法。如何取得年月日、小时分钟秒?import java.time.LocalDateTime;import java.util.Calendar;public class Test04 { public static void main(String[] args) { ...原创 2018-06-19 20:45:05 · 984 阅读 · 0 评论 -
Java集合问题大汇总
原文地址Java集合Java集合框架:是一种工具类,就像是一个容器可以存储任意数量的具有共同属性的对象。Java集合中成员很丰富,常用的集合有ArrayList,HashMap,HashSet等。线程安全的有Vector,HashTable。线程不安全的有LinkedList,TreeMap,ArrayList,HashMap等等。集合中用到的数据结构有以下几种:数组:最常...原创 2018-07-06 18:28:56 · 1205 阅读 · 0 评论 -
接口和抽象类的区别
这是一个非常经典的Java基础题,再次整理出来,除了巩固之用外也是对一些新特性的总结(随着Java的不断发展,Jdk8 Jdk9的发布,接口和抽象类也发生了一些改变)。根据“国际上”的标准回答(就业季看过面经的应该有过了解)接口和抽象类是Java的两个基础机制。接口是对行为的抽象,他是抽象方法的集合。接口不用被实例化,不能包含非常量成员。所有成员默认被public stat...原创 2018-08-24 13:51:44 · 20265 阅读 · 2 评论 -
阻塞队列 BlockingQueue
BlockingQueues在java.util.concurrent包下,提供了线程安全的队列访问方式,当阻塞队列插入数据时,如果队列已经满了,线程则会阻塞,等待队列中元素被取出后再插入,当从阻塞队列中取数据时,如果队列是空的,则线程会阻塞,等待队列中有新元素。BlockingQueue的核心方法package java.util.concurrent;import java....原创 2019-02-13 11:32:14 · 298 阅读 · 0 评论 -
ArrayList集合的应用
JAVA集合对象数组集合类之ArrayList学生管理系统斗地主案例对象数组1.1 对象数组描述A:基本类型的数组:存储的元素为基本类型 int[] arr={1,2,3,4}B:对象数组:存储的元素为引用类型 Student[] stus=new Student[3]; Student代表一个自定义类 Stus数组中stus[0],s原创 2017-11-26 18:11:48 · 2575 阅读 · 0 评论 -
用Java开发贪吃蛇游戏
github地址贪吃蛇游戏的设计步骤:Part 1: 设计游戏图纸 画出900*700的白色窗口 在窗口上添加画布 在画布上添加标题 在画布上添加黑色游戏区 Part 2: 放置静态的蛇:一个头、两个身体 加上开始提示:按空格键开始游戏 让蛇动起来:监听Timer事件,平移数据 实现游戏暂停 实现转向功能 Pa...原创 2017-11-26 18:11:24 · 1397 阅读 · 1 评论 -
System.arraycopy()实现数组之间的复制
System提供了一个静态方法arraycopy(),用来实现数组之间的复制。其函数原型是: public static void arraycopy (Object src, int srcPos, Object dest, int destPos, int length)src:源数组; srcPos:源数组要复制的起始位置; dest:目的数组; destPos:目的数组原创 2018-01-06 16:38:20 · 526 阅读 · 0 评论 -
java设计模式 -- 单例模式
阅读原文在介绍单例模式之前,我们先了解一下,什么是设计模式? 设计模式(Design Pattern):是一套被反复使用,多数人知晓的,经过分类编目的,代码设计经验的总结。 目的:使用设计模式是为了可重用性代码,让代码更容易被他人理解,保证代码可靠性。本文将会用到的关键词:单例:Singleton实例:instance同步:synchronized类装载器:Clas...原创 2017-12-01 20:59:30 · 314 阅读 · 0 评论 -
Java集合 HashSet 和 HashMap
HashSet 集合HashMap 集合HashSet集合Set 接口的特点Set体系的集合:存入集合的顺序和取出集合的顺序不一致没有索引存入集合的元素没有重复HashSet 使用&唯一性原理案例代码一:public class HashSetDemo2 { public static void main(String[] args) { //创建集合对象原创 2017-12-05 11:46:12 · 934 阅读 · 0 评论 -
Java两种处理异常方法的区别
在介绍异常处理之前我们先了解一下异常 我的博客什么是异常简单来说,java程序在运行期间发生的问题就是异常。在Java中,把异常信息封装成了一个类,当出现了问题时,就会创建异常类对象并抛出异常相关信息(如异常出现的位置、原因等等)。在Java中使用Exception类来描述异常。字面翻译就是“意外、例外”的意思,也就是非正常情况。事实上,异常本质上是程序上的错误,包括程序逻辑错误和系统错误。比如使原创 2017-11-26 18:02:32 · 18152 阅读 · 4 评论 -
JAVA开发环境配置
一、安装JDK1、 JVM(Java Virtual Machine—Java虚拟机)JRE(Java Runtime Environment—Java运行时环境)JDK(Java Development kit—Java开发工具包)2、JDK包含了JRE和JVM,所以安装了JDK就安装了JRE和JVM,JDK的安装包可以到Oracle官网上下载或者第三方网站下载,以下提供官方下载原创 2017-11-26 18:12:15 · 222 阅读 · 0 评论 -
怎么配置eclipse的联想功能
第一步:打开Eclipse,windows下,打开“window”→“Preferences” ;mac下,打开“偏好设置”。第二步:选择“Java”,展开,“Editor”,选择“Content Assist”。 第三步:选择“Content Assist”,在右边的“Auto-Activation”下面的“Auto Activation triggers for java”这个原创 2017-11-26 18:12:18 · 2486 阅读 · 0 评论 -
Java实验案例(接口)
实验任务任务一:设计实现发声接口任务二:动物乐园实验内容任务一:设计实现发声接口任务目的:理解并掌握如何定义接口掌握接口的实现方式任务描述: 设计和实现一个Soundable接口,该接口具有发声功能,同时还能调节声音大小Soundable接口的这些功能将由有3种声音设备来实现他们分别是Radio、Walkman、Mobilephone。原创 2017-11-26 18:12:09 · 5277 阅读 · 0 评论 -
Java 实验案例(多态)
实验任务任务一:图形面积周长计算小程序任务二:饲养员喂养动物程序实验内容:任务一: 图形面积周长计算任务目的:掌握多态的含义及应用场合掌握上转型对象和多态的实现掌握abstract关键字的使用任务描述: 设计一个小程序,可以计算圆形和长方形的面积及周长,其中定义抽象类 图形类为圆形和长方形的父类,在图形类中定义抽象方法获取面积方法和原创 2017-11-26 18:12:06 · 7587 阅读 · 1 评论 -
Eclipse 快捷键大全
Eclipse快捷键大全Ctrl+1 快速修复(最经典的快捷键,就不用多说了)Ctrl+D: 删除当前行 Ctrl+Alt+↓ 复制当前行到下一行(复制增加)Ctrl+Alt+↑ 复制当前行到上一行(复制增加)Alt+↓ 当前行和下面一行交互位置(特别实用,可以省去先剪切,再粘贴了)Alt+↑ 当前行和上面一行交互位置(同上)Alt+← 前一个编辑的页面Alt+→ 下一个编辑的页面(当然是针对上面原创 2017-11-26 18:12:03 · 225 阅读 · 0 评论 -
Java 实验案例(类和对象篇)
实验任务任务一:手机类的封装任务二:基于控制台的购书系统任务三:简单的投票程序实验内容任务一:手机类的封装任务目的 理解和掌握面向对象的设计过程 掌握类的结构和定义过程 掌握构造方法及其重载 掌握对象的创建和使用任务描述 参考程序结果图,使用面向对象的思想模拟手机类,编写测试类,使用手机类创建对象,测试手机的各个原创 2017-11-26 18:12:00 · 5025 阅读 · 1 评论 -
Java集合 -- HashSet 和 HashMap
HashSet 集合HashMap 集合HashSet集合1.1 Set 接口的特点Set体系的集合: A:存入集合的顺序和取出集合的顺序不一致 B:没有索引 C:存入集合的元素没有重复1.2 HashSet 使用&唯一性原理1.2.1 HashSet的使用1.2.1.1 案例代码一:public class HashSetDe原创 2017-11-26 18:11:54 · 305 阅读 · 0 评论 -
Java 简化版学生管理系统(IO版)
Student management system 学生管理系统IO版详细知识点可参考一下几篇文章常用APIJava 之ArrayList集合及应用Java 之IO流及应用Comprehensive exercises1.1 要求A:键盘录入3个学生信息(学号,姓名,年龄,居住地)存入集合,要求学生信息的学号不能重复B:遍历集合把每一个学生原创 2017-11-26 18:11:50 · 2199 阅读 · 1 评论 -
Java中List判断为空的方法
我的博客List是我们经常用到的工具,List的判空条件也是非常重要的知识点。假设现有一List对象lists假设现有一List对象listsList的判空条件由两部分组成,例如:if(lists!=null && !lists.isEmpty()){ ...}else{ // List对象为空的异常处理}lists.isEmpty()和lists.size()==0 这两个方法原创 2017-11-26 19:41:29 · 5196 阅读 · 0 评论 -
Java 面试题 整理
1、面向对象的特征有哪些方面?面向对象的特征主要有以下几个方面: 抽象:抽象是将一类对象的共同特征总结出来构造类的过程, 包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。继承:继承是从已有类得到继承信息创建新类的过程。 提供继承信息的类被称为父类(超类、基类);得到继承信息的类被称为子类(派生类)。继承让变化中的软件系统有了一定的延续原创 2017-12-15 15:53:50 · 312 阅读 · 0 评论 -
Java中modCount的作用?
What’s the use of modCount?在ArrayList,LinkedList,HashMap等等的内部实现增,删,改中我们总能看到modCount的身影,modCount字面意思就是修改次数,但为什么要记录modCount的修改次数呢?大家有没有发现一个公共特点,所有使用modCount属性的全是线程不安全的,这是为什么呢?说明这个玩意肯定和线程安全有关系喽,那有什么关转载 2018-01-06 16:18:54 · 1687 阅读 · 1 评论 -
一篇关于CountDownLatch的好文章
CountDownLatch简介CountDownLatch是一种java.util.concurrent包下一个同步工具类,它允许一个或多个线程等待直到在其他线程操作执行完成。使用场景:在开发过程中,经常会遇到需要在主线程中开启多条线程去并行执行任务,并且主线程需要等待所有子线程执行完毕后再进行汇总的场景,CountDownLatch的内部提供了一个计数器,在构造闭锁时必须指...转载 2019-02-13 11:33:39 · 566 阅读 · 0 评论