Java基础
文章平均质量分 77
青w韵
这个作者很懒,什么都没留下…
展开
-
封装,抽象,继承,多态。
封装:隐藏内部实现细节,防止数据被随意修改,提升安全性;由于避免暴露了很多实现细节,只提供对于指定字段的操作或只提供几个方法,这样后续修改维护比较容易。下面是一个杜撰的示例public class Card { private static int countId; private String id; private String pwd; ...原创 2019-11-26 21:00:16 · 147 阅读 · 1 评论 -
Java泛型的继承规则浅析
前提由于在读源码以及自己实现一些通用的排序等时,总是会遇到<?>,当时查资料一直是一知半解。本次决定写出来相关的知识点。内容泛型的继承规则首先,我们都清楚普通对象的向上转型,可以用父类来接受子类对象。Number a = 10;System.out.println(a.getClass().toString());a = 10.1;System.out.prin...原创 2019-11-26 20:19:23 · 262 阅读 · 0 评论 -
泛型约束与局限性(上)
泛型约束与局限性(上)由于类型擦除,所以不能使用基本类型实例化类型参数,Object不能存储基本类型的值(基本类型的包装类可以)。不能使用instanceof比较两个泛型变量的类型参数是否相等,只能比较它们是否为同一泛型。ArrayList<Number> arrayList = new ArrayList<>();// 报错泛型类型不合法System.o...原创 2019-11-10 21:33:49 · 201 阅读 · 0 评论 -
反编译细看Java的泛型类型擦除 core Java 读书笔记之泛型
core Java 读书笔记之泛型虚拟机中没有泛型,只有普通的类和方法。所有的类型参数都用它们的限定类型替换。简单例子:public class Array<T> { private Object[] array; private int size; public Array(T[] array) { this.array = ...原创 2019-11-09 23:59:22 · 344 阅读 · 0 评论 -
手动实现简单HashMap。
HashMap实现方式两种:数组加链表数组加红黑树这里只简单实现了第一种方式,并且未实现拓容。散列函数用了最简单的取余法。顺便加上了泛型,简单练习一下package ThashMap;/** * @date 2019/10/26 - 19:32 */public class Node<T, V> { T key; V value; N...原创 2019-10-26 21:18:07 · 182 阅读 · 0 评论 -
Core Java 10阻塞队列简单案例
阻塞队列的简单应用在指定文件目录下的所有子文件中搜索包含指定关键词的位置生产者主线程用来向阻塞队列中添加待搜索的文件其他子线程用来在文件中搜索并打印输出结果package BaseLearn.multithreadingTest.searchFileForKey;import java.io.File;import java.io.FileNotFoundException;imp...原创 2019-10-24 10:36:51 · 122 阅读 · 0 评论 -
Java核心技术卷(10th)读书笔记之Java线程安全的集合
线程安全的集合Java核心技术卷(10th)读书笔记如果多线程要并发地修改一个非线程安全的数据结构, 例如散列表, 那么很容易会破坏这个数据结构。 可以通过提供锁来保护共享数据结构, 但是选择线程安全的实现作为替代可能更容易。 下面将讨论 Java 类库提供的另外一些线程安全的集合。高效的映射、集和队列java.util.concurrent包提供了映射、 有序集和队列的高效实现:Conc...原创 2019-10-24 10:31:46 · 206 阅读 · 0 评论 -
Java多线程之阻塞队列
Java多线程之阻塞队列Java核心技术卷(10th)读书笔记对于许多线程问题, 可以通过使用一个或多个队列以优雅且安全的方式将其形式化。生 产者线程向队列插人元素, 消费者线程则取出它们。使用队列,可以安全地从一个线程向另 一个线程传递数据。当试图向队列添加元素而队列已满, 或是想从队列移出元素而队列为空的时候, 阻塞队 列(blocking queue ) 导致线程阻塞。 在协...原创 2019-10-22 23:04:41 · 187 阅读 · 0 评论 -
并发和同步(下)
并发和同步(下)Java核心技术卷(10th)读书笔记同步阻塞每一个 Java 对象有一个锁。线程可以通过调用同步方法获得锁。还有 另一种机制可以获得锁,通过进入一个同步阻塞。synchronized (obj) // this is the syntax for a synchronized block{ critical section}监视器概念锁和条件是线程同步的强...原创 2019-10-20 16:49:21 · 105 阅读 · 0 评论 -
prototype(原型)模式
prototype(原型)模式图解设计模式读书笔记问题引出有时候我们需要“在不指定类名的前提下生成示例”,此时,我们就不能根据类来生成实例,而要根据现有实例来生成实例。难以根据类来生成实例若实例的生成过程太过复杂,比如用户在图形编辑器中使用鼠标制作出的图形实例,要想做出一模一样的十分困难,此时,我们就必须利用当前实例来生成一个相同的实例。解耦框架与生成的实例想让生成的实例...原创 2019-10-19 22:12:17 · 127 阅读 · 0 评论 -
并发与同步(中)
并发与同步(下)Java核心技术卷读书笔记条件对象通常, 线程进入临界区,却发现在某一条件满足之后它才能执行。要使用一个条件对象来管理那些已经获得了一个锁但是却不能做有用工作的线程。现在来细化银行的模拟程序。我们避免选择没有足够资金的账户作为转出账户。注意不 能使用下面这样的代码:if (bank.getBalance(fron) >= amount { ban...原创 2019-10-19 22:10:52 · 178 阅读 · 0 评论 -
Java多线程常用操作方法简单学习
多线程常用操作方法1.2.线程的休眠测试:Runnable runnable = () -> { for (int i = 0; i < 3; i++) { System.out.println(Thread.currentThread().getName()); try { ...原创 2019-10-18 21:26:51 · 109 阅读 · 0 评论 -
Java并发与同步(上)
并发本文档建立在之前博客基础上。直接调用Thread类或Runnable对象的run()方法,只会执行统一线程中的任务,而不会启动新线程。调用start()方法,此方法将创建一个执行run方法的新线程。中断线程调用interrupt()方法,可以请求终止线程。调用Thread.currentThread()得到当前线程,再使用isInterrupt()来判断线程是否被终止。若...原创 2019-10-18 21:23:34 · 300 阅读 · 0 评论 -
Java多线程
继承Thread类来实现多线程继承此类就表示这个类为线程类的主体类,但是需要覆写其中的run()方法(线程的主方法),才可以进场多线程处理。示例:// MyThread.javapublic class MyThread extends Thread { private String title; public MyThread(String title) { ...原创 2019-10-17 23:34:05 · 103 阅读 · 0 评论 -
并发,进程,线程简单理解
并发执行并发执行为一组在相互独立的程序或程序段在执行中,一个程序段的执行尚未结束,另一个程序段已经开始执行。通过保存未执行结束程序的相关信息,再执行其他程序,再通过相同的方式,在一个时间段内切换执行程序来实现一个时间段内的程序来实现并发执行。本质上,一个确定的时间点只有一个进程中的一个线程在执行。并发执行特点:间断性由于需要暂时中断来切换线程或进程,所以是间断的。失去封闭性在...原创 2019-10-17 21:32:22 · 565 阅读 · 0 评论 -
Java的lambda表达式以及函数式编程简介
lambda表达式用来支持函数式编程,利用函数式编程可以避免掉一些繁琐的处理问题,简化代码。lambda使用要求:SAM,接口只有一个抽象方法,这样的接口被称为函数式接口,函数式接口才能被lambda表达式所使用。例子:// Messageable.java@FunctionalInterfacepublic interface Messageable { void s...原创 2019-10-16 21:28:29 · 260 阅读 · 0 评论 -
Java内部类
内部类在一个类的内部定义其他的类,这样的内部其他的类,就是内部类。使用class来创建内部类。内部类的优点是:可以轻松访问外部类中的私有属性和方法。外部类也可以访问内部类中的私有属性。想起之前看到的静态内部类单例模式:public class Outer { private Outer() { } private static class Inner{...原创 2019-10-16 21:19:05 · 98 阅读 · 0 评论 -
Java异常的捕获与处理
异常的捕获与处理1.Exception异常是一般开发中需要关注的。Error是程序还未执行出现的错误,开发者无法处理。在进行多个异常同时处理时,要把捕获范围大的放在捕获范围小的后面,确保了错误信息明确的同时,保证了错误能得到处理。5.若主方法也向上抛出异常,则表示此异常将由jvm来处理。例子:public class MyException extends Exc...原创 2019-10-14 16:52:13 · 395 阅读 · 0 评论 -
Java enum枚举类型
原因使用一个专门的类存储静态常量在类型安全和使用方便性上并没有多少好处。作用定义有限个数对象的一种结构,使修改,管理更方便。例如:人的性别:{男,女},一周几天:{一,二…六,日}例子enum Sex { MALE, FEMALE;}public class Main { public static void main(String[] args){ ...原创 2019-10-13 17:33:13 · 115 阅读 · 0 评论 -
Java泛型学习
由于有时候调用父类向下转型为子类时,若其对象本身创建时属于父类,则会抛出一个运行时的异常,为了慢慢解决这种对象的向下转型的安全隐患问题,JDK1.5后加入了泛型,使类中的属性、方法或者参数可以通过运行时来决定。泛型定义完成后可以在对象实例化时进行泛型类型的设置。注意:泛型在使用时只允许设置引用类对于只提供访问,不提供修改的方法,可以使用通配符?来接收所有类型。使用? extends ...原创 2019-10-10 21:42:10 · 122 阅读 · 0 评论 -
Java转型简单学习
对于向上转型,只要是其父类,或者父接口,可以使用向上转型来转为该类型。相当于父类引用指向子类对象。方便后续扩展。加入父类又有了新的实现子类,原来的涉及父类类型的地方无需大量修改。向下转型:只有当该变量本来是其子类,才可以向下转型为该类型。否则不能转型,运行时报错。例如:如果Phone是父类,SmartWatch是子类(可能不符合逻辑,个人测试简单使用的实例)public clas...原创 2019-10-09 10:51:02 · 111 阅读 · 0 评论 -
Java抽象类,包装类简单学习
抽象类抽象类主要是用来约定对于子类必须需要覆写的方法。还可以用其来实现一些对于具体调用方法或步骤的封装。使用abstract来定义抽象类和抽象方法。如果要使用抽象类,必须:抽象类有子类,子类使用extends继承父类。抽象类的子类必须覆该抽象类的全部抽象方法(若子类也是抽象类,则不强制要求)。抽象类无法自己实例化,即使抽象类中没有任何抽象方法。在模板设计模式中有用到抽象类,大致思...原创 2019-10-08 21:23:46 · 193 阅读 · 0 评论