
java基础
七叶魔渡
Stay hungry,Stay foolish
展开
-
反射(就是为了在程序运行时获取类的信息并操作)
1.为什么要有容器容器就是为了保存对象集,尤其是未知对象的数量以及生命周期时2.数组与容器的区别数组也可以用来保存对象集,但是数组的尺寸固定,且由于数组的数据结构限制,有很多操作无法实现,保存基本数据类型时,推荐使用数组,应对其他情况时,自动扩容,有多种数据结构实现的容器,显然具有更大的优势。3.容器使用时的小技巧容器可以同时存储多种不同类型的对象,但是在使用容器时,最好指定泛型,这样在取出对象时,就不必指定向下转型,减少错误可以使用多态,来满足多个子类的存储情形对于set类型的集合,比较对原创 2020-09-17 22:27:01 · 794 阅读 · 0 评论 -
注解(是一种特殊标记,使用这种标记可以逆向控制程序流程)
1.为何要有注解我们希望在代码中的某些地方,做一些标识,然后在稍后的某个时刻(比如在程序执行过程中),将这些标识取出来,对使用注解的那部分进行一些分类和处理,注解基本上可以用来修饰万物注解可以简单干净的实现上述需求,将标识与源代码文件结合,并且提供了编译期检查,多用于文件配置、事务管理、切面、测试等场景。注解与反射是绝配单独定义注解并没有实际意义,获取注解之后的注解处理流程才是需要关注的。2.注解的基础知识2.1 三大内置注解@Override 重写注解@Deprecated 过时注解@Su原创 2020-09-14 21:50:38 · 253 阅读 · 0 评论 -
枚举(是一种针对特定情况而定义的简洁安全的特定类型)
1.为何要有枚举类对于某一个类的对象有限且确定的情况,以及需要定义一组通用的常量的并将其作为组件供程序其他部分调用的情况,使用枚举更加简洁(写法简洁),安全(提供了安全检查的功能),当然枚举也可以用来实现责任链和多路分发实际项目中枚举和switch的结合使用是绝配2.枚举类的使用2.1.自定义枚举类型/** * =========================================================== * @function 这个类用来,自定义中国的四大神兽(有限且原创 2020-09-13 22:27:54 · 294 阅读 · 0 评论 -
容器——终篇
1.如何自建容器继承,容器体系中相关的Abstra类,重写并扩展相关方法即可2.容器不同名称的相关含义Hashxx 代表着速度(查、存、删),需实现hashCode()方法Treexx 代表着排序,需实现Comparable()方法LinkedHashxx 代表着按元素的插入顺序进行存储和遍历,需实现hashCode()方法3.关于队列(Queue)有单向队列和双向队列,队列一般是按照先后顺序来排列元素,但是你可以指定顺序4.关于散列码散列码是相对唯一的,用以代表对象的int值散列原创 2020-08-30 20:44:20 · 169 阅读 · 0 评论 -
容器——HashMap的源码分析(JDK1.8)
1.入口public class MapTest { public static void main(String[] args) { //1.创建 Map<Integer, Integer> map = new HashMap<>(); //2.添加元素 map.put(1, 1); }}2.创建(构造器及参数初始化)//无参构造,设置负载系数为默认值public HashMap() {原创 2020-08-30 17:40:48 · 145 阅读 · 0 评论 -
容器——ArrayList的源码分析(JDK1.8)
1.入口public class ListTest { public static void main(String[] args) { //创建 ArrayList<Integer> list = new ArrayList<>(); //执行add操作 list.add(1); }}2.创建(构造器及初始参数)//无参构造器,创建是调用,此时DEFAULTCAPACITY_EMPTY_ELE原创 2020-08-30 11:09:26 · 155 阅读 · 0 评论 -
容器(是为了存储未知数量及生命周期的对象集)
1.为什么要有容器容器就是为了保存对象集,尤其是未知对象的数量以及生命周期时2.数组与容器的区别数组也可以用来保存对象集,但是数组的尺寸固定,且由于数组的数据结构限制,有很多操作无法实现,保存基本数据类型时,推荐使用数组,应对其他情况时,自动扩容,有多种数据结构实现的容器,显然具有更大的优势。3.容器使用时的小技巧容器可以同时存储多种不同类型的对象,但是在使用容器时,最好指定泛型,这样在取出对象时,就不必指定向下转型,减少错误可以使用多态,来满足多个子类的存储情形对于set类型的集合,比较对原创 2020-08-30 09:07:52 · 258 阅读 · 0 评论 -
异常(异常最大的功能就是报告和处理错误)
1.为何要有异常异常就是用来处理程序中可能出现的错误,异常处理是与程序正常执行并行的另一条路径,是在发生错误时执行的另一条路径,提供了一种从错误状况进行可靠恢复的途径(如在catch或finally语句中换条路),避免遇到错误就终止程序的运行。实际项目中异常和记录日志的结合使用是绝配2.异常的继承结构Throwable是异常和错误方面的超类。红色为编译期异常,编译器会在编译时检查,如果我们没有处理会在编译期报错;Error虽然不会在编译器被要求我们必须处理,但是通常情况下,我们对此类异常无能为力;原创 2020-08-25 22:16:09 · 594 阅读 · 0 评论 -
对象的初始化过程
1.无继承情况下,对象的初始化过程静态域(包括静态变量和静态代码块,他俩同级按先后顺序加载) -> 非静态域(包括非静态变量和非静态代码块,他俩同级按先后顺序加载) -> 构造方法public class Test3 { public static void main(String[] args) { Try try1 = new Try(); /* 结果如下 ****************************原创 2020-08-23 21:45:53 · 183 阅读 · 0 评论 -
值传递机制
1.基本数据类型传递的是值,所以一方修改对另一方没有影响public static void main(String[] args) { int a=1; int b=2; a=b; System.out.println(a);//2 System.out.println(b);//2 b的值传递给了a b=3; System.out.println(a);//2 Syste原创 2020-08-23 20:57:48 · 236 阅读 · 0 评论 -
equals和==的区别
1.== 可以比较基本数据类型也可以比较引用数据类型,比较基本数据类型时比较的是值是否相等,比较引用类型时比较的是引用地址是否相同2.equals只适合引用数据类型的比较,默认情况下和==一致都是比较引用地址是否相同3.但是很多java类库里的类都已经重写了equals方法,用来比较值是否相等,当你自己定义类时,如果没有重写equals方法,那它会是默认情况,所以要注意是不是重写equals方法测试代码如下(没有重写equals方法时)//定义一个类,生成一个有参构造,此时没有重写equalspu原创 2020-08-23 17:14:49 · 225 阅读 · 0 评论