Java SE
文章平均质量分 74
程序员学习圈
值得去的地方,没有捷径;难走的路,才更值得开始!
展开
-
JavaSE-FAQ
1.写一个单子设计模//饿汉式class Singleton1{ //2. 类的内部创建对象 private static Singleton1 instance = new Singleton1(); //1. 私有化构造器 private Singleton1(){} public static Singleton1 getIns...原创 2018-05-05 14:07:13 · 188 阅读 · 0 评论 -
Java 之JDK主要的包介绍
1.JDK主要的包介绍java.lang----包含一些Java语言的核心类,如String、Math、Integer,System和Thread,提供常用功能。java.net----包含执行与网络相关的操作的类和接口。java.io ----包含能提供多种输入/输出功能的类。java.util----包含一些实用工具类,如定义系统特性、接口的集合框架类、 使用与日期日历相关的函数。...原创 2018-04-17 10:30:20 · 1132 阅读 · 0 评论 -
Java 反射详解
1.为什么使用反射? 我们都知道类用于描述现实生活中的一类事物,若需要描述某一个事物,通过 new 关键字, 创建其对象操作其属性,调用其方法。但在某种情况下,我们需要得知并使用一个在编译时完全未知的类,创建其对象,调用其属性和方法,这个时候就需要反射。 反射机制(Reflection):反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够...原创 2018-04-16 18:22:31 · 258 阅读 · 0 评论 -
Java 多线程练习
1.线程的同步和通信 虚假唤醒:在increment和decrement里面需要用while 而不能用if,记住:在多线程中永远用while而不用if,因为if判断有可能这次通过,但是还有可能方法体内wait等待,所以必须用while。class ShareData{ private int number = 0; public synchronized void...原创 2018-04-16 17:52:34 · 947 阅读 · 0 评论 -
Java 线程池详解
合理利用线程池能够带来三个好处。第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二:提高响应速度。当任务到达时,任务可以不需要的等到线程创建就能立即执行。第三:提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。但是要做到合理的利用线程池,必须对其原理了如指掌。1.多线程操作的...原创 2018-04-16 17:06:21 · 315 阅读 · 0 评论 -
Java 线程通信
1.线程通信 线程通信(线程交互):当多个线程在完成某些任务时,多个线程之间需要一定的通信,即线程通信。 在Object类中有两个方法:wait() : 使当前同步监视器上的线程进入等待状态,同时释放锁notify() / notifyAll() : 唤醒当前同步监视器上等待状态的一个(所有)线程。 说明:以上方法只有在synchronized方法或synchronized代...原创 2018-04-16 15:52:35 · 232 阅读 · 0 评论 -
Java 线程同步与死锁
模拟售票程序,实现三个窗口同时售票100第四节 问题: 当多个线程同时访问共享数据时,产生了 无序、重复、超额售票等多线程安全问题 解决: 将多个线程需要访问的共享数据包装起来,视为一个整体,确保一次只能有一个线程执行流访问该共享数据Java为上述问题提供了相应的解决办法1.线程同步的几种方法:(1) 同步代码块 synchronized(同步监视器){ //...原创 2018-04-16 13:00:34 · 280 阅读 · 0 评论 -
Java 多线程常用操作方法
1.多线程常用方法: currentThread() : 获取当前执行的线程 getName() : 获取线程名称 setName() : 设置线程名称 sleep(long millis) : 是一个静态方法,使当前执行线程进入睡眠状态 join() /join(long millis) : 是一个实例方法,使当前执行线程进入阻塞状态 interrupt(...原创 2018-04-16 12:10:42 · 198 阅读 · 0 评论 -
Java 多线程实现
1.线程的概念: 什么是程序(program ):为了完成某项特定的任务,使用某种语言,编写一组指令的集合。即指一段静态的代码,静态对象。 什么是进程(process ): 程序的一次执行过程,或是正在运行的一个程序。动态过程:有它自身的产生、存在和消亡的过程。 什么是线程(thread ):在一个进程中,执行的一套功能流程,称为线程。 ...原创 2018-04-16 11:01:25 · 205 阅读 · 0 评论 -
Java IO流详解
1.Java IO原理 IO流简单来说就是Input和Output流,IO流主要是用来处理设备之间的数据传输,Java对于数据的操作都是通过流实现,而java用于操作流的对象都在IO包中。 流(Stream)是指从源节点到目标节点的数据流动。 源节点和目标节点可以是文件、网络、内存、键盘、显示器等等。 ① 源节点的数据流称为输入流(用来读取数据)。 ...原创 2018-04-13 21:50:55 · 356 阅读 · 0 评论 -
Java 集合之面试必问
1.Map集合中HashMap,Hashtable,LinkHashMap,TreeMap的区别? HashMap是Java编程中最常用的数据结构之一,本文基于JDK1.8从源码角度来分析HashMap的存储结构和常用操作。HashMap实现了Map接口,Map接口的实现类还有Hashtable、LinkedListHashMap和TreeMap。具体的继承结构请参考JDK Do...原创 2018-04-13 17:27:08 · 314 阅读 · 0 评论 -
Java 集合之 HashMap 详解与源码分析
1.HashMap概述 HashMap基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了不同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 值得注意的是HashMap不是线程安全的,如果想要线程安全的HashMap,可以通过Collec...原创 2018-04-13 14:58:58 · 200 阅读 · 0 评论 -
Java 集合之 Set 详解与源码分析
Set集合与List一样,都是继承自Collection接口,常用的实现类有HashSet和TreeSet。值得注意的是,HashSet是通过HashMap来实现的而TreeSet是通过TreeMap来实现的,所以HashSet和TreeSet都没有自己的数据结构,具体可以归纳如下: Set集合中的元素不能重复,即元素唯一 HashSet按元素的哈希值存储,所以是无序的,并且最...原创 2018-04-13 10:12:07 · 2259 阅读 · 0 评论 -
Java 集合之 List 详解与源码分析
1.ArrayList、LinkedList、Vector的异同与使用场景 一般来说,ArrayList与Vector都是使用数组来存储,LinkedList是使用双向链表进行存储,所以,ArrayList和Vector查找元素比较快,因为数组可以直接根据位置进行定位,而双向链表还需要根据链表头或者链表尾进行遍历查询。而在插入元素时,一般来说LinkedList比较快,因为双向链表只需要找到插入...原创 2018-04-12 21:02:23 · 1371 阅读 · 0 评论 -
Java 泛型
泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。 泛型的本质是为了参数化类型(在不创建新的类型的情况下,通过泛型指定的不同类型来控制形参具体限制的类型)...原创 2018-04-12 14:31:04 · 145 阅读 · 0 评论 -
Java 集合框架综述
1.集合的由来 Java是面向对象编程语言,经常操作很多对象,必要时需存储对象(达到复用或管理等目的),常见容器如数组和StringBuffer(或StringBuilder,前者线程安全,效率较低,为了提高效率而引进)。 通常数组的长度固定,所以不适合做变化的需求(可以手动去重新分配调整,较麻烦),而StringBuffer(或StringBuilder)存储元素为字符串,皆...原创 2018-04-11 14:50:08 · 313 阅读 · 0 评论 -
Java 异常处理
1.异常 不可预知的非正常情况,在Java语言中,将程序执行中发生的不正常情况称为“异常”,异常是一种对程序运行过程中发生错误时进行通知的机制。如上:java.lang.Throwable : 所有错误的异常的父类(1) java.lang.Error : 错误,一些严重的错误。 如:内存溢出,系统错误等,我们在代码中不对其进行处理。(2) java.lang.Exception : 异常:...原创 2018-04-11 10:13:08 · 353 阅读 · 0 评论 -
Java Scanner 类
java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入。 下面是创建 Scanner 对象的基本语法:Scanner s = new Scanner(System.in); 接下来我们演示一个最简单的数据输入,并通过 Scanner 类的 next() 与 nextLine() 方法获取输入的字符串,在读取前我们一般需要 使用 h...原创 2018-04-10 17:46:49 · 283 阅读 · 0 评论 -
Java 日期时间
1.Java.util.Date Date对象创建以后,可以调用下面的方法。序号方法和描述1boolean after(Date date)若当调用此方法的Date对象在指定日期之后返回true,否则返回false。2boolean before(Date date)若当调用此方法的Date对象在指定日期之前返回true,否则返回false。3Object clone( )返回此对象的副本。...原创 2018-04-10 17:16:32 · 279 阅读 · 0 评论 -
Java StringBuffer 和 StringBuilder 类
当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安...原创 2018-04-10 15:00:03 · 204 阅读 · 0 评论 -
Java String 类
字符串广泛应用 在Java 编程中,在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作字符串。1.String类常用方法:(1) 获取字符串信息:public static void main(String[] args) { String str = " I Love you"; int size=str.length(); System...原创 2018-04-10 11:42:44 · 180 阅读 · 0 评论 -
Java Number & Math 类
Number 类 一般地,当需要使用数字的时候,我们通常使用内置数据类型,如:byte、int、long、double 等。然而,在实际开发过程中,我们经常会遇到需要使用对象,而不是内置数据类型的情形。为了解决这个问题,Java 语言为每一个内置数据类型提供了对应的包装类。所有的包装类(Integer、Long、Byte、Double、Float、Short)都是抽象类Number 的子类。...原创 2018-04-09 19:10:52 · 144 阅读 · 0 评论 -
Java 注解
1.注解 jdk1.5后出的新特性,是一种代码级别的说明。是一种元数据, 注解在Java中以 "@注解名" 的方式呈现。2.JDK内置的常用注解: @Override 表示覆盖或重写父类的方法; @Deprecated 表示该方法已经过时了。(当方法或是类上面有@Deprecated注解时,说明该方法或是类都已经过期不能再用,但不影响以前项目使用,提醒你新替代待的方法或是类。如果...原创 2018-04-09 11:14:21 · 148 阅读 · 0 评论 -
Java 枚举
1.枚举 jdk1.5后出的新特性,可以定义有限数量的可穷举数据集,简而言之,当确定一个类有几个对象时,使用枚举。2.自定义枚举类 ① 私有化构造器 ② 类的内部创建对象3.实例:(1) Season.Java/** 自定义枚举类*/public enum Season{ SPRING{ public void show(){ ...原创 2018-04-08 18:30:00 · 133 阅读 · 0 评论 -
Java 内部类
1.为何使用内部类 内部类提供了更好的封装,只有外部类能访问内部类 内部类可以独立继承一个接口,不受外部类是否继承接口影响 内部类中的属性和方法即使是外部类也不能直接访问,相反内部类可以直接访问外部类的属性和方法,即使private 利于回调函数的编写一个内部类的例子:public class OuterClass { private String outerName...原创 2018-04-08 18:03:33 · 132 阅读 · 0 评论 -
Java 接口
1.概念 接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。 接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。 除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。 接口无法被实...原创 2018-04-08 17:06:33 · 250 阅读 · 0 评论 -
Java 抽象类详解_abstract
1.为什么使用抽象?(1) 类用于描述现实生活中一类事物,类中有属性有方法,并且方法都有方法体。 某种情况下,父类只知道子类应该具备一个怎样的方法,但是不能明确知道子类如何实现该方法。 例如:几何图形(多态练习),所有的几何图形都应该具备一个计算面积的方法,但是不同几何图形,计算面积的方式不同。(2) Java为上述问题提供了相应的解决办法 Java允许父类中只是提供一个方法的...原创 2018-04-08 11:02:45 · 317 阅读 · 0 评论 -
Java 面向对象-多态
1.多态 多态是同一个行为具有多个不同表现形式或形态的能力。2.多态的优点 (1) 消除类型之间的耦合关系 (2) 可替换性 (3) 可扩充性 (4) 接口性 (5) 灵活性 (6) 简化性3.多态存在的三个必要条件(1) 继承(2) 重写(3) 父类引用指向子类对象。 Person p = new Man(); //多态 - 向上转型p.eat();p....原创 2018-04-08 10:26:11 · 205 阅读 · 0 评论 -
Java 重写(Override)与重载(Overload)
1.方法的重写(Override) 当父类中方法对于子类来说不适用的情况下,子类可以对父类中方法进行重写。(1) 方法的重写规则 前提: 使用在子类中 ① 参数列表必须完全与被重写方法的相同; ② 返回类型必须完全与被重写方法的返回类型相同; ③ 访问权限不能比父类中被重写的方法的访问权限更低。例如:如果父类的一个方法被声明为public,那么在子类中重写该方法就不能...原创 2018-04-08 09:52:51 · 158 阅读 · 0 评论 -
Java 面向对象-继承
1.概念 继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。2.生活中的继承 食草动物和食肉动物又是属于动物类。 兔子和羊属于食草动物类,狮子和豹属于食肉动物类。 所以继承需要符合的关系是:is-a,父类更通用,子类更具体。 ...原创 2018-04-03 22:12:10 · 253 阅读 · 1 评论 -
Java 面向对象-封装
1.概念 封装是把过程和数据包围起来,对数据的访问只能通过已定义的接口。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。封装是一种信息隐藏技术,在java中通过关键字private,protected和public实现封装。什么是封装?封装把对象的所有组成部分组合在一起,封装定义程序如何引用对象的数据,封装实际上使用方...原创 2018-04-02 22:10:38 · 176 阅读 · 0 评论 -
构造器的声明和使用
1.构造器 也叫构造方法,是类的成员之一2.构造器的格式访问控制修饰符 类名(参数列表){ //执行语句}3.构造器的特征 (1) 它具有与类相同的名称 (2) 它不声明返回值类型。(与声明为void不同) (3) 不能被static、final、synchronized、abstract、native修饰,不能有return语句返回值4.构造器的作用 (1...原创 2018-04-02 09:28:03 · 905 阅读 · 0 评论 -
Java 数组
1.数组 用于批量保存一类数据,是引用数据类型之一。2.数组的默认值(1) 基本数据类型: byte short int ----> 0 long ----> 0L float ----> 0.0F double ----> 0.0D char ----> '\u0000' boolean ----> false...原创 2018-03-30 22:05:05 · 208 阅读 · 0 评论 -
Java 可变参数传递
1.JDK 1.5 开始,Java支持传递同类型的可变参数给一个方法。 方法的可变参数的声明如下所示:typeName... parameterName 在方法声明中,在指定参数类型后加一个省略号(...) 。 一个方法中只能指定一个可变参数,它必须是方法的最后一个参数。任何普通的参数必须在它之前声明。 2.示例:public void show(int... a) {}; ...原创 2018-03-30 20:26:14 · 6856 阅读 · 0 评论 -
Java 参数传递机制
Java方法参数传递机制 值传递:值传递意味着当将一个参数传递给一个函数时,函数接收的是原始值的一个副本。因此,如果函数修改了该参数,仅改变副本,而原始值保持不变。 引用传递:引用传递意味着当将一个参数传递给一个函数时,函数接收的是原始值的内存地址,而不是值的副本。因此,如果函数修改了该参数,调用代码中的原始值也随之改变。1.参数的值传递:public static void cha...原创 2018-03-29 17:55:56 · 257 阅读 · 0 评论 -
Java 分支结构 - if...else/switch
顺序结构只能顺序执行,不能进行判断和选择,因此需要分支结构。Java 有两种分支结构: if 语句 switch 语句1.if 语句:if(条件表达式){ //若条件表达式结果为 true 时,需要执行的语句}if(条件表达式){ //若条件表达式结果为 true 时,需要执行的语句}else{ //若条件表达式结果为 false 时,需要执行的语句}...原创 2018-03-29 15:31:48 · 195 阅读 · 0 评论 -
Java 循环结构 - for, while 及 do...while
顺序结构的程序语句只能被执行一次。如果您想要同样的操作执行多次,,就需要使用循环结构。Java中有三种主要的循环结构: while 循环 do…while 循环 for 循环在Java5中引入了一种主要用于数组的增强型for循环。1.while 循环 while是最基本的循环,它的结构为:while( 布尔表达式 ) { //循环内容}只要布尔表达式为 true,循环体会...原创 2018-03-29 11:11:08 · 210 阅读 · 0 评论 -
Java 运算符
计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量。我们可以把运算符分成以下几组: 算术运算符 关系运算符 位运算符 逻辑运算符 赋值运算符 其他运算符1.算术运算符 算术运算符用在数学表达式中,它们的作用和在数学中的作用一样。下表列出了所有的算术运算符。 表格中的实例假设整数变量A的值为10,变量...原创 2018-03-28 23:50:06 · 170 阅读 · 0 评论 -
Java 修饰符(访问修饰符 非访问修饰符)详解
1.Java语言提供了很多修饰符,主要分为以下两类: 访问修饰符 非访问修饰符 修饰符用来定义类、方法或者变量,通常放在语句的最前端。我们通过下面的例子来说明:public class className { // ...}private boolean myFlag;static final double weeks = 9.5;protecte...原创 2018-03-28 17:52:26 · 507 阅读 · 0 评论 -
Java 变量类型
1.Java语言支持的变量类型有:类变量(静态变量):独立于方法之外的变量,用 static 修饰。实例变量(对象变量):独立于方法之外的变量,不过没有 static 修饰。局部变量:类的方法中的变量。实例:public class Variable{ static int allClicks=0; // 类变量 String str="hello world"; // 实例变量...原创 2018-03-27 15:27:26 · 169 阅读 · 0 评论