随笔分类 - Java
摘要:众所周知,spring的依赖注入方式有两种,setter方法注入和构造器注入。 但是在实际开发中,即便类的属性没有setter方法,类也没有构造器,只要在属性的上方添加 @Autowired注解,这个类属性依然会被自动注入,那么到底是为什么呢? 经过上网查询发现,spring其实是从容器查找符合属性
阅读全文
摘要:Stack 容器介绍 Stack 栈容器,是 Vector 的一个子类,它实现了一个标准的后进先出(LIFO:Last In Frist Out)的栈。 Stack 特点是 后进先出。它通过 5 个操作方法对 Vector 进行扩展. 操作栈的方法 #Stack 的使用 public class S
阅读全文
摘要:Vector 底层是用数组实现的,相关的方法都加了同步检查,因此“线程安全,效率低”。比如,indexOf 方法就增加了 synchronized 同步标记。 Vector 的使用 Vector 的使用与 ArrayList 是相同的,因为他们都实现了 List 接口,对 List 接口中的抽象方法
阅读全文
摘要:ArrayList核心成员变量 private static final int DEFAULT_CAPACITY = 10; private static final Object[] EMPTY_ELEMENTDATA = {}; private static final Object[] DE
阅读全文
摘要:String 类代表不可变的字符序列 StringBuilder 类和 StringBuffer 类代表可变字符序列。 String 类源码分析 String 类对象代表不可变的 Unicode 字符序列,因此我们可以将 String 对象称为“不可变对象”。 那什么叫做“不可变对象”呢?指的是对象
阅读全文
摘要:基本数据类型的包装类 我们前面学习的八种基本数据类型并不是对象,为了将基本类型数据和对象之间实现互相转化,Java 为每一个基本数据类型提供了相应的包装类。 包装类基本知识 Java 是面向对象的语言,但并不是“纯面向对象”的,因为我们经常用到的基本数据类型就不是对象。但是我们在实际应用中经常需要将
阅读全文
摘要:JAVA 中,JVM 的垃圾回收机制可以对内部资源实现自动回收,给开发者带来了极大的便利。但是 JVM 对外部资源(调用了底层操作系统的资源)的引用却无法自动回收,例如数据库连接,网络连接以及输入输出 IO 流等。这些连接就需要我们手动去关闭,不然会导致外部资源泄露,连接池溢出以及文件被异常占用等。
阅读全文
摘要:throw e 是抛出异常,会中断程序,后面的代码都不执行了 e.printStackTrace() 是输出错误日志,并不中断程序 如下代码来说明用法: /** * throw e和e.printStackTrace()的区别 */ public class Demo { public static
阅读全文
摘要:数组常见操作 遍历,指的就是“通过循环遍历数组的所有元素”。 拷贝,指的是将某个数组的内容拷贝到另一个数组中。 注:实质上,后面大家学容器的扩容就是“数组的拷贝”。 数组的遍历 fori foreach 数组的拷贝 System.arraycopy(object src,int srcpos,obj
阅读全文
摘要:我们把一个类放在另一个类的内部定义,称为内部类(inner class)。 内部类的两个要点: 内部类提供了更好的封装。只能让外部类直接访问,不允许同一个包中的其他类直接访问。 内部类可以直接访问外部类的私有属性,内部类被当成其外部类的成员。但外部类不能访问内部类的内部属性。 【示例】内部类的定义和
阅读全文
摘要:String 类又称作不可变字符序列。 String 位于 java.lang 包中,Java 程序默认导入 java.lang 包下的所有类。 Java 字符串就是 Unicode 字符序列,例如字符串"Java"就是 4 个 Unicode 字符'J'、'a'、'v'、'a'组成的。 Java
阅读全文
摘要:《鲁提辖剃度》 和尚要做什么呢,要吃斋(chiZai())、念经(nianJing())、打坐(daZuo())、撞钟(zhuangZhong())、习武(xiWu())等。如果设计一个和尚(Monk)接口,给出所有和尚都需要实现的方法,那么这个接口应当如下: public interface Mo
阅读全文
摘要:JAVA8 之前,接口里的方法要求全部是抽象方法。 JAVA8(含 8)之后,以后允许在接口里定义默认方法和静态方法。 JDK8 新特性_默认方法 Java 8 及以上新版本,允许给接口添加一个非抽象的方法实现,只需要使用 default 关键字即可,这个特征又叫做默认方法(也称为扩展方法)。 默认
阅读全文
摘要:如果没有创建父类对象,子类如何使用父类的成员呢? 还有,super所谓的父类存储空间的表示到底是什么意思? 写在前面 创建对象指的是在堆区开辟空间 编译器在运行子类构造器之前,必须先执行父类构造器;且调用父类构造器的语句必须在子类构造器的第一行。 构造方法的作用是为堆区中的对象的属性初始化,不是创建
阅读全文
摘要:1.通过this()调用其它构造方法,必须位于本构造方法的第一句 2.构造方法中如果第一行没有显示调用super();,那么Java都会隐式调用super();,作为父类的初始化方法 那这两个在内存中到底谁先执行呢? 假定这里讨论的构造器都没有显式的super()调用: 有显式this()调用的构造
阅读全文
摘要:super“可以看做”是直接父类对象的引用。可通过 super 来访问父类中被子类覆盖的方法或属性。 使用 super 调用普通方法,语句没有位置限制,可以在子类中随便调用。 在一个类中,若是构造方法的第一行没有调用 super(...)或者 this(...); 那么 Java 默认都会调用 su
阅读全文
摘要:**“==”代表比较双方是否相同。**如果是基本类型则表示值相等,如果是引用类型则表示地址相等即是同一个对象。 **equals()默认是比较两个对象的 hashcode。**但,可以根据自己的要求重写 equals 方法。 equals() 提供定义“对象内容相等”的逻辑。比如,我们在公安系统中认
阅读全文
摘要:instanceof 是二元运算符,左边是对象,右边是类;当对象是右面类或子类所创建对象时,返回 true;否则,返回 false。 【示例】使用 instanceof 运算符进行类型判断 public class Test{ public static void main(String[ ] ar
阅读全文
摘要:静态导入(static import): 其作用是用于导入指定类的静态属性和静态方法,这样我们可以直接使用静态属性和静态方法。 【示例】静态导入的使用 package com.itbaizhan; import static java.lang.Math.*;//导入Math类的所有静态属性 imp
阅读全文
摘要:构造方法用于对象的普通属性初始化。 静态初始化块,用于类的初始化操作,初始化静态属性。 在静态初始化块中不能直接访问非 static 成员。
阅读全文