Java
moomin的小粉丝
姜饼的学习记录
展开
-
刷题常用Java复习
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar原创 2020-07-19 07:27:03 · 207 阅读 · 0 评论 -
成员内部类Inner Classes
成员内部类寄生在外部类中,因此可以访问外部类的所有成员和方法而不受修饰符限制。因为内部类是通过实例引用来和外部类建立关系的,成员内部类的成员和方法不能用static修饰。内部类可以用private修饰,而外部类是不能使用private修饰的。如果内部类仅仅在类内部使用时,使用private修饰后,就可以更好的隐藏内部信息。public class Outer{ private int num...原创 2019-04-27 11:08:14 · 153 阅读 · 0 评论 -
局部内部类Local Classes
局部内部类一般定义在一个方法或者一个作用域中,其作用域也只能在该方法或作用域中,可以无限制调用外部类的方法和属性。局部内部类就像是方法里面的一个局部变量一样,是不能有public、protected、private以及static修饰符的,但能使用abstract定义为一个抽象类。为保证数据一致性,内部类只能访问被final修饰的局部变量。在JDK8以后可以不用加(effectively fin...原创 2019-04-27 15:04:54 · 181 阅读 · 0 评论 -
静态内部类Static Classes
静态内部类就是用static修饰的内部类,因其不依赖于外部类,静态类的实例化不需要通过外部类实例。不同于内部类,静态类中没有保存外部类指针,因此对外部类成员的访问有限制,只能访问外部类的静态成员和方法,但静态类可以声明普通成员变量和方法当外部类需要使用内部类,而内部类无需外部类资源,并且内部类可以单独创建的时候,一般使用静态类e.g.public class Caculate { ...原创 2019-04-28 09:26:04 · 341 阅读 · 0 评论 -
为什么局部类和匿名类只能访问final局部变量
为什么内部类可以无限制访问外部类变量public class Outter { private Inner inner = null; public Outter() { //一些操作 } public class Inner { public Inner() {} }}编译器在编译过程中除了会生成一个Outer.cl...原创 2019-04-29 10:25:52 · 395 阅读 · 0 评论 -
容器关系:Map
关系图图来自https://www.cnblogs.com/wuyuegb2312/p/4458468.htmlMapMap接口: 除了定义基本操作,还包含了返回包含所有key的Set (Key不能重复)、包含所有value的collection的方法。如果用一个可变对象作为Map的key,若key值变化影响到了equals(),会导致Map行为不确定。Map接口中有一个内部接口Map.E...原创 2019-04-25 10:18:07 · 125 阅读 · 0 评论 -
java内存分配分析
Java程序运行在JVM(Java Virtual Machine,Java虚拟机)上,可以把JVM理解成Java程序和操作系统之间的桥梁,JVM实现了Java的平台无关性,由此可见JVM的重要性。所以在学习Java内存分配原理的时候一定要牢记这一切都是在JVM中进行的,JVM是内存分配原理的基础与前提。简单通俗的讲,一...转载 2019-04-25 14:46:22 · 147 阅读 · 0 评论 -
Java中char和String的转换
Java中char是一个基本类型,而String是一个引用类型。有时候我们需要在它们之间互相转换。String转换为char在Java中将String转换为char是非常简单的。使用String.charAt(index)(返回值为char)可以得到String中某一指定位置的char。使用String.toCharArray()(返回值为char[])可以得到将包含整个String的c...转载 2019-05-14 08:39:26 · 120 阅读 · 0 评论 -
Collections.sort()自定义比较的用法
Collections.sort()可以对List进行排序。如果需要自定义排序需要重写List中Element的compare()区别compareTo(Object o)和compare(Object o1, Object o2):一个类如果想实现Comparable<T>接口必须定义compareTo(Object o)方法,以确定该类的自然顺序。x.compareTo(y)...原创 2019-09-15 06:09:39 · 392 阅读 · 0 评论 -
TreeSet & TreeMap
TreeSet非线程同步的二叉树内部对元素的操作复杂度为O(logn),HashSet为O(1)内部的元素都是排序的,当需要查找某些元素以及顺序输出元素的时候它能够带来比较理想的结果...原创 2019-04-17 17:11:02 · 131 阅读 · 0 评论 -
容器关系:Collection
分类容器按接口可以分为两大类,即Collection和Map。而在Collection中又主要有List、Set和Queue三类容器。关系图插入pic共用部分Iterable接口: 容器中的顶级接口,接口中规定了一个迭代方法,iteratorCollection接口: 定义了集合最基本的方法AbstractCollection抽象类: 对Collection接口进行了一些基本的实现,...原创 2019-04-22 11:22:43 · 194 阅读 · 0 评论 -
深拷贝和浅拷贝
浅拷贝:只复制当前的对象,对该对象内部的引用(其他类对象作为自己的元素-也叫对其他对象的引用)不能复制(在堆内存中从新创建空间,内容相同,但地址不同)。深拷贝:对对象内部的引用均复制,是创建一个新的实例,并复制实例。详细介绍看这里...原创 2019-03-26 14:15:06 · 114 阅读 · 0 评论 -
理解List<String> list=new ArrayList<String>();
接口,可以将对象的使用标准化,即面向接口编程。父类为接口,规定使用的方法;子类为各种不同的具体实现,根据实际需求选用不同的实现。在这个例子中,List为父类接口,提供标准的method。ArrayList和LinkedList都是其子类,即对父类接口List的不同实现。若在最初编写代码时选用ArrayList,而随着需求变更需要替换成LinkedList。使用List<String>...原创 2019-04-01 11:12:04 · 27809 阅读 · 4 评论 -
String、StringBuilder和StringBuffer的区别
String对String对象的任何改变都不影响到原对象,相关的任何change操作都会生成新的对象。JVM会先在常量池查找是否存在相同的字面常量,如果存在,则直接将引用指向已经存在的字面常量;否则在运行时常量池开辟一个空间来存储该字面常量,并将引用指向该字面常量。String str1 = "hello world"; //"hello world"存储在常量池String ...原创 2019-04-01 13:39:06 · 141 阅读 · 0 评论 -
HashMap & HashSet
HashMap基于哈希表实现,其内部通过单链表解决冲突问题。HashMap是非线程安全的,一般用于单线程环境下,多线程环境下可以采用concurrent并发包下的concurrentHashMap(Java 5以上)。HashMap存数据过程: HashMap内部维护了一个存储数据的Entry数组,每一个Entry本质上是一个单向链表。当准备添加一个key-value对时,首先通过hash(ke...原创 2019-04-01 14:32:40 · 143 阅读 · 0 评论 -
匿名内部类Anonymous Classes
理解:匿名是指没有具体的类名也没有class关键字,因为匿名内部类是直接使用new来生成一个对象的引用。创建匿名内部类时会立即创建一个该类的实例,该类的定义会立即消失,所以匿名内部类是不能够被重复使用一般匿名内部类创建模版new 父类构造器(参数列表)|实现接口() { //匿名内部类的类体部分 }匿名内部类初始化法:第一层花括号定义了一个继承于Ha...原创 2019-04-01 20:41:09 · 491 阅读 · 0 评论 -
super & this
this调用本类中另一种形式的构造函数(应该为构造函数中的第一条语句)this(parm)直接引用,相当于指向当前对象本身this.method(parm)形参与成员对象名字重合时用以区别this.Membersuper调用父类中的某一个构造函数(应该为构造函数中的第一条语句)super(parm)直接引用,相当于指向当前对象的父类super.Method(parm)子类中的对...原创 2019-04-21 15:07:24 · 101 阅读 · 0 评论 -
抽象类与接口类的区别
节选自 https://www.cnblogs.com/mfrank/p/7878325.html接口具体介绍与抽象类具体介绍语法抽象类和接口均不能被实例化抽象类中的抽象方法只能用public和protected修饰。接口中的方法全部为public abstract修饰。因为接口只能被类实现,不能被类继承,所以不能使用protected修饰,但接口是可以继承接口的。抽象类跟普通...原创 2019-04-21 15:55:37 · 627 阅读 · 0 评论 -
HashMap和Hashtable的区别
主要区别点:HashMap接受为null的键值对,Hashtable不接受HashMap非synchronized,线程不安全,若在多线程中使用需自己添加同步方法。Hashtable是同步的,线程安全。Java 5提供了ConcurrentHashMap,它是HashTable的替代,比HashTable的扩展性更好。HashMap的迭代器(Iterator)是fail-fast迭代器,而...原创 2019-03-26 13:20:16 · 151 阅读 · 0 评论