
Java 成长之路
文章平均质量分 64
YFL_iOS
文艺程序员,美食爱好者。
喜爱编程、健身,喜爱写字、读书。
喜爱一切能让自己变得美好的事物。
展开
-
Java Map 接口
文章目录 一、Map的基本概念 1、基本概念 2、特点 3、常用的方法二、Map集合的两种取出方式1、Set<k> keySet 2、 Set<Map.Entry<k,v>> entrySetMap.Entry三、 Map常见的子类Map |-- HashTable: 底层是哈希表数据结构,不可以存入null键...原创 2019-07-20 23:36:44 · 350 阅读 · 0 评论 -
Java 单例
目录 一、什么是设计模式 二、单例设计模式 三、如别保证对象唯一性 四、如何创建单例 1、饿汗式 2、懒汗式 五、如何验证对象唯一性一、 什么是设计模式解决某一类问题最行之有效的方法二、单例设计模式解决一个类在内存中只存在一个对象三、如何保证对象唯一性1、为了避免其他程序过多创建该类对象,先禁止其他程序创建该类对象(私有化...原创 2017-07-16 22:05:49 · 314 阅读 · 0 评论 -
Java 向线程传递数据
向线程传递数据的三种方法:1、通过构造函数传递数据2、通过变量和方法传递数据3、通过回调函数传递数据在传统开发模式中,当我们调用一个函数时,通过这个函数的参数将数据传入,并通过这个函数的返回值来返回最终的计算结果。但是在多线程的异步开发模式下,数据的传递和返回与同步开发模式有很大的区别。由于线程的运行和结束时不可预料的,所以在传递和返回数据时就无法像函数一样通过函数参数和return 语句来返回数据原创 2017-12-05 23:07:00 · 868 阅读 · 0 评论 -
Java 异常总结
一、什么是异常1、异常是对问题的描述,将问题进行对象封装二、异常体系 Throable | –Error | – Exception |–RuntimeException三、异常体系的特点异常体系中的所有类及建立的对象都具备可抛性 也就是说可以被 throw 和 throws 关键字所操作 只有异常体系具备这个特点三、throw 和 thr原创 2017-08-06 22:21:26 · 638 阅读 · 0 评论 -
Java 死锁
当一个线程永远地持有一个锁,并且其他线程都尝试去获得这个锁时,那么它们将永远被阻塞,这个我们都知道。如果线程A持有锁L并且想获得锁M,线程B持有锁M并且想获得锁L,那么这两个线程将永远等待下去,这种情况就是最简单的死锁形式。在数据库系统的设计中考虑了监测死锁以及从死锁中恢复,数据库如果监测到了一组事务发生了死锁时,将选择一个牺牲者并放弃这个事务。Java虚拟机解决死锁问题方面并没有数据库这么强大,当原创 2017-12-04 15:23:01 · 237 阅读 · 0 评论 -
Java 线程的初识
文章目录 一、进程与线程 1、什么是进程 2、什么是线程 3、线程和进程之间的关系 4、进程和线程内存方法的知识 5、线程的分类 二、线程的创建 1、使用Thread 类创建线程 2、使用Runnalbel 接口创建线程 三、线程的基本属性 1、线程栈 2、线程名 3、获取当前线程原创 2017-11-07 21:34:14 · 568 阅读 · 0 评论 -
Java checked 异常 和 RuntimeException(运行时异常)
目录 一、运行时异常 1、什么是RuntimeExceptioin 2、运行时异常的特点 3、如何运用运行时异常 二、运行时异常和ckecked异常的区别 1、机制上 2、逻辑上 一、运行时异常1、什么是运行时异常程序在运行过程中出现的异常,RumtimeException 是 Exception 的一个子类 我们可以查看Jav原创 2017-08-04 23:34:22 · 22424 阅读 · 2 评论 -
Java 方法被覆盖时异常特点
异常在子父类覆盖(方法重写)中的体现1、子类在覆盖父类时,如果父类的方法抛出异常,那么子类的覆盖方法,只能抛出父类的异常 或 其子类异常2、如果父类方法 抛出 多个异常,那么子类在覆盖 该方法时,只能抛出 父类 异常的子集3、如果父类 或者 接口 方法 中没有抛出异常,那么 其子类在覆盖 方法 时,也不可以抛出异常,如果子类方法发生了异常,就必须自己进行try-catch处理,绝对不能抛。原创 2017-08-06 20:45:22 · 1243 阅读 · 1 评论 -
Java OOP之多态
面向对象三大特性 : 继承、封装、多态。什么是多态? 可以理解成 对象的多种形态。(细胞的分化其实就是一种多态)在Java语言中,我觉得可以从下面两个方法来理解多态的概念。(班门弄斧下^_^)一、引用多态1)父类的引用可以指向本类 2)父类的引用可以指向子类对象注意 : 不能使用子类的引用指向父类对象。 //父类的引用可以指向本类的对象 Animal obj = n原创 2017-05-20 23:55:48 · 813 阅读 · 0 评论 -
Java 多态中的类型转换(instanceof)
引用类型转换 1、向上类型转换(自动/隐式类型转换),是小类型转化成大类型,不存在认了风险。即子类型对象也是父类型。 2、向下类型转化(强制类型转化),大类型转化成小类型,存在一定风向。多态实例后,都可以向上类型转化,但是转化后,子类型对象间的互相转换就会存在一定风险。如何规避风险? 使用instanceof运算符,来解决引用对象的类型,避免类型转换的安全性问题 //创建子类对象原创 2017-05-22 22:45:35 · 15616 阅读 · 5 评论 -
Java 处理异常
Java 中使用 try-catch 或 try-catch-finally 来捕获并处理异常。一、关于try - catch基本语法try{//一些会抛出异常的方法}catch(Exception e){//处理该异常的代码块}如果try块中的代码抛出异常会发生什么呢?抛出异常的方法终止执行,程序的控制权将被移交给catch块中的异常处理程序,那么catch块中的代码如何写呢?可以发出一些原创 2017-06-08 22:36:39 · 2917 阅读 · 0 评论 -
Java 如何抛出异常、自定义异常
一、异常的抛出 1、定义 : 一个方法不处理这个异常,而是调用层次向上传递,谁调用这个方法,这个异常就由谁来处理。2、throw : 将产生的异常抛出(强调的是动作),抛出的既可以是异常的引用,也可以是异常对象。(位置: 方法体内)3、throws : 如果一个方法可能会出现异常,但没有能力处理这种异常,可以在方法声明处用throws子句来声明抛出异常。用它修饰的方法向调用者表明该方法可能会抛出异原创 2017-06-13 23:18:02 · 329568 阅读 · 19 评论 -
Java 异常处理机制(异常链)
JVM (Java 虚拟机 的缩写)用方法调用栈来跟踪一系列的方法调用过程。该堆栈保存了每个调用方法的本地信息。当一个新的方法被调用时,JVM把描述该方法的栈结构置入栈顶,位于栈顶的方法为正在执行的方法。如果在执行的方法过程中抛出异常,JVM必须找到能捕获该异常的catch块 ( 1 ) 它首先观察当前方法是否存在catch块,如果存在,就执行该catch代码块 ( 2 ) 如果不存在,原创 2017-06-10 17:31:49 · 1819 阅读 · 0 评论 -
Java 接口的继承
我们先来回顾下接口的相关知识接口是规范,用interface关键字修饰接口,接口是是一组抽象方法定义和常量的集合,接口间的继承是多继承关系。接口的定义public 接口名{/*零个到多个的常量定义零个到多个的抽象方法的定义*/}实现接口修饰符 class 类名 extends 父类名 implements 接口1,接口2,...{// 如果继承的类是抽象类,必须实现父类的抽象方法// 实原创 2017-05-29 17:18:17 · 3574 阅读 · 0 评论 -
Java 接口(Interface)
1、什么是接口?接口可以理解成一种特殊的类,由常量和公共的抽象方法所组成类是一种具体的实现体系,而接口定义了某一批类所需要遵循的规范,接口不关心这类类的内部数据,也不关系这些类里方法的实现细节,他只规定这些类必须提供某些方法.总归来说: 接口可以看做是一种规范。2、如何定义一个接口?和类定义不同,定义接口不再使用calss关键字,而是使用interface关键字3、语法格式如何? [修饰符] (ab原创 2017-05-25 23:26:35 · 1319 阅读 · 0 评论 -
Java 抽象类
1、什么是抽象类?抽象类前使用abstract关键字修饰,则该类为抽象类2、抽象类有什么作用?限制规定子类必须实现的方法,但不关注实现细节 3、抽象类应用场景?1)在某些情况下,某个父类只是知道子类应该包含怎么样的方法,但无法准确知道这些子类如何实现这些方法 2)从多个具有相同特征的类抽象出一个抽象类,以这个抽象类作为子类的模板,从而避免了子类设计的随意性4、抽象类的使用规则?1) abstra原创 2017-05-23 16:09:17 · 314 阅读 · 0 评论 -
Java OOP之继承和方法重写(override)
一、继承 1、定义: 继承是类与类之间的一种关系,是一种” is a” 的关系 例如 : 狗是动物 ,我们就理解成狗类继承动物类。继承的类称为子类,被继承的类称为父类。2、Java是单继承: 一个类最多只能有一个父类。 Java 支持多层次继承,也就是说,C继承B,B继承A,C也是A的子类。 注意: 同时,一个类可以有多个子类。(多态)3、继承的优点 1) 子类拥有父类的所有属原创 2017-05-13 19:31:08 · 1507 阅读 · 0 评论 -
Java 从线程返回数据
从线程中返回数据的两种方法1、通过类变量和类方法返回数据2、通过回调函数返回数据原创 2017-12-06 20:59:50 · 13693 阅读 · 1 评论 -
Java Set接口
一、Set接口的层级结构 1、特点 2、层级关系 二、常用方法 1、增 2、删 4、修 5、查 三、ListIterator迭代器 1、背景由来 2、使用 3、注意事项 四、List接口常见实现类 1、ArrayLis...原创 2019-02-22 00:21:01 · 1037 阅读 · 0 评论 -
Java List接口
文章目录 一、Lis接口t的层级结构 1、特点 2、层级关系 二、常用方法 1、增 2、删 4、修 5、查 三、ListIterator迭代器 1、背景由来 2、使用 3、注意事项一、Lis接口t的层级结...原创 2018-11-12 01:12:51 · 903 阅读 · 0 评论 -
Java Collection和Iterator
文章目录 一、关于集合 1、为什么会出现集合类 2、数组和集合同为容器,有何不同 3、集合的特点 4、集体体系 5、为什么会出现这么多容器 6、Collection接口常见方法 7、迭代器(Iterator) 8、示例demo一、关于集合1、为什么会出现集合类面向对象的语言对事物的体现都是以对象的形式,为了更方便对多个...原创 2018-10-29 22:44:33 · 1410 阅读 · 0 评论 -
Java 泛型方法/接口、泛型限定
文章目录原创 2019-03-30 21:40:50 · 53673 阅读 · 19 评论 -
Java 泛型类
文章目录 一、泛型类的由来 当类中要操作的引用数据类型不确定的时候, 早期定义Object来完成扩展 现在定义泛型来完成扩展 二、并不存在泛型类 1、如何验证不存在泛型类 2、使用注意事项 三、泛型继承 1、以泛型类为父类 2、以非泛型类为父类 3、泛型类与非泛型类在继承时主要区别...原创 2019-03-10 18:12:26 · 468 阅读 · 0 评论 -
Java 泛型的使用
需求:定义一个字符串集合,要求字符串按照长度排序。在不使用泛型前,我们的代码如下。public class GenericDemo { public static void main(String[] args) { // 让Treeset集合元素具有比较性,构造方法传入一个自定义比较器 TreeSet ts = new TreeSet(new StringComperator...原创 2019-03-02 18:39:07 · 698 阅读 · 0 评论 -
Java 泛型基础
文章目录 一、泛型的由来 1、Collection的缺陷 2、泛型的由来背景 二、泛型的好处 1、类型安全 2、消除强制类型转化 三、泛型的格式 1、为什么泛型使用&amp;amp;amp;amp;lt;&amp;amp;amp;amp;gt; 2、泛型格式 一、泛型的由来1、Collection的缺陷Java语言的集合有一个缺点:当我们把一个对象丢进集合后,集合就会忘...原创 2019-02-24 17:56:53 · 224 阅读 · 2 评论 -
Java join()方法的使用
文章目录 一、join()方法的作用 二、join()和start()调用顺序问题 三、join()方法实现原理一、join()方法的作用主要作用是同步,它可以使得线程之间的并行执行变为串行执行。在A线程中调用了B线程的join()方法时,表示只有当B线程执行完毕时,A线程才能继续执行。 看如下代码class JoinThread implements Runnable{ //重写原创 2018-04-04 16:06:18 · 22161 阅读 · 2 评论 -
Java JDK1.5后生产消费者模式解决方案
文章目录 一、思考 nofifyAll()方法是否存在效率问题? 二、新特性 1、概述 2、总结 三、新特性的应用 1、Lock 2、Condition 四、优化代码示例 1、代码 2、注意点 一、思考在上一篇博客 生产-消费者模式初探 中,我们用 while()循环判断标记位和notifyAll() 解...原创 2018-03-29 17:05:14 · 314 阅读 · 0 评论 -
Java synchronized关键字
先看一个场景: 两个储户分别同时往银行存300元,每次存100,分三次存。代码如下 ://银行public class Bank { private int sum = 0; public void add(int n ) { sum += n; System.out.println(sum); }}//用户 public class原创 2017-11-27 22:49:18 · 500 阅读 · 1 评论 -
Java 生产--消费者模式初探
生产者消费模式 : 顾名思义有生产者、消费者、资源 三个对象。生产者生产资源,消费者消费资源。类似于工厂流水线,多条生产线(生产者),多条包装线(消费线)。前面有介绍线程的 等待唤醒机制 我们可以回顾下,一条输入线程(生产者),一条输出线程(消费者),不同线程对同一资源进行操作,只不过操作的工作不一致。回顾下等待唤醒机制的代码(2条线程)//资源文件class Resourc...原创 2018-03-25 14:25:03 · 244 阅读 · 0 评论 -
Java 线程间通信-等待唤醒机制
在上一篇博客Java 线程通信的安全问题(同步) 遗留一个问题,当输入线程(Input)操作资源(res)完成后,失去执行权,输出线程(outPut)在一些短时间内刻获取cpu执行权,就会疯狂打印这结果。那么,我们如何解决这个问题呢?分析: 我们期望的结果是,当输入线程一次(Input)操作资源(res)后,我们希望输入线程 (Input)失去执行权,让输出线程(outPut)获取cpu执行权,当输原创 2018-01-13 21:51:34 · 361 阅读 · 0 评论 -
Java 线程通信的安全问题(同步)
线程间的通信 : 其实就是多个线程操作同一资源,但是操作的动作不同。注意: 1、多个线程 2、同一资源 3、操作动作不同例如一个场景: 输入线程(Input) 和 输出线程(outPut) ,输入线程负责操作资源(Resource),Resource 有 name(String) 和 sex(String)两个变量,输入线程(Input) 负责为 Resource 的成员赋值,输出线程原创 2018-01-07 17:33:10 · 337 阅读 · 0 评论 -
Java 构造器
一、构造器 1、在Java 中,使用new关键是调用构造器,从而返回该类的实例 也就是说: 构造方法是定义在Java类中的一个用来初始化对象的方法,是创建对象的根本途径 注意: 构造方法与类同名且没有返回值2、语法 修饰符 构造方法名 (形参列表) { //在这里面初始化代码 } 注意: 1) 修饰符: 只能有public/private/protected,一般设置成pub原创 2017-04-23 20:55:52 · 686 阅读 · 1 评论 -
Java 异常的初识
一、什么是异常 阻止当前方法或作用域,称之为异常二、异常处理的作用正确处理异常能够将异常提供给编程人员或用户,使本来已经中断了的程序以适当的方式继续运行或者是退出,并且能够保存用户当前的操作,或者进行数据回稳,最后把占用的资源释放。二、异常的体系结构Throwable 是java.lang 包中一个专业用来处理异常的类,他有两个子类,即Error和Exception。Error : 用来处理程序运原创 2017-06-06 22:59:50 · 367 阅读 · 0 评论 -
Java super关键字的使用
一、super1、 在对象的内部使用,可以代表父类对象。2、访问父类属性 :super.属性 访问父类方法 :super.方法二、演示案例 创建Animal类,并定义age属性和eat()方法public class Animal { public int age = 10; public void eat(){ System.out.println("动物具原创 2017-05-16 15:30:55 · 608 阅读 · 0 评论 -
Java 内部类(Inner class)
一、内部类1、什么是内部类? 内部类( Inner Class )就是定义在另外一个类里面的类, 与之对应,包含内部类的类被称为外部类。2、为什么要定义内部类?(即内部类的作用) 1)内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类 2)内部类的方法可以直接访问外部类的所有数据,包括私有的数据 3) 内部类所实现的功能使用外部类同样可以实现,只是有时使用原创 2017-05-07 00:05:19 · 2171 阅读 · 0 评论 -
Java static修饰方法
一、static 修饰方法 1、与静态变量一样,我们也可以使用 static 修饰方法,称为静态方法或类方法。其实之前我们一直写的 main 方法就是静态方法。调用静态方法可通过类名访问或者对象方法。 例如:public class StaticMethod {//使用static关键字修饰静态方法public static void print(){System.out.println(原创 2017-04-24 23:29:09 · 4986 阅读 · 0 评论 -
Java 包装类初识
一、包装类的引入 Java 共有8种基本数据类型:int/double/float/byte/char/boolean/short/long 这8种基本数据类型的数据不具备”对象”的特性. 例如 : 没有属性、没有方法可以被调用 为了让每个基本数据类型具备对象的特性,Java为每个基本数据类型头提供了一个包装类。二、基本数据类型和包装类之间的对应关系注意: 并且在8种包装类中,除了Charact原创 2017-06-26 22:19:29 · 341 阅读 · 0 评论 -
Java 运算符
哎,运算符忘记写了。先做个目录。一、算术运算符1、 加 : + 2、减 : - 3、乘 : * 4、取整: / 5、 取余 : % (涉及到正负号的,以左边操作数为准) 7、递增 : ++ 8、递减 : – public static void main(String[] args) { int a = 5; int b,c,d,f,g,h;原创 2017-06-27 22:48:57 · 484 阅读 · 0 评论 -
Java OOP之封装性和this关键字的使用
Java 是面向对象的编程语言,面向对象有三大特性: 封装、继承、多台。 先介绍下封装性。一、什么是封装封装是指将对象的状态信息隐藏在对象的内部,不允许外部程序直接访问对象内部信息,而是通过该类所提供的方法来实现对内部信息的操作和访问。二、封装的目的 1、只能通过规定的方法访问数据 2、隐藏类的实现细节,便于修改和实现三、如何实现封装 1、修改属性的可见性 。将属性设置为 private原创 2017-05-04 22:41:48 · 1063 阅读 · 0 评论 -
Java static修饰初始块{}
一、初始化块 1、在Java语言中,初始化块和属性、方法、构造器处于平等的地位。在一个类里面可以有多个初始快,在相同类型的初始块之间是有顺序的,其中前面定义的初始化块先执行,后面定义的初始化块后执行。 2、 语法格式: 修饰符{ // 执行代码}3、Java 有两种初始化块 1) 静态初始化块(修饰符为static) :当类装载到系统时执行一次(只执行一次)。在静态初始化块,如果想初始化变原创 2017-04-25 23:51:25 · 1995 阅读 · 1 评论