![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 56
范玖九
塞翁失马 安知非福。
展开
-
文件与目录的操作
File:文件操作类File是一个类,可直接实例化对象;File有两个构造方法:构造方法public File(String pathName)设置文件路径(常用)public File(String parent,String child))设置父路径和子路径文件中的方法方法作用boolean creatNewFile(...原创 2019-08-06 22:47:17 · 161 阅读 · 0 评论 -
java—容器(1)
(一)容器的概念创建命名的引用每次只能持有一个对象。但是在编程中,我们需要在任意时刻和任意位置创建任意数量的对象。为了解决这一问题,我们首先可以想到对象数组,对象数组可以保存多个对象,但是对象数组有固定的尺寸,而我们在写成程序时并不知道需要多少个对象,因此使用数组就会受限。为此,java实用类库中提供了一套相当完整的容器类来解决问题。其中基本类型是List,Set,Queue,Map。这些对...原创 2019-07-25 15:52:26 · 113 阅读 · 0 评论 -
java—ThreadLocal
(一)ThreadLocal的介绍与使用ThreadLocal介绍:(1)ThreadLocal用于提供线程局部变量。在多线程环境可以保证各个线程里的变量独立于其它线程里的变量。(2)ThreadLocal的作用和同步机制的作用相反,同步机制是为了保持数据的统一性(共享性),而ThreadLocal是为了保持每个线程里数据的独立性。(3)可以理解为ThreadLocal类型的变量,其在...原创 2019-08-02 15:51:20 · 167 阅读 · 0 评论 -
java—异常处理
(一)异常的概念异常情形:异常情形是阻止当前方法或者作用域继续执行的问题。异常情形与普通错误的区分抛出异常后发生的事情:(1)首先,同java中其他对象的创建一样,将用new在堆上创建异常对象;(2)然后,当前执行路径被终止(不能继续执行下去了),并且从当前环境中弹出对异常对象的引用;(3)此时,异常处理机制管理程序,并且寻找一个恰当的地方来继续执行程序。(这个恰当的地方...原创 2019-07-25 09:51:47 · 156 阅读 · 0 评论 -
包装类,装箱与拆箱,基本数据类型与String类型的转换
包装类就是将基本数据类型封装到类中。包装类的产生原因:使用Object类接收一切东西。(一)基本数据类型的包装类数值型包装类(Number的直接子类)数据类型对应包装类byteByteintIntegerlongLongshortShortfloatFloatdoubleDouble对象型包装类(Object的...原创 2019-07-17 18:54:18 · 469 阅读 · 0 评论 -
Object类详解
Object类是JDK默认提供的一个类。java中除了Object类,所有类都存在继承,默认会继承Object父类。所有类的对象都可以使用 Object 接收。Object 达到最高参数统一化。(一)Object类中的三个方法public Object()构造方法无参构造为子类服务public String toString普通方法取得对象信息publi...原创 2019-07-17 18:07:53 · 550 阅读 · 0 评论 -
java中Lambda表达式的使用
Lambda是JDK1.8推出的重要新特性。Lambda的使用格式:(1)方法中具有单行语句:(参数) ->单行语句;(2)方法中具有多行语句:(参数) ->{}使用Lambda时的要求:(1)在实现接口时使用;(2)接口必须只有一个方法,如果有两个方法,则无法使用函数式编程。(3)如果现在某 个接口就是为了函数式编程而生的,最好在定义时就让其只能够定义一个方法,所...原创 2019-07-29 12:32:59 · 120 阅读 · 0 评论 -
String、StringBuffer、StringBuilder 的比较
(一)StringBuffer的使用StringBuffer的字符串拼接方法public synchronize StringBuffer append(任意数据类型 sb)StringBuffer的append()方法可以任意修改字符串的内容。举例:public class StringBuffer的使用 { public static void main(String[]...原创 2019-07-17 13:15:37 · 76 阅读 · 0 评论 -
java—注解(Annatation)
(一)注解的介绍注解:(也被称为元数据),为我们在代码中添加信息提供了一种形式化的方法,使我们可以在稍后某个时刻非常方便的使用这些数据。注解在一定程度上是把元数据与源代码文件结合在一起,而不是保存在外部文档中。它们可以提供用来完整描述程序所需要的信息,而这些信息是无法用Java来表示的。注解是我们能够以将编译器来测试和验证的格式,存储有关程序的额外信息。注解的优点:更加干净易读的代码以...原创 2019-07-29 09:44:39 · 658 阅读 · 0 评论 -
java—枚举的使用(enum)
(一)枚举的介绍与使用在JDK1.5中添加了一个新特性,即 enum 关键字。使用enum关键字可以创建枚举类。枚举类型的实例是常量,按照命名规则使用大写字母。使用enum关键字定义的枚举类本质上就相当于一个Class定义的类,继承了java.lang.Enum父类。所有的枚举类默认继承于Enum类.创建enum时,系统会自动创建toString()方法,用来直接显示enum实例的名...原创 2019-07-28 23:25:36 · 357 阅读 · 0 评论 -
String类的方法使用(字符与字符串,字符串比较,字符串截取,字符串查找,字符串拆分,字符串替换等)
以下是关于String类中的方法总结:字符与字符串public class String类方法的使用 { public static void main(String[] args) { String str = "hello world hello China!"; //1.字符与字符串 //1.1 字符串->获取指定...原创 2019-07-16 19:51:25 · 665 阅读 · 0 评论 -
单例设计模式
单例设计模式 什么是单例?单例是指一个类只产生一个实例化对象。单例设计模式的要求单例模式要求类能够有返回对象一个引用(永远是同一个)和一个获得该实例的方法(必须是可见的静态方法,通常使用getInstance这个名称)。1)构造方法私有化,在main()方法中没有办法实例化,没有办法创建对象。2)设置私有的静态属性 instance(对象属性)3)使单例更彻底—+final4)提...原创 2019-07-18 10:38:52 · 62 阅读 · 0 评论 -
3--直接选择排序
3.选择排序思想:对于一组无序数字,每次选出一个最大值,将最大值放在当前无序数组的最后。选最大值的方法:定义一个最大值的下标,将初始最大值与当前无序数组中的数字依此比较,若遇到更大的值,最大值的下标改变,直到当前无序数组结束,将最大值与当前无序数组的最后一个元素交换位置,把最大值交换到后面。具体实现:遍历初始数组定义一个最大值的下标遍历当前无序数组,遇到比最大值大的元素,将最大值下...原创 2019-05-08 21:29:49 · 146 阅读 · 0 评论 -
2--希尔排序
2.希尔排序思想:希尔排序是插入排序的改进,将一组数字按照特定规则分成若干组,在每组中进行插入排序;将排完序后的数字重新进行分组,再进行插入排序;分的组数由大到小,直到最后将所有数字分成一组。分组规则:gap表分得的组数gap = array.lengthgap = (gap/3)+1具体实现:先分组,每组进行插入排序分的组数 = gap=array.lengthg...原创 2019-05-08 21:20:59 · 137 阅读 · 0 评论 -
1--直接插入排序
1.插入排序思想:对一组无序数字进行排序,每次取出一个数字进行插入排序, 已经排好序的数字为有序数组,剩下的数字为当前无序数组, 将每次取出的数字插入到有序数组的合适位置。具体实现:遍历无序数组,每次取出当前无序数组中的的第一个元素将取出的元素插入到有序数组中(1)遍历有序数组(从后往前遍历)(2)为当前元素找到合适的位置当前元素大于等于有序数组中的某个值时,遍历停止,即该元素找...原创 2019-05-08 21:19:15 · 270 阅读 · 0 评论 -
数据结构——判断链表是否是回文结构
对于一个链表,请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法,判断其是否为回文结构。给定一个链表的头指针A,请返回一个bool值,代表其是否为回文结构。什么是回文:正读,反读都一样的句子,字符串,数字串等例如:ABCBA,ABBA都是回文。思想:找到原链表的中间结点中间结点之后的所有结点形成一个新的mid链表;将mid链表反转,形成反转链表;对原链表 和反转链表...原创 2019-04-12 17:59:27 · 618 阅读 · 0 评论 -
java—Collection接口
(一)基本概念Collection:Collection是一个独立元素的序列(一种存放一组对象的方式)。这些元素都服从一条或多条规则。(1)List:必须按照插入的顺序保存元素;(2)Set:不能有重复元素;(3)Queue:按照排队规则来确定产生对象的顺序(通常与其被插入的顺序相同)。Collection接口是抽象的(所有的接口都是抽象类),不能直接实例化,只能利用其子类进行实例化。...原创 2019-07-25 17:02:33 · 151 阅读 · 0 评论 -
java容器的简单分类图
对简单容器进行分类:由图可以看到,实际上只有四种容器:Map,List,Set,Queueueue;常用的容器用红色粗线表示;点线框表示接口;实线框表示普通的类(具体的类);带有空心箭头的虚线表示一个特定的类实现了一个接口;带有实心箭头的许仙表示某个类可以生成箭头所指方向类的对象。...原创 2019-07-25 17:50:29 · 658 阅读 · 0 评论 -
文件拷贝
目的:把源文件中的内容拷贝一份至目标文件。思想:定义一个类完成所有的前提条件,和文件拷贝的具体内容;因为要把源文件的内容拷贝到目标文件,操作的是文件的内容,所以需要使用输入输出流,字节流使用范围比较广泛,此处使用字节流;字节输入流InputStream,字节输出流OutputStream;前提1:先从源文件中读取内容,此时要保证的是源文件必须存在,只有源文件存在才能从中读取内容...原创 2019-08-06 22:14:50 · 278 阅读 · 0 评论 -
java—线程同步处理(synchronized,ReentrantLock处理同步问题)
(一)同步问题不同步操作:当有多个线程启动时,所有的代码是依次进入到run()方法中的。真正进入到方法的对象可能是多个,也可能是一个。进入代码的顺序可能有差异,但是总体的执行是并发执行。线程不安全。同步操作所有的线程不是一起进入到方法中执行,而是按照顺序一个一个进来。线程安全。(二)synchronized处理同步问题同步代码块同步代码块在方法里面使用,也就是说依然可能有多...原创 2019-08-01 22:44:44 · 193 阅读 · 0 评论 -
java—多线程的常用方法(线程命名与获取,线程睡眠,线程让步,join()方法,线程停止,线程优先级)
1. 线程命名与获取2. 线程睡眠(sleep()方法)3. 线程让步(yield()方法4. join()方法5. 线程停止6. 线程优先级原创 2019-08-01 18:51:20 · 442 阅读 · 0 评论 -
覆写Object类中的equals()与hashCode()方法实现HashSet的重复元素判断
TreeSet的重复元素判断怎么实现TreeSet类可以实现Comparable接口并覆写compareTo()放啊完成重复元素判断与排序。但是HashMap与Comparable接口没有任何关系,因此可以覆写Object类中的equals()与hashCode()方法实现HashSet的重复元素判断。equals()与hashCode()方法hash码: public native in...原创 2019-08-08 09:37:31 · 287 阅读 · 0 评论 -
Comparable接口中的compareTo()方法实现TreeSet的重复元素判断与元素排序
TreeSet的重复元素判断依靠Comparable接口直接完成。TreeSet能够进行排序,实际上是对对象数组的排序,如果要对对象数组排序,对象所在的类需要继承Comparable接口并且覆写CompareTo()方法。如果使用Comparable接口进行大小关系匹配,所有属性必须全部进行操作。...原创 2019-08-08 09:06:03 · 466 阅读 · 0 评论 -
java—多线程实现的三种方式
继承Thread实现多线程(1)直接继承Thread类,覆写run()方法。(2)覆写run()方法之后,不能使用实例化对象直接调用。应该调用Thread类中的start()方法启动线程。public synchronized void start()此方法会自动调用线程的run()方法。(3)注意:每一个线程只能启动一次,若重复启动,会产生异常,但是是一个RuntimeExceptio...原创 2019-08-01 15:33:23 · 144 阅读 · 0 评论 -
java—泛型
(一)泛型的基本概念泛型指的就是在类定义的时候并不会设置类中的属性或方法中的参数的具体类型,而是在类使用时再进行定义。如果要想进行这种泛型的操作,就必须做一个类型标记的声明。泛型只能接受类,所有的基本数据类型必须使用包装类(二)泛型类泛型类的基本语法:class MyClass< T > {T value1;}注意事项:(1)尖括号 <> 中的...原创 2019-07-27 19:28:32 · 148 阅读 · 0 评论 -
java—可变参数和foreach循环
(一)可变参数可变参数存在的意义:处理在方法中使用任意多个参数的问题。当有多个同类型的参数的时候,我们最常见的是使用数组,但是数组长度固定,具有一定的限制,现在在JDK1.5之后,出现了一种新的特性:可变参数。可变参数的使用像数组一样,但是没有参数个数的限制。可变参数的格式:public [static] [final] 返回值 方法名称([参数类型 … 参数名称]){}可变参数中使...原创 2019-07-27 18:38:51 · 1431 阅读 · 0 评论 -
java—进程与线程的区别
进程:操作系统内一个程序的执行周期。单进程:在一个时间段只有一个程序执行。多进程:在一个时间段有多个程序执行。线程:一个程序中有多个任务,每一个任务就是一个线程。线程的应用:一个服务器接收多个并发请求。高并发:访问的线程量非常非常高。高并发带来的问题:服务器内存不够用,无法处理新的请求。进程与线程的联系:没有进程就没有线程,进程一旦终止,其内的线程也将不复存在。多进程与多线程区别...原创 2019-08-01 14:39:22 · 109 阅读 · 0 评论 -
java—生产者与消费者模型
生产者与消费者模型生产者消费者模式是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接通讯,而通过阻塞队 列来进行通讯,所以生产者生产完数据之后不用等待消费者处理,直接扔给阻塞队列,消费者不找生产者要数据,而是直接从 阻塞队列里取,阻塞队列就相当于一个缓冲区,平衡了生产者和消费者的处理能力。 这个阻塞队列就是用来给生产者和消费者解耦的。纵观大多数设计模式,都会找一个...原创 2019-08-04 21:37:35 · 165 阅读 · 0 评论 -
java—使用反射对类进行操作(Class对象获取类名,包名,父类,接口,构造方法,普通方法,属性)
(一)Class对象获取类名,包名,父类,接口前提条件:有两个接口IMessage,SystemEdition一个父类Father一个子类Son继承父类,实现两个接口IMessage,SystemEditionpackage www.fanfaninterface IMessage{}interface SystemEdition{}class Father{}...原创 2019-07-31 19:31:43 · 5182 阅读 · 1 评论 -
java—栈和队列
(一)Stack栈栈 通常是指“后进先出”(LIFO)的容器栈 中常用的一些方法方法作用push(E e)压栈peek()返回栈顶元素pop()出栈举例1:package www.fanfan.com;import java.util.Stack;public class StackDemo { public static v...原创 2019-07-26 20:49:08 · 210 阅读 · 0 评论 -
对象在不同位置的初始化
我们知道类中局部变量必须初始化,成员变量可以自动初始化,对象引用可以被自动初始化为null,但是此时引用不能调用任何其他方法。因此要想使用引用的时候就必须进行初始化。可以在以下四个位置进行初始化:在定义对象的时候(即定义对象引用的时候),它们总是在构造方法被调用之前使用。在类的构造方法中实例化。使用实例初始化。惰性初始化。(在使用这些对象之前初始化)在生成对象不值得或不必要...原创 2019-07-22 22:14:43 · 169 阅读 · 0 评论 -
java—反射之Class对象的三种获取方式,通过反射创建类的实例化对象
(一)对反射的认识反射:对对象的反向处理,通过对象获取对象的来源信息(即可以知道这个对象是通过什么类型实例化出来的)。通过对象获取创建对象的类型信息。对类型(类)的一个抽象,就是JDK中的Class类;Class也是一个类,用来描述其他类的信息。(二)Class对象的三种获取方式序号方式1通过对象的getClass()方法获取Class对象。2通过类名...原创 2019-07-31 12:47:52 · 3969 阅读 · 0 评论 -
java—迭代器(Iterator,ListIterator及其使用)
(一)迭代器的介绍迭代器存在的意义:使用容器,必须对容器的确切类型进行编程。若遇到这种情况:原本是对List进行编码的,但是后来发现能够把相同的代码应用于Set,将会非常方便。此时问题就是如何不重写代码就可以应用于不同类型的容器。—使用迭代器就可以达到这个目的。迭代器是一个对象,它的原理是工作并选择序列中的对象,而客户端程序员不必知道或关心该序列底层的结构。迭代器通常被称为轻量级对象,创...原创 2019-07-26 10:13:49 · 1481 阅读 · 1 评论 -
java—List接口
(一)List的简单介绍List接口实现了Collection接口,在Collection的基础上添加了大量的方法,使得可以在List的中间插入和移除元素。有两种类型的List(1)ArrayList:在List的插入和移除元素时较慢(2)LinkedList:通过较低的代价在List中间进行插入与删除操作,提供了优化的顺序访问。但是随机访问方面比较慢。特性集较ArrayList更大。...原创 2019-07-25 21:44:03 · 137 阅读 · 0 评论 -
数据结构——返回链表中的倒数第k个结点
输入一个链表,输出该链表中的倒数第k个结点。思想:双引用遍历,定义两个引用p1,p2,第一个引用比第二个引用先走k步,则p1,p2一直相差k个结点,当p1遍历结束时,p2就是倒数第k个结点。注意存在该链表中可能根本就没有k个结点的情况,此时返回空。具体实现:如果链表为空,直接返回null;定义变量(1)定义变量 cur 表示当前变量;cur = head;(2)进行双引用遍历...原创 2019-04-12 16:49:19 · 391 阅读 · 0 评论 -
数据结构——分割链表
编写代码,以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前。给定一个链表的头指针 ListNode* pHead,请返回重新排列后的链表的头指针。注意:分割以后保持原来的数据顺序不变。思想:1.遍历原链表,将小于 x 的结点尾插到一个新的链表中,将大于 x 的结点尾插到另一个新的链表中;2. 将两个新链表连接起来就是重新排列后的链表。具体实现:如果原链表...原创 2019-04-12 16:24:32 · 456 阅读 · 0 评论 -
java—继承
继承的定义与使用(一)继承的定义与使用继承使用extends关键字A 继承 B——A extends B——A是子类,B是父类。继承是在已有类的基础上进行扩展,不是对原有的类进行修改。遵循开闭原则:对修改关闭,对扩展开放。这也是面向对象的一个封装特性 ,不去修改类,只是扩展类。子类能不能访问访问父类,取决于修饰符。对于父类中的私有属性,不能直接访问,要通过get方法访问...原创 2018-11-20 16:26:20 · 151 阅读 · 0 评论 -
JAVA——this 关键字
this关键字的介绍(一)this调用本类属性· 通过this关键字可以明确的去访问一个类的成员变量,解决与局部变量名称冲突问题。举例如下:class Person2{ //方法 private String name; //构造方法 //参数名(即局部变量)与属性名(即成员变量名)相同, //为了加以区分,属性名前加 this,用于访问属性变量 public Person...原创 2018-11-12 20:24:30 · 346 阅读 · 0 评论 -
java—构造方法
构造方法:实现在实例化之后为属性赋值;构造方法是类的一个特殊成员,在类实例化后被自动调用。(一)构造方法的定义一,构造方法满足以下三个条件:方法名与类名相同;在方法名前没有返回值类型的说明;在方法中不能使用return语句返回一个值,但是可以单独写return语句作为方法的结束。二,关于构造方法的使用:若没有定义构造方法,系统会自动提供一个默认的构造方法。若是定义了构造方法...原创 2018-11-12 19:20:44 · 1924 阅读 · 0 评论 -
java—private封装
private关键字 · private用来修饰属性; · 使用private修饰之后,内部操作对外部不可见;即私有属性只能在它所在类被访问,外部类不能直接访问 · 对象不能直接操作属性; · 使用private修饰之后,访问私有属性可以私用以下两种方法: 1,setter 方法:主要用于进行属性内容的设置与修改 。2,getter方法:主要用于属性内容的获取 。setter...原创 2018-11-12 18:14:05 · 365 阅读 · 0 评论