java基础
bandenger
这个作者很懒,什么都没留下…
展开
-
Java注解学习总结
1、注解的作用 java注解有两个作用:1、它不是程序的本身,可以对程序做出解释(这一点和我们的注释区别不大,比如我们的@Deprecated 它表示的是我们当前的代码已废弃或存在风险,不建议使用);2、可以被其他程序读取(比如我们的编辑器读取)。java的注解是jdk1.5以后的版本加入的功能,它的包是java.lang.annotation。对于注解我的理解是它使我们的程序更加的优雅,让我们在某种业务场景上可以更灵活方便的处理。api中我们常用的内置注解有:@Override、@De...原创 2021-06-30 22:51:47 · 191 阅读 · 2 评论 -
java学习之:HashMap源码分析
HashMap的put操作源码学习一、HaspMap集合简介二、HashMap的数据结构2.1 put操作2.2 扩容机制2.3 继承关系一、HaspMap集合简介基于哈希表的 Map接口的实现。这种实现提供了所有可选的Map操作,并允许 null值和 null关键。(这 HashMap类大致相当于 Hashtable,除了它是不同步的,允许空值。)此外hashMap中的映射不是有序的。在jdk1.8以前,HashMap由数组和链表组成,数组是HaspMap的主体,而链表则是为了解决哈希冲突而引入的结原创 2020-06-09 01:21:24 · 312 阅读 · 0 评论 -
数据结构之: 二叉排序树
数据结构学习之:二叉排序树二叉排序树概述二叉排序树代码实现二叉排序树概述二叉排序树的规则比较简单:二叉排序树又名二叉搜索树(BST),对于二叉树中任何一个叶子节点,要求其左子节点小于当前节点,右子节点大于当前节点。根据名字我们可以知道这种二叉树结构它的查找效率是比较高的如图所示:它的中序遍历为:1 3 5 7 10 19 23其实二叉排序树的中序遍历就是一个有序的数组二叉排序树代码实现package tree;/** * 二叉排序树 */public class SortBinar原创 2020-05-24 21:28:25 · 318 阅读 · 0 评论 -
Java设计模式——结构型模式之代理模式
一、前言 我们在生活中经常会听到什么代理商,或者中间商之类的名词,他们的存在隐藏了真实厂商的存在,在我们java中,代理模式的设计就是为其他对象提供一种代理以控制对这个对象的访问。简单来说就是在真正实现类上再套一个代理类,用户调用的是代理类的方法或者接口,但真正实现的是这个被包装的类的方法。代理模式与装饰模式有点相似,但它们却有很大区别,装饰模式是增加或者减少额外的职责,而代理模式不添...原创 2019-02-16 23:38:55 · 120 阅读 · 0 评论 -
Java设计模式——结构型模式之组合模式
一、前言 组合模式又名部分整体模式(别问我怎么知道 ,百度的),组合模式顾名思义就是将对象依据树形结构来整合的一种设计模式。说到树形结构,我们脑海中就会联想到一个树的形状,它是一种具有层次结构的设计。组合模式使得用户对单个对象和组合对象的使用具有一致性。说通俗一点就是组合模式通过对象组合的方式嵌套起来,形成一种树形结构层次,然后使用递归的方式来处理组合对象。二、组合模式概述:将...原创 2019-02-12 23:27:01 · 159 阅读 · 0 评论 -
Java设计模式——行为型模式之备忘录模式
一、前言 备忘录模式的概念对我们来说非常容易理解,像我们在玩象棋或者其它策略类游戏时,经常有回退上一步的动作,这种设计模式就是为了解决用户某些误操作而需要回退的问题。二、备忘录模式概述:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。 在代码中我们是通过编写一个备忘录的类来专门储存对象状态。...原创 2019-02-27 23:30:32 · 196 阅读 · 0 评论 -
Java设计模式——行为型模式之责任链模式
一、前言 责任链模式将请求的处理类链接在一起,请求发送方不需要关心谁处理这个请求,接受方也不需要知道目前这个请求是谁发出的,在处理这个请求的时候,接受者根据职责链依次往下寻找能处理该请求的类,直到找到为止。这种设计模式将请求者和接受者进行了解耦。二、职责链模式概述: 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链, 并沿着这条链传递...原创 2019-02-18 23:56:05 · 163 阅读 · 0 评论 -
Java设计模式——结构型模式之装饰模式
一、前言 装饰器模式是我们在设计中常用的一种设计模式,我们从模式的名字就大概能知道,这种设计模式的主要作用就是给某一个对象增加额外的职责,而这种装饰可以是多种的。就像我们给一个洋娃娃装饰它的衣物一样,这样就使得我们很容易理解这种设计模式扩展性非常好,灵活性也比较高。就增加功能来说,装饰器模式相比生成子类更为灵活。当我们在不想很多子类的情况下,我们可以考虑使用装饰器模式。二、装饰器模式...原创 2019-02-13 23:21:35 · 149 阅读 · 0 评论 -
Java设计模式——行为型模式之观察者模式
一、前言 在生活中我们会遇到这样的场景:用水壶烧开水。当水烧开时,你会有一个关火的过程。在烧水的过程中,你一直观察着这个烧水的进度,当它的状态改变时会触发你关火的这个动作。观察者模式就是处理这种场景而设计出来的一种设计模式。二、观察者模式概述: 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。观察者模式是为了处理一个...原创 2019-02-28 23:37:01 · 218 阅读 · 0 评论 -
Java设计模式——行为型模式之状态模式
一、前言 对象在不同的状态可能会有不同的行为方式,当我们的状态发生改变的时候,我们相应的行为也要发生改变,状态模式就是为了处理这样的场景而设计出来的一种开发模式。状态模式主要是为了解决对象的行为依赖于它的状态(属性),并且可以根据它的状态改变而改变它的相关行为。二、状态模式概念:在状态模式(State Pattern)中,类的行为是基于它的状态改变的。当我们的代码中包含大量与...原创 2019-03-02 00:23:55 · 173 阅读 · 0 评论 -
Java设计模式——行为型模式之命令模式
一、前言 命令模式一种数据驱动的设计模式,属于行为型的设计模式,在我们生活中常常会见到命令模式的场景,比如说家中的电路开关,电视遥控器,空调遥控器等等。命令模式将命令封装成一个对象 ,这样就可以用不同的请求对客户进行参数化。命令模式的存在主要是为了处理一些特定场景下请求方与处理方之间的耦合关系,比如说日志的记录、消息的撤销、事务的处理等等。二、命令模式概述:将一个请...原创 2019-02-20 23:19:11 · 141 阅读 · 0 评论 -
Java设计模式——行为型模式之策略模式
一、前言 策略模式是我们在项目设计中会经常用到的一种设计模式。在一些场景中,一些算法或者类的行为需要改变,如果用传统的继承来实现的话,会使得代码的设计不合理,而且在有多种算法相似的情况下,使用 if...else 所带来的复杂和难以维护。策略模式就是为了解决这个些算法或者类的行为需要改变的场景。二、策略模式概述:定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得...原创 2019-03-03 00:11:26 · 179 阅读 · 0 评论 -
Java设计模式——行为型模式之迭代器模式
一、前言 迭代器模式是Java中常用的设计模式,我们在遍历访问集合元素的时候,使用的 iterator就是迭代模式。这种模式的访问不需要知道集合对象的底层表示。迭代模式有几个我们经常用到的关键代码:hasNext, next。二、迭代模式概述:迭代模式的使用就是为了提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示。使用场景: 1.访问一个聚...原创 2019-02-26 23:01:48 · 149 阅读 · 0 评论 -
Java设计模式——行为型模式之中介者模式
一、前言 中介者模式的概念就像我们生活中的中介一样,它的职责就是处理不同类与对象之间的通信,降低了 它们通信的复杂度,这种设计模式支持松耦合,且代码易于维护。二、中介者模式 概述:用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。中介者模式主要解决对象与对象之间存在大量的关联关系,这样势必...原创 2019-02-26 23:14:03 · 120 阅读 · 0 评论 -
Java设计模式——行为型模式之模板模式
一、前言 在我们的某些项目中,一些流程步骤或者算法往往都已经是固定好了的,唯一不同的是这些流程步骤或者算法中,某一个小的步骤有不同的实现方式。我们将这些不同实现方式的步骤抽取出来,将整个流程或者算法固定住,不允许子类改变,子类唯一可以做的就是现实父类中抽象的步骤或者方法。这种结构的设计模式我们称之为模板模式。二、模板模式概述:在模板模式(Template Pattern)中,一个抽...原创 2019-03-03 14:49:18 · 148 阅读 · 0 评论 -
Java设计模式——行为型模式之访问者模式
一、前言 我们在项目开发中,访问者模式的使用还是比较少的。访问者模式主要是为了将数据结构和数据操作做分离。所以我们在使用这种设计模式的时候常常会要求我们的数据结构不要轻易做出改变,它主要是我了解决稳定的数据结构和易变的操作耦合问题。二、访问者模式概述:表示一个作用于某对象结构中的各元素的操作。 它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。使用场景:1.一...原创 2019-03-03 15:16:44 · 163 阅读 · 0 评论 -
Java设计模式——行为型模式之解释器模式
一、前言 解释器模式,就像我们生活场景中的翻译一样,它给定某种语言,并定义它的文法表示,解释器通过这种标识来对语句进行翻译。解释器模式一般很少用于我们的代码开发中,不到万不得已我们是不会考虑 解释器这种设计模式的。因为这种设计模式应用场景很少,而且需要的类也很多,很容易引起类膨胀,复杂的语法也使得其难以维护。二、解释器模式概述:给定一个语言,定义它的文法的一种表示,并定义一个解释器...原创 2019-02-21 23:12:27 · 151 阅读 · 0 评论 -
Java设计模式——结构型模式之享元模式
一、前言享元模式的设计初衷是为了支持大量细粒度对象。在我们的某些系统中,可能会有大量的对象产生,造成很大的储存开销,比如说连接数据库的session对象,我们通过缓存池来管理这些session。享元模式就是为了解决这种内存开销问题,享元模式属于结构型的设计模式。二、享元模式概述:运用共享技术有效地支持大量细粒度的对象。主要用于减少创建对象的数量,以减少内存占用和提高性能。享元模式的...原创 2019-02-16 00:22:22 · 202 阅读 · 0 评论 -
Java设计模式——结构型模式之桥接模式
一、前言 今天我们来学习java设计模式中的桥接模式,桥接模式是一种应用比较广泛的一种设计模式,这种设计模式将抽象与实现独立出来,使得我们的实现可以独立的变化。桥接模式是一种处理多维度变化的设计模式,最终达到多维度之间的解耦效果。比如说我们的画笔和纸就是一种多维度的关系,不同的画笔可以在不同的纸张上作画,通俗一点来说就是多对多的一种维度关系。桥接模式就是处理这种多维度关系的一种方式...原创 2019-01-30 01:09:28 · 183 阅读 · 0 评论 -
多态、抽象类、接口知识整理
一、多态总结1、父类类型引用指向子类对象2、只能调用父类定义的方法3、如果子类中重写父类的一个方法,调用时会调用子类的一个方法4、多态中,子类可以调用父类中的所有方法5、多态主要体现为重载和重写。相同的行为,不同的实现方式。6、多态主要应用为:多态参数;多态集合。二、抽象类抽象类:如果一个方法只有方法的定义,没有方法的具体实现,那么该方法称为抽象方法。用修饰符abstract定义。具有抽象方法的类...原创 2018-04-16 20:41:37 · 170 阅读 · 0 评论 -
递归方式删除文件
采用递归方法删除文件。/** * 删除文件 * * @author Deng * */public class DelectFile { public static void main(String[] args) { File file = new File("E:/腾讯游戏"); new DelectFile().delect(file); } /** * 删除文件 * @para...原创 2018-04-22 20:50:30 · 196 阅读 · 0 评论 -
字符流的读取和写入
整理字节流读取和写入、复制public class LearnStream {public void readWrite(){ InputStream in=null; try{ //建立文件读取字节流 in=new FileInputStream("E:/ATM.txt"); int data=0; //将流中的数据读取到字节数组中,返回当前读取的字节数,读取完毕,返回-1 by...原创 2018-04-22 20:59:43 · 1517 阅读 · 0 评论 -
字符流的读取与写入
public void fileReader(){ //创建Reader类 Reader re=null; BufferedReader bf=null; try { //读取文件 re=new FileReader("E:/ATM.txt"); //套接流,在一个流的基础上,再套接一个流,称为高级流 bf=new BufferedReader(re); String s=null; ...原创 2018-04-22 21:01:48 · 340 阅读 · 0 评论 -
对象流的读取与写入
传输对象时,被传输的对象需要实现Serializable的接口,否则会抛出java.io.NoSerializable的异常。public class StudentTest { /** * 将对象流写入文件 * @param obj */public void write(Object obj){ OutputStream out=null; ObjectOutputStream objO...原创 2018-04-22 21:06:11 · 2048 阅读 · 0 评论 -
窗体文字方向键监听选择演示
利用事件监听,和字体的变换,创建一个粗糙的选择界面,学友们可借鉴用来增加小游戏进入游戏界面的辅助功能代码如下:@SuppressWarnings("serial")public class Login extends JFrame implements KeyListener{private ChooseLable begin=new ChooseLable("开始游戏", 200, 200, t...原创 2018-05-06 22:23:41 · 137 阅读 · 0 评论 -
Java多线程的三种实现方式
Java多线程的实现方式分别是:继承Thread类、实现Runnable接口、使用ExecutorService、Callable、Future实现有返回结果的多线程。其中前两种方式线程是我们比较熟悉得,并且执行完后都没有返回值,只有最后一种是带返回值的。下面分别讲述三种方式的实现代码:第一种:继承Thread类:重写run()方法public class MyThrea...转载 2018-08-13 21:23:32 · 4215 阅读 · 0 评论 -
SpringBoot 定时器
这里介绍一种注解版本基于springboot的定时器1、springboot中已经集成了spring 定时器需要引入得jar包,所以这里不需要再导包了2、写一个定时器得类,将该类注入到spring容器中,并在该类的方法上加入@Scheduled注解,如图:package com.example.springboot.task;import org.springframework....原创 2018-08-13 21:33:15 · 239 阅读 · 0 评论 -
Java设计模式——创建型模式之工厂模式
作为程序员菜鸟的板凳君,决定开始打牢固Java基础,那么就先从开始从设计模式开刀吧!1、前言 首先我们应该知道我们为什么要学习设计模式,板凳君就先谈谈自己的看法吧!其实设计模式说通俗一点就是我们的无数的前辈们总结的一套案例或者说是模板。因为在开发中,我们会经常遇到很多相同地场景,这个时候,我们的前辈们就把处理这种相似场景的思路或者说解决办法总结成一套模板,让后辈们在遇到相似场景的时...原创 2018-11-11 21:04:46 · 281 阅读 · 0 评论 -
Java设计模式——创建型模式之抽象工厂模式
一、前言 抽象工厂模式其实是对简单工厂模式中工厂行为的一个抽象,我们不妨在这里思考一下,如果我将工厂进行抽象了,那有什么好处呢?有会有什么弊端呢?我们又如何扬长避短呢?二、抽象工厂 我们先来谈谈什么是抽象工厂,抽象工厂模式的概述可以用如下这句话表达:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。什么意思呢?我的理解就是,这个工厂的作用就是生产...原创 2018-11-20 23:22:14 · 180 阅读 · 0 评论 -
Java设计模式——创建型模式之建造者模式
一、前言 今天板凳君跟大家一起来学习java设计模式中的建造者模式,小编对建造者模式的理解就是使一个复杂的对象进行分模块处理,并且使这些模块各自独立,这样做的好处是什么呢?小编个人觉得这样可以使一个复杂的对象简单化,分模块之后可以对提高系统的维护性能,当然还可以有其他好处,但是(暂时想不出来)小编觉得这种设计模式最大的优点就是这个了。当然有缺点就必然有它的缺点啦,一旦模块化后,对应的...原创 2018-11-25 23:34:01 · 165 阅读 · 0 评论 -
Java设计模式——创建型模式之单例模式
一、前言 今天我们来一起来进行单例模式的学习,在我们的开发中,单例模式的应用可能我们自己写代码的过程中本身会用的很少,但是这种设计模式却又是一种常见的模式,在一些jar包中可以找到它们的身影,它的出现常常会跟工厂模式一起配合使用。那么使用单例模式有什么好处呢?就用工厂模式来举例,从我们正常的认知上来讲,工厂通常只需要一个就可以,调用者不需要每次使用工厂就要New一个工厂对象,这样做不仅...原创 2018-12-03 00:01:28 · 139 阅读 · 0 评论 -
Java设计模式——创建型模式之原型模式
一、前言 今天我们来分享java设计模式中的原型模式。原型模式对于我自身而言,到目前为止我还没有见到过原型模式的应用(其实是因为自己道行太浅啦)。不过呢,虽然目前不会用到,但是我们还是需要了解什么是原型模式,以及原型模式的一些应用场景,以便于今后使用时做好准备。 合适使用场景: 1、复制对象的结构与数据。 2、希望对目标对象的修改不影响既有的对象。 ...原创 2019-01-28 01:04:12 · 121 阅读 · 0 评论 -
Java设计模式——结构型模式之适配器模式
一、前言 今天我们来一起学习结构型模式中的适配器模式,适配器模式在我们的生活场景中会经常遇到,比如说各种设备的转换接口。其实,我们从适配器这个模式的名字就能很容易想到,这种设计模式的存在就是为了让原本不兼容的接口变得兼容,因为这样做可以省去了很多开销成本。二、适配器模式 适配器模式的原理:将一个类的接口转换成客户需要的接口,使得原本因接口不兼容不能一起工作的类...原创 2019-01-29 00:31:23 · 179 阅读 · 0 评论 -
Java设计模式——结构型模式之外观模式
一、前言今天我们一起来学习外观模式。外观模式为用户提供一个统一的facade高层接口,我们的使用者面对仅仅就是facade这个接口,这样用户使用就显得简单,而facde下的子接口也容易扩展。自我感觉有点像我们生活中那些一键搞定的那种傻瓜式的操作模式。二、外观模式概述:隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。使用场景:1、客户端不需要知道系统内部的复杂联系...原创 2019-02-14 22:48:52 · 178 阅读 · 0 评论 -
String类型显示创建与隐士创建的区别
得到的结果如下: 理由如下:字符串a和b为隐士创建,变量指向字符串常量对象,该对象存放在数据段中,所以a和b中都是存放的字符串常量的地址,所以a==b表达式返回的是true,而c和d是显示创建,c和d变量分别指向堆中的字符串对象,他们产生的对象是不一样的,所以c和d中存放的是不同的变量地址,所以表达式c==b、c==d返回的都是false. ...原创 2018-04-16 20:37:31 · 248 阅读 · 0 评论