Java基础
文章平均质量分 54
程の编程日记
这个作者很懒,什么都没留下…
展开
-
编写并发测试方法,顺带证明 HashMap 不是线程安全的
并发测试的工具类,顺带测试下 HashMap 是否是线程安全的原创 2022-06-07 14:15:18 · 631 阅读 · 1 评论 -
刚学反射,理解起来困难?那就写一个Demo入门吧!
背景经历了n多次面试之后,每个面试官问必问的一个问题,就是问我用过反射吗,我当时只是颤颤巍巍的回答说具体没有使用过,但是Spring的IOC容器就是根据配置文件信息获取类文件信息进而反射创建bean实例,然后成功把面试官带领到我的八股文阵地,balabalabala说一堆,然后结束。但是,真的心里踏实吗?最近工作中也是遇到了一个场景需要将实体类转为map,好家伙,不就是反射获取属性信息,执行get方法,然后放到map里面嘛,这不,反射不就用上了嘛,虽然已经工作了,但是还是给之前的自己一个答案吧!关于反原创 2021-07-10 16:17:18 · 403 阅读 · 1 评论 -
Java中的异常体系&自定义异常
异常异常体系结构注意:所有异常的共同父类java.lang包下的Throwable类这个Throwable类又分为两个分支Error(程序无法处理的错误)表示的是不希望被程序捕获或者程序无法处理的错误,这个Error类的对象一般由Java虚拟机生成并抛出,大多数错误与代码的编写和执行的操作无关,就比如VirtualMachineError(虚拟机错误)中的OutOfMemoryError错误,是由于内存不足而无法分配对象产生的错误,这些异常发生的时候,JVM一般都选择线程终止。Excep原创 2020-08-02 18:12:16 · 369 阅读 · 0 评论 -
反射相关/定义/为什么用反射/优缺点/应用场景/demo
反射什么是反射?反射就是程序运行状态中,对于任意一个类,能够知道这个类的所有属性和方法,对于任意一个对象,能够调用方法/获取属性。就是反射可以通过指定的类名来获取类的信息。首先要知道一个知识点,类加载过程:首先,一个.java文件经过编译成功后,得到一个.class文件初始化操作的时候,会将这个.class文件通过类加载器加载到jvm中加载到jvm中又分了好几个步骤,包括加载,连接和初始化加载的时候,会再Java堆中创建一个java.lang.Class类的对象,这个Class对象代表着类原创 2020-08-01 19:26:13 · 707 阅读 · 0 评论 -
简单说说Java集合
java集合对于使用:如果是集合类型,有List和Set供我们选择List 插入有序,可重复ArrayList 底层数据结构是数组 线程不安全添加元素如何实现? 先去检查数组的容量是否够,够了就直接添加,不够了先扩容为当前容量的1.5倍,第一次扩容后还不够的话就直接将容量扩充为一个minCapacity(就是size+1)增删的时候底层实现是依靠数组的复制,这个数组复制的方法由c/c++实现LinkedList 底层数据结构是链表 线程不安全 还实现了Deque接口 操作他可以原创 2020-07-31 21:48:08 · 494 阅读 · 0 评论 -
Java继承相关知识
继承权限修饰符说到继承,要先想到权限修饰符(public,protected,private),如果不加,默认的就是在同一包下访问。public 任何人可以访问protected 其他包不能访问private 只有当前类可以访问图源网络抽象类和接口抽象类抽象类和抽象方法都用abstract关键字进行修饰。如果一个类中包含抽象方法,这个类必须声明为抽象类。抽象类和普通类最大的区别,抽象类不能被实例化,只能被继承。接口接口是抽象类的延申,jdk1.8之前可以看作是一个完原创 2020-07-29 16:01:00 · 407 阅读 · 0 评论 -
Object类常用方法
Object类常用方法equals()看到这个首先想到,equals和==区别equals和====:对于基本类型,== 判断的是两者值是否相等对于引用类型,==判断的是两者是否引用同一个对象。equals:基本类型没有equals方法。对于引用类型,如果equals方法没有被重写,则作用与==相同,都是判断是否引用同一个对象。如果equals方法被重写了,则是比较对象内容是否相同。注意:重写equals方法必须重写hashCode方法,如果不重写hashCode方法,就是出现eq原创 2020-07-28 18:47:52 · 251 阅读 · 0 评论 -
final和static
final看到final要想到(三点,数据,方法,类):声明数据声明方法声明类以下是具体说明:声明数据声明数据是常量,可以是编译时常量,也可以是运行时被初始化之后不可改变的常量。对于基本类型,final使数值不变对于引用类型,final可以使引用不变,就是不能引用其他对象,但是本身还是可以修改的,引用不可修改,本身属性值可以修改final Student s = new Student();s.name = "houge";s.setName("shuaige");s原创 2020-07-28 16:58:32 · 311 阅读 · 0 评论 -
今天说说String相关知识点
String如何实现以及特性String类被final修饰,所以String不可被继承,Integer等等的包装类都不可以被继承。jdk1.8中,String底层使用final修饰的char数组来存储字符串private final char value[];jdk1.9之后,底层使用final修饰的byte数组来存储字符串private final byte[] value;使用final关键字修饰,说明这个value数组初始化之后就不能引用其他数组,String内部也没有改变value原创 2020-07-27 09:59:44 · 305 阅读 · 0 评论 -
说说java中的数据类型相关知识
数据类型基本类型(8个)byte,8位,1字节char,16位,2字节short,16位,2字节int,32位,4字节float,32位,4字节long,64位,8字节double,64位,8字节boolean,无明确规定boolean类型只有true和false两个值,可以用1位存储,jvm编译得时候会将boolean类型转化为int,1为true,2为false,jvm支持boolean数组,但是是通过独写byte数组实现。包装类型下图是每个基本类型以及对应的包装类型图片原创 2020-07-26 17:01:24 · 295 阅读 · 0 评论