极客-JAVA基础学习总结(一)

常见异常

1、IndexOutOfBoundException 数组出界(越界)的错误

2、NullPointerException 空指针异常

3、ClassNotFoundException 指定的类不存在

4、IllegalArgumentException 方法的参数错误

5、ArithmeticException 数学运算异常

8种基本数据类型

byte(位)

short(短整数)

int(整数)

long(长整数)

float(单精度)

double(双精度)

char(字符)

boolean(布尔值)

面向对象编程

引用数据类型

(class)类

(interface)接口

数组

引用数据类型和基本数据类型的相同点

1、都可以用来创建变量,可以赋值和使用其值

2、本身都是一个地址

引用数据类型和基本数据类型的不同点

1、基本类型变量的值,就是地址对应的值。引用数据类型的值还是一个地址,需要通过 “二级跳”找到实例

2、引用数据类型是Java的一种内部类型,是对所有自定义类型和数组引用的统称,并非 特指某种类型

引用的缺省值——null

1、 null是引用类型的缺省值

2、null代表空,不存在。可以读作空

3、引用类型的数组创建出来,初始值都是空

访问修饰符

  • default (即默认,什么也不写): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。

  • private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)

  • public : 对所有类可见。使用对象:类、接口、变量、方法

  • protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)

修饰符 当前类 同一包内 子孙类(同一包) 子孙类(不同包) 其他包
public Y Y Y Y Y
protected Y Y Y Y/N(说明 N
default Y Y Y N N
private Y N N N N

方法的签名和重载

方法重载 (overload)

1、方法签名:方法名+依次参数类型。注意,返回值不属于方法签名。方法签 名是一个方法在一个类中的唯一标识2、同一个类中方法可以重名,但是签名不可以重复。一个类中如果定义了名字 相同,签名不同的方法,就叫做方法的重载

覆盖

覆盖才是继承的精髓和终极奥义  --臧萌

类继承了父类,但重写了父类的方法,因此虽然是从父类中拿到的方法但重写之后与父类方法有了区别,因此称为覆盖(即子类方法覆盖了父类方法)

重载与覆盖

区别 覆盖 重载
实现 子类对父类方法的重写 同一个类中建立多个同名方法
参数 与父类同名同参 与别的方法同名不同参
返回 子类与父类返回类型要一致 无此要求
权限 子类不能覆盖父类的private方法 无此要求
  父类一个方法只能在子类覆盖一次 重载只要参数不同,可以多次
  覆盖是针对父类方法的重写 同类中的方法均可重载
  重写要求子类比父类抛出更少的异常 无此要求

静态方法

1、静态方法(也叫类方法)的特点:只能使用参数和静态变量。换言之, 就是没有 this 自引用的方法

静态方法的重载

1、静态方法的重载和成员方法(实例方法)一样

String

String 对象重要的特点:不可变(immutable)。String 用来存储字符的数据是 private 的,而且不提供任何修改 内容的方法,所以String 对象一旦生成,其内容就是完全不可能被修改的

常用方法

1、length() --得到一个字符串的字符个数(中、英、空格、转义字符皆为字符,计入长度)

2、charAt(值) --从字符串中取出指定位置的字符

3、indexOf("字符") --查找字符"字符"的位置

4、toUpperCase();  toLowerCase();字符串大小写的转换

5、split("字符")  根据给定的正则表达式的匹配来拆分此字符串。形成一个新的String数组。

StringBuilder与StringBuffer

1、 StringBuilder 是一个非常方便的用来拼接和处理字符串的类,不是线程安全 和 String 不同的是,它是可变的

2、StringBuffer是线程安全,可以不需要额外的同步用于多线程中 。它是可变的

继承

1、子类继承了父类的方法和属性

2、使用子类的引用可以调用父类的共有方法

3、 使用子类的引用可以访问父类的共有属性 • 就好像子类的引用可以一物二用,既可以当作父类的引用使用,又可以当作子类的引用 使用。

子类继承父类,父类的所有属性和方法都可以被子类访问和调用。组合是指将已存在的类型作为一个新建类的成员变量类型,又叫“对象持有”

继承与组合

在自己的类里,使用别的类的两类之间关系,我们叫做"has-a",也称为组合

继承,其实表达的是一种"is-a"的关系,也就是说,在你用类构造的世界中,"子类是父类的一种特殊类别"

继承不是组合,继承也不只是为了能简单的拿来父类的属性和方法。如果仅仅如此,原封不动的拿来主义,组合也能做到。

继承也不是通过组合的方式来实现的。和组合相比,继承更像是"融合"所谓融合,即合二为一,可以互相影响。父类影响子类没问题,子类通过覆盖影响父类

super:和父类对象沟通的桥梁

子类对象里可以认为有一个特殊的父类的对象,这个父类对象和子类对象之 间通过 super 关键字来沟通

1、子类和父类有同名的成员变量或方法,则父类的成员将会被覆盖,此时可用下面的方式来引用父类的成员

super.<成员变量名>
super.<成员方法名>

在Java语言中,用过继承关系实现对成员的访问是按照最近匹配原则进行的:

(1)在子类中访问成员变量和方法时将优先查找是否在本类中已经定义,如果该成员在本类中存在,则使用本类的,否则,按照继承层次的顺序往父类查找,如果未找到,继续逐层向上一直找到祖先类查找。

(2)super特指访问父类的成员,使用super首先到直接父类查找匹配成员,如果未找到,再逐层向上到祖先类查找

2、子类可以通过super关键字调用父类中定义的构造方法

super(调用参数列表)

(1)按继承关系,构造方法是从顶向下进行调用的。

(2)如果子类没有构造方法,则它默认调用父类无参的构造方法,如果父类中没有无参数的构造方法,则将产生错误。

(3)如果子类有构造方法,那么创建子类的对象时,先执行父类的构造方法,再执行子类的构造方法。

(4)如果子类有构造方法,但子类的构造方法中没有super关键字,则系统默认执行该构造方法时会产生super()代码,即该构造方法会调用父类无参数的构造方法。

(5)对于父类中包含有参数的构造方法,子类可以通过在自己的构造方法中使用super关键字来引用,而且必须是子类构造函数方法中的第一条语句。

(6)Java语言中规定当一个类中含有一个或多个有参构造方法,系统不提供默认的构造方法(即不含参数的构造方法),所以当父类中定义了多个有参数构造方法时,应考虑写一个无参数的构造方法,以防子类省略super关键字时出现错误。

猜你喜欢

转载自blog.csdn.net/u012002125/article/details/106773554