![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
董铠
这个作者很懒,什么都没留下…
展开
-
Java设计模式-6.模板设计模式
模板设计模式就是定义一个算法的骨架,而将具体的算法延迟到子类实现优点:在定义算法骨架的同时,可以很灵活的实现具体的算法,满足用户灵活多变的需求缺点;如果算法骨架修改的话,就要修改抽象类package day27;public class Dk4Template { //模板设计模式 //计算程序运行时间 public static void main(String[] args) { Demo d = new Demo(); System.out.println(d.getTime原创 2020-07-01 21:47:20 · 74 阅读 · 0 评论 -
Java设计模式-5.适配器设计模式
在使用监听器的时候,需要定义一个类事件监听器接口,通常接口中有多个方法,而程序中不一定都用到,但又必须重写很繁琐,定义监听器时只要继承适配器,然后重写需要的方法。适配器原理:适配器就是一个类,实现了监听器接口,所有抽象方法都重写了,但是方法都是空的,只重写需要的方法。package day25;public class Dk9Adapter { //适配器设计模式 public static void main(String[] args) { // TODO Auto-generated原创 2020-07-01 21:45:31 · 82 阅读 · 0 评论 -
Java设计模式-4.工厂方法模式
抽象工厂类负责定义创建对象的接口,具体对象的创建工作由继承抽象工厂的具体类实现(每个类有一个工厂)优点:客户端不需要负责对象的创建,从而明确各个类的职责,如果有新的对象增加,只需要增加一个具体的类和具体的工厂类即可,不影响已有的代码缺点:需要额外的编写代码,增加了工作量package day25;public interface Factory { public Animal createAnimal();}package day25;public class DogFactory i原创 2020-07-01 21:43:10 · 56 阅读 · 0 评论 -
Java设计模式-3.简单工厂模式
定义一个具体的工厂类负责创建一些类的实例优点:客户端不需要负责对象的创建,从而明确各个类的职责缺点:这个静态工厂类负责所有对象的创建,如果有新的对象的增加,或者某些对象的创建方式不同,就需要不断修改工厂类,不利于后期维护package day25;public abstract class Animal { public abstract void eat();}/** * */package day25;/** * @author Dk * */public cla原创 2020-07-01 21:41:11 · 76 阅读 · 0 评论 -
Java设计模式-2.单例设计模式
确保一个类只有一个实例(举例:任务管理器、Runtime类)饿汉式和懒汉式区别:单线程饿汉式:空间换时间(一上来就直接创建对象)更好懒汉式:时间换空间(没有直接创建对象)多线程饿汉式:没有安全隐患懒汉式:可能会出现安全隐患,会创建多个对象package day25;public class Dk1Singleton { //单例设计模式 //类只能创建一个对象 public static void main(String[] args) { /*由于加入priva原创 2020-07-01 21:39:31 · 87 阅读 · 1 评论 -
Java设计模式-1.装饰设计模式(IO流)
package day21;public class Dk3Wrap { //装饰设计模式 //优点:耦合性降低,被装饰类可以被装饰也可以不被装饰,也可以选择其他的装饰 public static void main(String[] args) { ItcastStudent is = new ItcastStudent(new Student()); is.code(); }}interface Coder{ public void code();}class S原创 2020-07-01 21:38:06 · 82 阅读 · 0 评论 -
Java反射
1.反射机制反射三种实现方式:package day27;import day17.Person;public class Dk1Reflect { //反射 public static void main(String[] args) throws ClassNotFoundException { //第一种方式 Class clazz1 = Class.forName("day17.Person"); //第二种方式字节码对象 Class clazz2 = Perso原创 2020-07-01 21:36:02 · 68 阅读 · 0 评论 -
Java网络编程
端口号范围:0~65535,建议选择1024以上UDP:面向无连接,数据不安全,速度快,不区分客户端和服务器(有发送端和接收端)(发短信)TCP:面向连接(三次握手),数据安全,速度略低,分为客户端和服务器(打电话)1.UDPpackage day26;import java.io.IOException;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;im原创 2020-07-01 21:30:59 · 155 阅读 · 0 评论 -
Java多线程
线程就是程序执行的一条路径创建线程两种方式对比:继承Thread:可以直接使用Thread类中的方法,代码简单。但如果已经有了父类就不能使用这个方法(优先考虑)实现Runnable接口:有了父类也没有关系,父类也可以实现接口,而且接口可以多实现。但需要先获得Thread对象后,才能获得Thread方法,代码复杂两种方式源码对比:继承Thread:由于子类重写了Thread类的run()方法,当调用start()方法,直接找子类的run()方法实现Runnable接口:构造方法传入了Runn原创 2020-07-01 21:28:50 · 75 阅读 · 0 评论 -
JavaIO流-6.数据流
package day22;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;public class Dk4Data { public static void原创 2020-06-29 08:11:27 · 82 阅读 · 0 评论 -
JavaIO流-5.打印流
PrintStream既可以直接输出字符串print(),println()。也可以会根据编码表转换write()package day22;import java.io.BufferedReader;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;import java.io.InputStrea原创 2020-06-29 08:09:50 · 69 阅读 · 0 评论 -
JavaIO流-4.内存输出流
解决读取中文出现乱码问题,读取全部字节,可能会出现内存溢出package day22;import java.io.ByteArrayOutputStream;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;public class Dk2ByteArrayOutputStream { //解决读取中文乱码问题,在内存中创建文件大小的字节数组 public原创 2020-06-29 08:07:43 · 97 阅读 · 0 评论 -
JavaIO流-3.序列流
可以多个文件写入一个文件package day22;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.SequenceInputStream;import java.util.Enumeration;import java.util.Vector;publ原创 2020-06-29 08:05:16 · 61 阅读 · 0 评论 -
JavaIO流-2.字符流
字节流可以处理任意类型数据字符流只能处理纯文本字符流读取字符,就要先读取到字节数据,然后转换为字符,如果要写出字符,要把字符转成字节再写出去。拷贝纯文本字节流比字符流更好:操作纯文本的时候字符流在只读(一次读取一个字符)和只写(可以直接写出字符串(底层把字符转化为字节数组写出去了)表面不用转换,而字节流需要转化为字节数组)的时候好用。字符流拷贝非纯文本文件和拷贝纯文本文件是一样的,需要先将字节转换为字符,转换字符如果没有成功就会变成?,写出去的时候也写的是?package day21;im原创 2020-06-29 08:02:58 · 166 阅读 · 0 评论 -
JavaIO流-1.字节流
字节流可以处理任意类型数据字符流只能处理纯文本在创建对象时,new后面报错,不是大圆形错,是小方块的错,就是异常,ctrl+1抛出异常信息read()方法每次返回一个字节,为什么用int类型来接收?:因为字节输入流可以操作任意类型的文件,比如图片文件,底层都是以二进制形式存储的,如果每次读取返回byte,有可能读到中间的时候读到11111111(是byte类型的-1)程序遇到-1就不读了,后面的就读不到了,如果用int类型接收,会在11111111前面补上24个0,凑足4个字节,那么byte类型的-原创 2020-06-29 07:57:05 · 156 阅读 · 0 评论 -
Java-File类
File更应该叫做文件路径,或者文件夹路径package day18;import java.io.File;import java.io.FilenameFilter;public class Dk8File { //判断F盘目录下是否有后缀名.jpg的文件,如果有就输出该文件名称 public static void main(String[] args) { File ...原创 2020-03-23 15:08:49 · 51 阅读 · 0 评论 -
Java-异常
JVM如何处理异常:main函数收到问题后,有两种方式:自己将该问题处理,然后继续运行自己没有针对的处理方法,只有交给调用main的jvm处理jvm有一个默认的异常处理机制,就将该异常处理,就将该异常名称信息位置打印在控制台世界上最真情的相依,是你在Try,我在Catch,无论你发什么脾气,我都默默接受处理异常:编译时异常:未雨绸缪,要提前想到可能会发生什么事运行时异常:编译...原创 2020-03-23 09:41:22 · 57 阅读 · 0 评论 -
Java集合框架-5.Collections类
collections是集合工具类collection是单列集合的根接口package day18;import java.util.ArrayList;import java.util.Collections;import java.util.HashMap;import java.util.TreeSet;public class Dk5Poker { //模拟斗地主 ...原创 2020-03-22 15:55:25 · 81 阅读 · 0 评论 -
Java集合框架-4.Map
Map集合中的keySet()方法:package day18;import java.util.HashMap;import java.util.HashSet;import java.util.Iterator;import java.util.Set;public class Dk1KeySet { //通过KeySet()方法对hashset迭代 public st...原创 2020-03-22 15:49:58 · 59 阅读 · 0 评论 -
Java集合框架-3.Set
List:有索引,有序(存和取一致),可以重复Set:无索引,无序(存和取不一致),不可以重复 public static void demo1() { HashSet<String> hs = new HashSet<String>(); boolean b1 = hs.add("a"); hs.add("b"); hs.add("c"); ...原创 2020-03-20 17:58:10 · 84 阅读 · 0 评论 -
Java集合框架-2.List
//ListItorator是List特有的,Itorator也有List list = new ArrayList();list.add("a");list.add("b");list.add("c");list.add("d");ListItorator lit = list.ListItorator();while(lit.hasNext()){ ...原创 2020-03-19 12:12:24 · 145 阅读 · 0 评论 -
Java集合框架-1.Collection
数组弊端:长度固定,不能自动增长,所以有集合。对象数组的内存图解:基本数据类型存储的是值,引用数据类型存储的是对象的地址值数组和集合区别:数组可以存储基本数据类型,也可以存储引用数据类型,集合只能存储引用数据类型集合长度可变,可以根据元素增加而增长(增加原数组的1.5倍)//集合中Iterator迭代方法Collection c = new ArrayList();c.ad...原创 2020-03-19 12:09:52 · 64 阅读 · 0 评论 -
Java常见对象-7.时间类
package dk.day14;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;public class Dk3SimpleDateFormat { //计算出生多少天 public static void main(String[] args) th...原创 2020-03-15 20:35:03 · 235 阅读 · 0 评论 -
Java常见对象-6.正则表达式
package dk.day14;public class Dk1Regex { public static void main(String[] args) { //正则表达式判断qq号是否合法 String regex = "[1-9][\\d] {4,14}"; System.out.println("12345".matches(regex)); } ...原创 2020-03-15 13:13:55 · 101 阅读 · 0 评论 -
Java常见对象-5.包装类
基本数据类型不能创建对象并调用方法,如果有包装类就可以封装方法提供给我们使用Byte,Short,Integer,Long,Float,Double,Character//int转换为字符串int num = 100;String x = num + ""; //任何数据与字符串用+相连都会产生新的字符串String y = String.valueOf(num)...原创 2020-03-15 13:07:00 · 99 阅读 · 0 评论 -
Java常见对象-4.冒泡排序、选择排序、二分查找
//冒泡排序class Eg415MathDemo { public static void main(String[] args) { int[] a = {16,25,9,90,23}; System.out.println("排序之前的数组:"); printArray(a); for (int i = 0;i < a.length - 1 ;i++ ) ...原创 2020-03-15 13:02:01 · 139 阅读 · 0 评论 -
Java常见对象-3.StringBuffer类
//String转向StringBufferStringBuffer sb = new StringBuffer(“itcast”); //将string类型转化为StringBuffer类StringBuffer sb2 = new StringBuffer();sb2.append(“itcast”);//StringBuffer转向StringStringBuffer...原创 2020-03-15 12:47:25 · 60 阅读 · 0 评论 -
Java常见对象-2.Scanner类、String类
代码输入:scanner sc = new (alt + / 自动大写并导包)System.in是标准键盘输入流if(sc.hasNextInt()) { //判断是否是int数,还有double、string、…(返回的是boolean) int x = sc.hasNextInt(); ...原创 2019-12-16 08:55:04 · 58 阅读 · 0 评论 -
Java常见对象-1.Object类
API:应用程序编程接口(提供的类)Object类:类层次结构的根类,所有类直接间接继承该类。hashcode():返回该对象的哈希码值(地址值)getClass():返回该对象的运行时类toString():返回该对象的字符串表示,可以直接输出对象名为(类名@地址值),实际使用时往往重写该方法输出对象属性值public String toString() { return na...原创 2019-12-16 08:47:13 · 61 阅读 · 0 评论 -
Java-eclipse-基本设置
Eclipse和MyEclipse区别:Eclipse免费,MyEclipse收费MyEclipse在web开发提供强大的系统架构平台下载:http://eclipse.org/Eclipse解压就可以直接使用,不用安装。Eclipse不用自己编译,直接运行Eclipse快捷键:输入代码(main)(Syso)(Sca)(for)(if),再按Alt + / 就可以自动生成函数c...原创 2019-12-14 22:19:38 · 111 阅读 · 0 评论 -
Java面向对象-10.内部类
内部类可以直接访问外部类成员变量(包括私有)外部类必须通过创建对象才能访问内部类若内部类私有外部不能直接调用成员内部类(非静态)中不可以定义静态的成员静态成员内部类中可以定义静态方法(通过类名.调用)和非静态方法(创建对象调用)class Outer { public int num = 10; class Inner { public int num =...原创 2019-12-13 15:43:18 · 113 阅读 · 0 评论 -
Java面向对象-9.package、四种权限修饰符
为什么有包:将字节码文件(.class)分类存放多级包用.分开即可包名放在第一行,分号结束不同包下类与类之间的访问必须加public,方法也要有public访问关系本类同一个包下(子类和无关类)不同包下(子类)不同包下(无关类)privateY默认(空白)YYprotectedYYYpublicYYYY...原创 2019-12-13 15:38:47 · 123 阅读 · 1 评论 -
Java面向对象-8.接口
接口:狭义的角度讲就是java中的interface广义的角度讲对外提供规则的都是接口接口不能实例化,按照多态的方式来实例化接口的子类:可以是抽象类,但是意义不大可以是具体类,要重写接口中所有的抽象方法接口中所有的变量都是常量:public static final(这三个可以省略) int num = 10;接口中所有的方法都是抽象的,重写接口中的方法,权限是public...原创 2019-12-12 11:06:18 · 88 阅读 · 0 评论 -
Java面向对象-7.抽象、abstract
抽象类不一定有抽象方法,抽象方法(不用写一对大括号,写分号)一定存在在抽象类中。抽象类是不能实例化(创建对象)但是可以通过多态创建对象。抽象类的子类:要么是抽象类;要么重写抽象类中的所有抽象方法。抽象父类中的抽象方法:就是声明一种规则,强制子类重写。抽象类中的成员变量:既可以是常量,也可以是变量,子类可以直接调用。抽象类有构造方法:给子类进行初始化。抽象类的成员方法特性:抽象方法:...原创 2019-12-12 11:02:27 · 105 阅读 · 0 评论 -
Java面向对象-6.多态
多态:事物存在的多种形态Animal a = new Cat(); //父类引用指向子类对象a.eat(); //子类必须重写父类eat方法,才能多态调用/*多态的三个前提1.继承(继承抽象类,接口都可以)2.重写3.父类引用指向子类对象*//*多态中的1.成员变量:编译看左边父类,运行看左边父类(Fu f...原创 2019-12-11 11:25:34 · 115 阅读 · 0 评论 -
Java面向对象-5.重写、重载、final
当子类的方法出现和父类同名的方法叫做方法的重写(复写),若想访问父类的方法用super.方法名();但是必须放在子类重写的方法里。(语句必须写在方法里)方法重写注意事项:父类中私有方法不能被重写,因为父类私有方法子类无法继承子类重写父类方法时,权限大于等于父类父类静态方法,子类也必须通过静态方法进行重写(多态:静态覆盖静态)若子类比父类参数不同,则不叫重写,叫重载Override(...原创 2019-12-11 10:59:20 · 107 阅读 · 0 评论 -
Java面向对象-4.继承、this、super
extends继承:提高了代码的复用性提高了代码的维护性让类与类产生了关系,是多态的前提弊端:类的耦合性增强了开发的原则:高内聚(自己能做的自己做),低耦合java中类的继承特点:只支持单继承,不支持多继承(一个儿子只能有一个爹)支持多层继承(父、子、孙)如果想用这个体系的所有功能用最底层的类创建对象如果想看这个体系的共性功能,看最顶层的类继承注意事项:子类只能继...原创 2019-12-10 10:35:38 · 76 阅读 · 0 评论 -
Java面向对象-3.main、代码块
main主方法:class Main { public static void main(String[] args) { //new String[0] //int[] arr = new arr[0]; //String[] args = new String[0]; System.out.println(args.len...原创 2019-12-10 10:31:31 · 69 阅读 · 0 评论 -
Java面向对象-2.构造方法、static
构造方法:给对象的属性进行初始化,给其赋值,不用调用,一创建对象就执行。Student s = new Student(); //Student后面的括号就是指调用的构造方法,括号没有写参数就是默认调用空参的构造方法构造方法方法名与类名相同(大小写也要与类名一致)没有返回值类型,连void都没有没有具体的返回值,没有return构造方法的重载(加参数),创建对象就把参数写进去,...原创 2019-12-09 11:47:06 · 215 阅读 · 0 评论 -
Java面向对象-1.变量、private
创建对象:类名 对象名 = new 类名();Student s = new Student();调用属性的时候没有括号 s.name = “张三”;调用方法的时候有括号 s.study();成员变量和局部变量区别:成员变量:定义在类中,方法外。局部变量:定义在方法上,public void speak(int y){ } y为局部变量局部变量:定义在...原创 2019-12-09 11:39:16 · 336 阅读 · 0 评论