java
whoami_I
这个作者很懒,什么都没留下…
展开
-
java.util.ConcurrentModificationException异常原因及解决方法
今天项目上报了一些bug,通过查看log发现是ConcurrentModificationException,这个错误之前见过,也知道是遍历list时同时修改了list导致的,但是对其中的原理还不是很清楚,正好借今天的机会学习一下里面的机制。ArrayList里面有一个变量modCount,专门用来记录该ArrayList被改变了多少次,增删、排序、replace这些改变链表的操作都会导致这个变...原创 2019-11-25 21:43:21 · 1001 阅读 · 0 评论 -
类的初始化
java中没有析构函数,只有构造函数;java的实例变量的初始化在类的构造函数执行之前;类的static field在类第一次被加载时就进行初始化,而且是仅被初始化一次。类的初始化分这么几种情况,普通实例变量, 普通初始化语句,静态实例变量,静态初始化语句。初始化的顺序:静态的先于普通的;都是静态的话,按照顺序进行初始化。例子:class Animal{ public An...原创 2018-10-15 16:15:24 · 194 阅读 · 0 评论 -
类的访问权限
在java中,类的field和method访问权限有四种,共有三种关键字来描述这四种权限,分别是:public、protected和private,还有一种权限没有关键字,属于默认访问权限,为方便描述我们称之为default访问权限。类只有两种访问权限:default和public。public权限是在任何地方都可以访问也就是一个public类在任何其他类都可以访问。protected权限属于...原创 2018-10-16 15:28:11 · 5143 阅读 · 0 评论 -
继承
super关键字class Animal{ Animal(){ System.out.println("constructor Animal"); }}class Cat extends Animal{ Cat(){ //super(); System.out...原创 2018-10-16 15:28:00 · 97 阅读 · 0 评论 -
java的final关键字
java的final关键字可以修饰数据、方法和类。final修饰数据final修饰的数据有一个特性,就是赋值之后不允许再次修改。什么样的数据赋值给final变量是有效的。总的来说是两种:1、编译时的常数,也就是其值在编译时就是确定的,无需运行,例如:常数、常量字符串都是这种数据。2、也可以是运行时确定的数据。class FinalData{ private Rando...原创 2018-10-16 16:04:31 · 142 阅读 · 0 评论 -
多态
多态性是面向对象编程一个至关重要的特性,这个性质可以很明显的降低类之间的耦合度,并且可以支持类的扩展,通过子类扩展现有的类可以不需要改变父类的内容,大大减少了代码的修改量。举个例子,一个人养了很多动物,每天需要喂这些动物,那么程序可能是这样写的:class Animal{ void eat(){}}class Cat extends Animal{ voi...原创 2018-10-16 20:20:24 · 110 阅读 · 0 评论 -
接口interface
接口可以有变量,不过这些变量都是static并且是final类型的。在interface里面的方法,默认都是public的,而且必须是public,不能加上除了public以外的访问权限,因此当其他类implements这个interface时,如果降低了访问权限,那么编译器会报错。例子:interface Instrument{ void play();}class ...原创 2018-10-17 14:43:16 · 267 阅读 · 0 评论 -
java文件输入输出流的例子
import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.FileInputStream;import java.io.FileOutputStream;public class InputStreamDemo { public static void main(Stri...原创 2018-12-04 10:10:28 · 1355 阅读 · 0 评论 -
如何获取java类的泛型参数
通过网上搜索找到一个办法:public static Class<?> analysisClazzInfo(Object object) { Type genType = object.getClass().getGenericSuperclass(); Type[] params = ((ParameterizedType) genType).get...原创 2019-06-28 17:43:48 · 1078 阅读 · 0 评论