java
不想起名的筱祎
这个作者很懒,什么都没留下…
展开
-
Java面向对象特性_继承 ——恋天小结
继承的概念继承是从已有的类中派生出新的类,新的类能吸收已有类的属性和行为,并能扩展新的属性和行为。Java继承特点1)Java是单继承的,不支持多继承。这样使得Java的继承关系很简单,一个类只能有一个父类,易于管理程序。同时一个类可以实现多个接口,从而克服单继承的缺点。java 中只支持单继承,并且是链式继承(爹不能再继承儿子)2)继承关系是传递的3)private修饰的成员变量或方法是不能被继承的继承目的提高代码的效率,避免代码重写语法格式【修饰符】 class 子类 exten原创 2020-08-15 12:06:02 · 99 阅读 · 0 评论 -
Java_Integer(包装类) ——恋天小结
包装类byte Byteshort Shortint Integerlong Longfloat Floatdouble Doubleboolean Booleanchar Character八种包装类 都在java.lang 下,意味着 使用不需要导入另外 都覆写了 toString 和 equals方法等八种包装类操作几乎一致,所以我们以Integer为例public static void main(String[] args) { System.out.println("原创 2020-08-15 12:05:32 · 183 阅读 · 0 评论 -
Java_Enumeration(枚举) ——恋天小结
枚举Enumeration枚举类型,简单来说,可以看做是常量的集合什么时候用枚举当我们需要一系列有限的值的时候,并且用的比较多,可以使用枚举使用枚举有什么好处写枚举的话,更容易发现错误,在编译器会对类型进行检查,从而减少错误可以替代常量定义,自动实现类型检查,便于维护、编程,减少出错概率由class 变为 enum介绍枚举类型是Java 5新增的特性,它是一种新的类型枚举类型的定义中列举了该类型所有可能值使用java.lang.Enum类型来定义枚举语法格式[修饰符] enum原创 2020-08-15 12:05:14 · 202 阅读 · 1 评论 -
Java_Map转List ——恋天小结
Map转为list 并且 以 value进行排序public static void main(String[] args) { Map<String,Integer> map = new HashMap<String,Integer>(); map.put("a", 1); map.put("b", 2); map.put("c", 1); map.put("d", 12); //因为map中存储的是entry,所以想要把map转换为list,那么l原创 2020-08-13 21:28:30 · 300 阅读 · 0 评论 -
Java_泛型 ——恋天小结
泛型类型检查编译过程中,检查数据类型是否匹配定义集合实际上和数组一样,只能存储统一数据类型,只不过这个类型是Object,所有元素都会发生向上转型,所以导致什么都能放泛型不能使用基本数据类型,只能使用引用数据类型转型为多态之后,子类的属性就访问不到了,想要使用,必须向下转型,很麻烦优缺点优点 : 统一类型,减少类型转换缺点 : 只能存储单一类型的元素public class Collection_18_Generic_01 { public static void main(Strin原创 2020-08-13 21:28:15 · 284 阅读 · 0 评论 -
Java_HashMap和TreeMap ——恋天小结
HashSetHashMapMap无序可重复 value可重复 , key不可重复Map和Collection集合不一样,但是操作都是类似的put(key,value) 添加数据clear()size()isEmpty();get(key) 根据key 获取value值values() : 获取所有的value,以集合形式返回containsKey(key)containsValue(value)keySet() 获取所有key,以set形式返回entrySet() 获取键值对,原创 2020-08-13 21:27:58 · 81 阅读 · 0 评论 -
Java_HashSet ——恋天小结
HashSetHashSet哈希表又叫散列表,用来保存键值对(key,value), 就是一个数组中,每个元素都是一个单向链表根据添加元素的hash值,通过hash算法,就能够确定要把元素添加到哪个链表中hash算法一种安全加密算法,把不定长的值,更改为定长的值,不能保证其值的唯一性java中指的是 hashCode()函数算法包括1 直接寻址法2 数字分析法3 平方取中法4 随机数5 除数取余法目标给每个对象生成一个唯一的标识符目的为了查询快,hash值是一个固定的值,整原创 2020-08-12 20:09:19 · 102 阅读 · 0 评论 -
Java_Comparable 和 Comparator ——恋天小结
想要让TreeSet集合中元素进行排序 有三种方式1要添加的元素对应的类实现java.lang.Comparable接口,并实现compareTo方法2 让SortedSet集合做到排序还有一种方法,java.util.Comparator比较器类3 写一个匿名内部类 ,还是 java.util.Comparator默认的一些类型中,都实现了比较器,比如Date,String,Integer等等所以 我们自定义类一个数据类型的时候(类),当需要对这个类对象进行排序,就需要我们自定义比较器,用于比较原创 2020-08-12 20:09:06 · 97 阅读 · 0 评论 -
Java_set_TreeSet ——恋天小结
set特点1. Set是一个无序集合,既存入集合的顺序和取出的顺序不一致2. Set集合中元素不重复TreeSetTreeSet是SortedSet的唯一实现类,保存的元素可以按照某种规则自动排序数字:从小到大日期:自然日期(昨天,今天,明天)字符串:每一位的ASCII码值public static void main(String[] args) throws ParseException { SortedSet ss = new TreeSet(); ss.add(1);原创 2020-08-12 20:08:51 · 79 阅读 · 0 评论 -
Java_List_LinkedLIst ——恋天小结
链表链表中保存节点,节点中有三个元素,自身对象(添加的元素),下一个节点的地址,上一个节点的地址LinkedList就是基于双向链表实现的链表是没有下标的,所以查询慢, 当然我们可以通过 get方法 使用下标找到数据但是get方法中,也是通过循环,从首节点一步步向后找的,不像ArrayList,底层是数组,有下标,可以直接数组[下标],可以参考源码public static void main(String[] args) { LinkedList li = new LinkedList();原创 2020-08-12 20:08:32 · 222 阅读 · 0 评论 -
Java_List_ArrayList ——恋天小结
ListList元素的特点 有序可重复,存入顺序和取出顺序一致,并且可以有多个重复元素ArrayList : 底层是数组 , 查询快,增删慢LinkedList : 底层是双向链表 , 增删快,查询慢ArrayList默认初始化容量是10 , 扩大容量是原始容量的1.5倍veator : 默认容量是10,扩大容量是2倍ArrayLList是veator的升级版,所以vector已经废弃vector是线程安全,执行效率低ArrayList是非线程安全,执行效率高public static原创 2020-08-12 20:08:19 · 69 阅读 · 0 评论 -
Java_boolean contains ——恋天小结
删除和判断是否包含boolean contains(Object o)判断是否包含某个元素,底层会自动调用该对象的equalsc.contains(m1)m1调用equals方法,和集合中的元素进行比较,boolean remove(Object o)删除集合中某个元素 也会调用 equals方法进行比较所以 我们再使用 remove和contains的时候,注意覆写equals方法,因为删除和判断是否包含是需要通过equals方法定位元素的但是 Object中的equals方法默认比较内存原创 2020-08-12 20:08:08 · 1137 阅读 · 0 评论 -
Java_Interator迭代器 ——恋天小结
Interator 迭代器Iterator it = 集合对象.iterator();调用集合对象自己的iterator() 就能创建这个集合的迭代器迭代器中有三个方法1 boolean hasNext() : 判断当前游标的下一位是否还有元素,有就返回true,没有就返回false2 E next() : 将迭代器的游标向下移动一位,并返回这个数据3 remove() : 删除当前游标指向的元素原则上,上面三个方法必须按照这个顺序调用注意迭代器一旦创建,集合中不能添加或删除元素,如果添加原创 2020-08-12 20:07:50 · 201 阅读 · 0 评论 -
Java集合介绍 ——恋天小结
Java集合是使程序能够存储和操纵元素不固定的一组数据。 所有Java集合类都位于java.uti包中。Java的集合类主要由两个接口派生而出:Collection和Map。Collection和Map是Java结合框架的根接口,这两个接口又包含了一些子接口或实现类Collection类是最大的,也就意味着,Collection中定义的方法规定是List和Set都有的集合中 只能存储单个元素,并且只能保存引用数据类型,保存Object能放Object 就意味着什么都能放,因为多态Collectio原创 2020-08-12 20:07:37 · 82 阅读 · 0 评论 -
Java_Date ——恋天小结
public static void main(String[] args) { //时间原点到当前时间毫秒数 long now = System.currentTimeMillis(); System.out.println(now/1000/60/60/24/365); }public static void main(String[] args) { //获取当前系统的时间 Date date = new Date(); System.out.println(date)原创 2020-08-10 08:34:12 · 68 阅读 · 0 评论 -
Java_StringBuffer和StringBuilder ——恋天小结
StringBuffer和StringBuilder1 StringBuffer和StringBuilder是什么?是可变的字符串缓冲区2 原理预先在内存中申请一块空间,用来容纳字符序列(字符数组) 如果预留空间不够的话,会自动扩容3 String和 StringBuffer以及StringBuilder最大的区别String是不可变的字符序列,存储在字符串常量池中StringBuilder和StringBuffer是可变的,底层也是char数组,并且可以自动扩容4 StringBuff原创 2020-08-10 08:33:57 · 72 阅读 · 0 评论 -
Java_String ——恋天小结
Stringjava.lang.String 是字符串它的底层是一个字符数组,所以它的很多特性就是数组的特性1 字符串一旦被创建,这个字符串对象就不可以更改了2 为了提升字符串的访问效率,java虚拟机采用了一种缓存的技术,String是一个引用数据类型,那么String的值应该保存在堆内存吧?但是字符串不一样,字符串对象都会在静态区有一个字符串常量池3 在程序执行中,如果程序要用到某一个字符串,比如(“abc”),虚拟机首先会去字符串常量池中搜索,有没有这个字符串,如果已经有了,就直接指向这原创 2020-08-10 08:33:39 · 99 阅读 · 0 评论 -
Java异常机制_自定义异常类 ——恋天小结
自定义异常类异常也是个类,所以我们也可以自己自定义一个异常每个项目都会有一个自定义异常,来完成自己的异常提醒那么对于这个异常自己肯定要有个判断,是编译时异常 还是运行时异常如果是运行时异常,一般继承RunTimeException比如 : NullPointerException , 数组越界 , 类型转换异常等 一般是因为程序员粗心导致的错误如果是编译时异常,一般继承Exception比如 : IOException , FileNotFoundException 等,需要在编译阶段进行处原创 2020-08-10 08:33:22 · 125 阅读 · 0 评论 -
Java异常机制_1.7改进 ——恋天小结
1.7改进有两个改进1 多个异常可以再一个catch中同时捕捉, 使用 | 隔开2 自动关闭资源try(开启资源语句){ 操作; }catch(异常类型 变量){ 处理代码; }public class Exception_10 { public static void main(String[] args) { // 传统关闭资源写法 FileInputStream fis = null; try { fis = new FileInputStream("D:/123.tx原创 2020-08-10 08:32:46 · 107 阅读 · 0 评论 -
Java异常机制_finally ——恋天小结
finally语句块必须执行的语句块,有必须要执行的代码,可以放到finally中有时候我们需要在程序出错的情况下,有些代码必须执行,比如 开启的资源1 finally语句块可以直接和try使用,也可以和try…catch…使用,但是不能单独使用2 finally语句块一定会执行,有两种情况不会执行1 编译时异常,编译有错,压根不能运行,更别提代码了2 System.exit() : 运行起来之后,这个finally唯一一种不执行的情况,这个等于直接关闭虚拟机不管程序是否出错,finally都原创 2020-08-10 08:32:28 · 91 阅读 · 0 评论 -
Java异常机制_throws ——恋天小结
throws : 一般用在类库端throws : 抛异常,一般用于类库端,并不能解决问题,依然会终止程序生命周期执行throws 异常,这种方式并不会处理异常,只是一种提醒机制,告诉调用人员,这里肯能有问题如果上家提醒了你,要么你就使用try…catch…解决,要么你就提醒下家public class Exception_03 { public static void main(String[] args) throws FileNotFoundException { m1(); Sy原创 2020-08-10 08:32:06 · 205 阅读 · 0 评论 -
Java设计模式_设计模式_工厂模式 ——恋天小结
工厂模式概念把创建对象的语句,封装到一个类中 ,形成工厂模式把类和类之间的强依赖关系变弱,灵活度更高public class Factory_01 { public static void main(String[] args) { // 队友 // fight(new ZhuanTou()); // fight(new ZhuanTou()); // fight(new ZhuanTou()); // fight(new ZhuanTou()); /原创 2020-08-10 08:31:41 · 73 阅读 · 0 评论 -
Java异常机制介绍及try...catch... ——恋天小结
异常机制异常就是错误的另外一种说法性质鲁棒性就是系统的健壮性异常分两种编译时在执行javac命令出错,是编译时在eclipse中 没有运行 就报错,就是编译时运行时执行java命令出错,是运行时在java中有一个专门模拟所有异常和错误的类(Throwable) 所有的异常类都必须继承这个类try…catchtry…catch…: 一般用在客户端语法 :try{ 高风险代码; }catch(异常类型 变量){ 错误的处理机制; }使用try…catch…不原创 2020-08-10 08:31:51 · 125 阅读 · 0 评论 -
Java设计模式_单例模式 ——恋天小结
设计模式定义:就是在编码实践中,人们发现很多的编码方式会经常用到,于是就总结出来,形成了固定的结构,叫做设计模式单例模式意义在需要多次初始化同一个对象的应用程序中,为了保证初始化对象只有一个,以达到节约内存的目的目的实例化多次,得到同一个对象,让某个类只能被实例化一次实现步骤1 构造方法私有化2 创建一个公共的静态方法,用来返回当前类的实例化对象,并且保证只实例化一次3 创建一个用于存储对象的静态变量(这个变量的类型一定是当前类类型)根据对象的创建时机的不同,分为两种1 在类加载阶段原创 2020-08-10 08:31:22 · 79 阅读 · 0 评论 -
Java面向对象_内部类(innerClass) ——恋天小结
内部类概念 在类体中编写的类作用 可以访问外部类私有化数据变量 成员变量 --- 普通内部类/成员内部类 静态变量 --- 静态内部类 局部变量 --- 局部内部类 形参和实参变量 --- 匿名内部类分类1 成员内部类 1 成员内部类可以看做成员变量 2 成员内部类中不能有静态声明 3 成员内部类中可以直接访问外部类所有的数据 4 类体中没有static修饰的类是成员内部类 注意 成员内部类中原创 2020-08-09 10:47:56 · 111 阅读 · 0 评论 -
Java面向对象_ 类关系 ——恋天小结
类关系1 继承使用extends表示类A extends 类B接口A extends 接口B,接口C类和类是单继承,接口和接口是多继承2 实现 implements类A impeachments 接口B,接口C类和接口是多实现3 依赖 某个类的方法中的局部变量,是另一个类对象的引用 这种关系是临时性的,方法执行结束,关系就不存在了4 关联 某个类的成员/静态变量是另一个类对象的引用 这个关系一般是长期性的5 聚合原创 2020-08-09 10:43:24 · 78 阅读 · 0 评论 -
Java面向对象_Object_toString ——恋天小结
toString设计目的返回这个对象的字符串表示形式,客户以把对象的属性值都展示给外界Object中的toString方法,默认打印名字和地址输出一个引用数据类型的时候 会自动调用该对象的toString方法思考 : 既然输出引用数据类型的时候会调用该对象的toString方法,那么 如果输出一个为null的引用类型呢?// toString是成员方法,使用null值调用成员方法会报空指针异常// 但是 输出语句中 使用String.valueOf()方法, 利用三目运算符,解决了空指针的问题原创 2020-08-09 10:41:40 · 110 阅读 · 0 评论 -
Java面向对象_Object_hashCode ——恋天小结
hashCode设计目的是为了给每个对象生成一个唯一的标识符hashCode方法是根据hash算法得到一个唯一的值hash算法 : 是一种安全的加密算法,把不定长的值 改为定长的值,并不能保证唯一性1 直接寻址法2 数字分析法3 平方取中法4 随机数5 除数取余法同一个对象 生成两次或多次值, 结果都一样但是 不同的对象 生成的值 也有可能相同 , 这叫哈希冲突public class HashCode_01 { public static void main(String[]原创 2020-08-09 10:40:07 · 112 阅读 · 0 评论 -
Java面向对象_Object_finalize ——恋天小结
finalize什么时候调用 ?1 finalize方法是每个java对象都有的 2 不需要程序员调用,由系统自动调用 3 当一个垃圾对象被回收之前,会自动调用该对象的finalize方法 什么是垃圾? 没有更多引用指向这个对象的时候,该对象被视为垃圾数据 4 finalize方法 并没有回收垃圾的功能,比如我们手动调用这个方法,这只是一个成员方法调用而已,不会被回收原创 2020-08-09 10:38:35 · 164 阅读 · 0 评论 -
Java面向对象_Object_equals ——恋天小结
ObjectObject是所有类祖类,是Java提供的根类如果一个类没有显示继承另外一个类的话,该类默认继承Object所有类都会直接或者间接的继承Objectobject中的方法,是所有对象都有的方法equals设计目的为了比较两个对象是否相等,是否是同一个对象Object中的equals方法默认比较内存地址,需要我们根据自己的需求进行方法重写,如果两边是引用类型,就会比较内存地址是否相等两个对象可以是任何东西,但是我们肯定要拿两个对象的有意义属性进行比较,所以这个时候,我们需要将两个原创 2020-08-09 10:37:08 · 107 阅读 · 0 评论 -
Java面向对象_import ——恋天小结
Import引入 util下所有类import java.util.静态引入,访问一个类的静态属性的时候,需要用类名调用静态引入之后,可以直接使用这个属性/方法即可 m1() 不需要再加类名import static _05_Package.com.zrz.Bimport用于引入其他类到当前类中import语句 必须在package语句之下.class语句之上java.lang. : lang下所有的类,都是系统核心类,使用的时候 不需要引入...原创 2020-08-09 10:33:17 · 91 阅读 · 0 评论 -
Java面向对象四大特性_抽象 ——恋天小结
抽象(abstract)抽象类就是使用abstract修饰的类目的:让类不能被实例化,只能用于继承继承 抽象的类 类,必须实现抽象类中的所有抽象方法,实现就是把abstract去掉并且加上{},如果没有全部是按,那么这个子类也需要用abstract修饰一个普通类,继承一个抽象类,需要实现所有的抽象方法一个抽象类,继承一个抽象类,需要实现0~N个抽象方法含有抽象方法的类,一定是抽象类,是正确的抽象类中,一定含有抽象方法,是错误的没有抽象方法,为什么还要声明为抽象类呢?就是为了不让类实原创 2020-08-09 10:30:49 · 115 阅读 · 0 评论 -
Java面向对象四大特性_多态 ——恋天小结
多态软件设计六大原则 1 单一职责原则 : 功能职责单一,只拥抱一种变化 2 里氏替换原则 : 所有在使用父类的情况下,都可以使用子类替换 3 依赖倒置 : 通过高层的抽象依赖底层,细节依赖抽象 4 接口隔离原则 5 迪米特原则 6 开闭原则 : 对扩展开放,对修改关闭多态前提条件 有继承关系多态的几种形式 1 局部变量/成员变量 : 声明的时候 使用父类声明,赋值的时候,使用子类对象 2 实参/形参 : 参数列表使用父类声明变量,方法调用时传入子类对象原创 2020-08-09 10:27:04 · 135 阅读 · 0 评论 -
Java面向对象四大特性_继承 ——恋天小结
概念继承是从已有的类中派生出新的类,新的类能吸收已有类的属性和行为,并能扩展新的属性和行为。Java继承特点1)Java是单继承的,不支持多继承。这样使得Java的继承关系很简单,一个类只能有一个父类,易于管理程序。同时一个类可以实现多个接 口,从而克服单继承的缺点。java 中只支持单继承,并且是链式继承(爹不能再继承儿子)2)继承关系是传递的3)private修饰的成员变量或方法是不能被继承的解决什么问题提高了代码的效率,避免了代码重写继承的目的代码复用语法格式[修饰符原创 2020-08-09 10:13:51 · 134 阅读 · 0 评论 -
Java面向对象四大特性_封装 ——恋天小结
封装的概念把对象的所有组成部分组合在一起,使用访问控制修饰符将数据隐藏封装的作用适当的封装可以使代码更容易理解和维护,也加强了代码的安全性package决定当前文件的编译和运行package设置的是编译之后的class文件保存的目录,和源文件没有关系 如果没有指定package语句 生成class文件的目录就和源文件目录一致(在同一目录下) 在eclipse中 源文件必须也在这个目录下,这是eclipse编译器的功能,和java无关软件包机制:1 为了解决命名冲突问题2 j原创 2020-08-04 21:08:20 · 147 阅读 · 0 评论 -
Java面向对象.Static ——恋天小结
Static介绍static关键字可以修饰三个东西1 静态变量2 静态方法3 静态语句块/静态代码段静态代码段 :static修饰的代码段叫静态代码段语法:static{ java代码; }静态代码段:执行是在类加载阶段执行,并且从上往下执行,只执行一次访问一个类的静态属性的时候,类会被加载动态代码段:实例代码段...原创 2020-08-04 21:00:01 · 91 阅读 · 0 评论 -
Java面向对象.This ——恋天小结
This定义定义this是每个对象中,保存自身内存地址的一个引用类型的成员变量this就表示这个对象自己this不能出现在静态上下文中,只能出现在成员方法中用哪个对象调用的成员方法,那么成员方法中的这个this 就表示哪个对象This用法用法1 this用在成员方法中,方便区分同名的成员变量和局部变量同名的静态变量和局部变量用类名来区分同名的成员变量和局部变量用this来区分int year; int month; int day; public MyDate(int year,原创 2020-08-04 20:57:44 · 118 阅读 · 0 评论 -
数组简单应用——二分法(附加与传统算法的对比)——恋天小结
package ArrayUse;/** * 当数据过大的时候,想要查找某个数据,并不是一件容易的事,尤其是我们要找的数据可能在最后几条 * 如果一次比较数据,效率太低 * * 1 必须建立在已经排序的基础上 * 2 没有重复数据 * * 算法实现: * 1 确定数据的开始位置和结束位置 * 2 确定数据的中间位置,判断中间位置元素是否是目标数据,如果是,就直接返回中间数据对应的下标 * 3 如果不是,分为两种 * 1 目标数据大于中间数据 * 起始值 = 中间值 +原创 2020-08-04 17:43:09 · 88 阅读 · 0 评论 -
数组简单应用——选择排序法——恋天小结
package _03_ArrayUse;/** * 1 每次都把当中最小的放在最左边 * * 2 先拿出第一个元素,假设这个元素是最小的元素,然后挨个和后面所有比较,全部比较完之后,如果有比第一个小的 * 就交换位置,把这个最小的放在第一位 * * 3 交换需要临时变量 */ ...原创 2020-08-03 08:58:40 · 110 阅读 · 0 评论 -
数组简单应用——冒泡排序法——恋天小结
package ArrayUse;/** * 冒泡排序 * 1 比较相邻的两个元素,如果第一个比第二个大就交换位置 * 2 对每一对相邻的元素做相同的工作,从第一队一直比较到最后一对,比较一轮结束后,最后一个元素一定是最大的 * 3 针对所有元素,重复上面的步骤,除了最后一个元素 * 4 持续循环中,比较次数越来越少,一直剩下一个数据(没有一对了,只有一个了),比较结束 * * 实现: * 1 嵌套循环,因为循环一次只能查询处一个最大或者最小 * 2 因为每次循环之后,最后一个不需要比原创 2020-08-03 08:58:26 · 98 阅读 · 0 评论