java基础知识复习(2):不建议参考,个人查缺补漏记录,不够完善
final修饰符:不可改变 不能被继承 必须赋初始值 只能赋一次值
可以修饰非抽象类 非抽象方法和变量
String类不能被继承 因为String类有final修饰
==和equals
==是操作符 equals是方法
== 对于基本数据类型 比较值是否相等
对于引用类型 比较所指对象的地址
equals 对于没有重写equals方法 比较的是引用类型变量指向对象的地址
如果像String、Date类有重写,比较的是所指向的对象的内容。
内部类
内部类的作用优点:
每个内部类都能独立的继承一个接口的实现,所以无论外部类是否已经继承了某个(接口的)实现,对于内部类都没有影响。内部类使得多继承的解决方案变得完整,
方便将存在一定逻辑关系的类组织在一起,又可以对外界隐藏。
方便编写事件驱动程序
方便编写线程代码
成员内部类
成员方法/成员变量
可以访问外部类的全部属性
不可以定义static修饰的属性和方法
静态内部类
可以定义静态的 非静态成员。
不能调用外部的普通方法.
局部内部类
不能定义静态的方法属性
不能使用任何的访问修饰符
外部类不能访问内部类的任何属性方法。
匿名内部类 (用来实现接口或者继承类)
局部内部类和匿名内部类
局部内部类有自己的类名 定义完成之后需要再用new关键字实例化才可以使用
匿名内部类定义时直接实例化 可以直接使用
匿名类是一个表达式 以;结尾
String类
每次拼接会产生新的字符串
split("分割符")
concat()方法
concat()产生了新的字符串
+ 利用了StringBuilder的append方法
String StringBuffer StringBuilder区别
1)String 不可变 StringBuffer StringBuilder可变
2)StringBuffer线程安全,有缓冲区
3)一般,StringBuilder > StringBuffer > String
String str = "hello"+ "world"的效率就比 StringBuilder st = new StringBuilder().append("hello").append("world")要高。
对String对象的任何改变都不影响到原对象,相关的任何change操作都会生成新的对象
包装器类型
为了让基本类型也具有对象的特征 出现了包装器类型
基本类型变量值存在栈中 包装器类型是将对象放在堆中
自动装箱 基本类型——》包装器类型
自动拆箱 包装器类型--> 基本类型
自动装箱 -128~127之间 不在范围类创建新对象
Integer int作为方法的参数发生重载时。 自动装箱 拆箱不起作用