Java基础入门
Java数据类型
需要注意的是char大小为2字节
类型转化
基本数据类型表示范围排序
小范围可直接赋值给大范围,类型会自动转换
要注意char可以直接转int 例如’a’会转为对应的ASCII码
运算符
Java运算符的优先级
口诀可以帮助记忆:
单算移关与,异或逻条赋
变量
局部变量(Local Variables):
方法,构造方法或任何块中定义的变量,一旦执行完毕,局部变量就会被销毁。
作用域: 局部变量的作用域只限于定义它们的块内。
声明: 局部变量必须在使用前声明,并且不会被赋予默认值,所以在使用前必须显式初始化。
成员变量(Member Variables,也称为字段或属性):
作用域:成员变量的作用域是整个类。
默认值:如果成员变量没有显式初始化,Java 会为它们赋予默认值。以下是成员变量的默认值:
数值类型(byte、short、int、long、float、double):0
char 类型:‘\u0000’(空字符)
boolean 类型:false
引用类型(对象和数组):null
数组
数组的比较equals()
数组是一种引用数据类型,equals()继承自Object, 没重写比较的不是数组中的内容
比较两个数组中的内容使用的是Arrays.equals()
面向对象
封装、继承、多态
static
继承
子类能够继承和重写哪些访问控制修饰的方法?
public 和 protected能够继承和重写
默认、无修饰符的只用相同包下的子类能够继承和重写
多态
多态的表现形式
- 编译时多态
方法重载:
必须改变参数列表,即参数的类型和个数不同,或类型和个数相同但顺序不同(也算重载)
可以修改返回类型,但只修改返回类型不算重载。 - 运行时多态
- 方法重写
外壳不变,核心重写!
方法名和参数列表要完全相同,返回类型可以修改
访问权限只能扩大不能缩小
异常可以缩小(更加确定)不能更大(超出原异常范围) - 接口多态
一个类实现了某个接口,那么可以通过接口类型的引用来引用该类的对象。这样,一个接口引用可以指向实现了该接口的多个不同类的对象,从而实现了接口类型的多态性。
- 方法重写
重写与重载的区别
构造方法
一般使用public修饰
没有返回值类型 , 注意: void也没有
方法名和类名相同 **注意: ** 允许类用和构造方法同名的方法, 但注意要有返回参数
构造方法可以重载
错题
子类构造方法调用super()
执行子类构造方法首先会调用父类构造方法,默认调用父类无参构造,可在子类构造方法中省略。调用父类有参,必须显示声明且必须在子类构造方法的第一行
访问控制
方法重写
finnal
finnal修饰类 不可被继承 例如String
finnal修饰方法 可以被子类继承, 但不能被子类重写
finnal修饰变量, 只能赋一次值
finnal修饰引用时, 地址不能变, 但地址里的内容可以改变
引用类型转换及instanceof
instanceof关键字
判断引用名实际指向的对象,其所属类型是否为右边的类型名,返回boolean
类型结果
instanceof详解好文章
https://segmentfault.com/a/1190000038391136
抽象 abstract
如果一个类中存在抽象方法,该类必须声明为抽象类
但抽象类中可以包含,也可以不包含抽象方法
抽象类和普通类区别:
抽象类必须使用abstract修饰符
抽象类相对普通类,多了包含抽象方法的能力
抽象类相对普通类,失去了实例化创建对象的能力
抽象类和普通类相同点:
符合继承关系特点,能够使用多态机制
子类可以重写从抽象类继承的方法
实例化子类对象需要借助父类构造器实现父类部分的初始化
接口 interface
接口不是类,而是另外一种引用数据类型,他没有构造方法, 注意: 没有构造方法
接口不能实例化对象,但可以指向实现类对象
接口允许多继承(即一个接口可以继承多个接口)
注意事项:
接口多态应用时,编译看左边,运行看右边
即接口引用只能调用接口中包含的方法,成功调用的是重写以后的方法
接口中
数据成员默认 public static final
修饰
方法默认public abstract
修饰
接口实现
注意事项:
重写方法的访问权限修饰符可以被扩大,但是不能被缩小,
而接口中的方法默认由public abstract
修饰
因此: 实现接口方法时, 必须声明访问权限为public
方法抛出异常类型的范围可以被缩小,但是不能被扩大
内部类
枚举
包装类
Object
Onject类有哪些方法?
Object()
构造方法
getClass()
clone()
hashCode()
equals()
toString()
notify()
notifyAll()
wait()
错题
? hashcode和equals的关系?
知乎的一篇好文章
https://zhuanlan.zhihu.com/p/364011883
简单总结:
hashcode的特性:
-
一致性(不变性) 无论调用多少次,都应该返回一样的结果
-
如果equals返回为true那么hashcode也应该相等
<