杂记 2021.3.10

杂记 2021.3.10

1.代码加载

静态代码块:用static申明,JVM加载类时执行,仅执行一次,按照声明的顺序执行。

构造代码块:类中直接用{}定义,每一次创建对象的时候执行。

Java程序初始化的执行顺序:父类静态变量(1)—>父类静态代码块(1)—>子类静态变量(2)—>子类静态代码块(2)—>父类非静态变量—>父类非静态代码块—>父类构造方法—>子类非静态变量—>子类非静态代码块—>子类构造方法。数字相同表示优先级相同,按照代码声明的顺序执行。

子类引用父类的静态字段,只会触发子类的加载、父类的初始化,不会导致子类初始化 。

通过数组定义来引用类,不会触发此类的初始化 。

子类的构造方法总是先调用父类的构造方法,如果子类的构造方法没有明显地指明使用父类的哪个构造方法,子类就调用父类不带参数的构造方法。

而父类没有无参的构造函数,所以子类需要在自己的构造函数中显示的调用父类的构造函数。

2.线程安全集合

线程安全的集合对象:Vector,HashTable,StringBuffer。

3.String详解

String 是一个特殊的包装类数据。即可以用String str = new String(“abc”);的形式来创建,也可以用String str = “abc”;的形式来创建

String str = “abc"创建对象的过程
(1)首先在常量池中查找是否存在内容为"abc"字符串对象
(2) 如果不存在则在常量池中创建"abc”,并让str引用该对象
(3) 如果存在则直接让str引用该对象

String str = new String(“abc”)创建实例的过程
(1) 首先在堆中(不是常量池)创建一个指定的对象"abc",并让str引用指向该对象
(2)在字符串常量池中查看,是否存在内容为"abc"字符串对象
(3)若存在,则将new出来的字符串对象与字符串常量池中的对象联系起来
(4)若不存在,则在字符串常量池中创建一个内容为"abc"的字符串对象,并将堆中的对象与之联系起来
String str1 = “abc”; String str2 = “ab” + “c”; str1== str2是ture是因为String str2 = “ab” + "c"会查找常量池中时候存在内容为"abc"字符串对象,如存在则直接让str2引用该对象,显然String str1 = "abc"的时候,上面说了,会在常量池中创建"abc"对象,所以str1引用该对象,str2也引用该对象,所以str1==str2。

String str1 = “abc”; String str2 = “ab”; String str3 = str2 + “c”; str1==str3是false是因为String str3 = str2 + "c"涉及到变量(不全是常量)的相加,所以会生成新的对象,其内部实现是先new一个StringBuilder,然后 append(str2),append(“c”);然后让str3引用toString()返回的对象.

4.接口与抽象类

接口(interface)可以说成是抽象类的一种特例,接口中的所有方法都必须是抽象的。接口中的方法定义默认为public abstract类型,接口中的成员变量类型默认为public static final。另外,接口和抽象类在方法上有区别:
(1)抽象类可以有构造方法,接口中不能有构造方法。
(2)抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。
(3)抽象类中可以有普通成员变量,接口中没有普通成员变量
(4)抽象类中的抽象方法的访问类型可以是public,protected和默认类型
(5)抽象类中可以包含静态方法,接口中不能包含静态方法
(6)抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型
(7)一个类可以实现多个接口,但只能继承一个抽象类

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值