API(application programming interface) 应用程序编程接口
java.lang包下的类不需要导包,其他包下的类需要导包
Scanner是一个可以解析基本类型和字符串的简单文本扫描器
System.in 系统输入,指的是通过键盘录入数据
匿名对象就是没有变量名的对象,匿名对象可以直接调用方法,但一个匿名对象只能使用一次,会造成内存的浪费
匿名对象可以作为方法的参数和返回值
Random用于创建一个新的随机数生成器
创建一个Random对象,每次调用nextInt方法都会产生一个随机数
ArrayList是大小可变的数组的实现
Arraylist不能存储基本数据类型,只能存储引用数据类型,可以存储基本数据类型的包装类,int->Integer char->character 其他都是把首字母变大写
String底层是靠字符数组实现的
被static修饰的成员是属于类的,也就是说不单单属于某个对象,就可以不用通过创建对象来调用
当static修饰成员变量时,该变量称为类变量.该类的每个对象都共享此变量的值,都可以对该变量进行操作,不通过创建对象也可以操作该变量
用static修饰成员方法时该方法被称为类方法,习惯称为静态方法.用类名称直接调用即可
静态方法注意事项:
静态方法只能访问静态方法和类变量,不能访问成员变量和成员方法,反之成员方法却可以访问静态方法和类变量.静态方法中不能有this关键字
被static修饰的成员可以并且建议直接用类名进行访问
被static修饰的内容是随着类的加载而加载的,并且只加载一次
存储于一块固定的内存(静态区),所以可以被类名直接调用
它优先于对象存在,所以可以被所有对象共享
静态代码块,定义在成员位置并且用static修饰的代码块{}
位置:类中,方法外
执行:随着类的加载而加载,并且只加载一次,优先于构造方法和main方法执行
作用:是给类变量进行初始化赋值
static关键字可以修饰变量方法,代码块,其主要作用还是想在不创建对象的情况下去调用方法
继承的由来:多个类中有相同的属性和方法时,把相同的属性和方法抽取到一个类中,多个类不再定义这些属性和方法,继承该类即可
父类更通用,子类更具体,通过继承我们可以使多种事物之间之间建立一种关系体系
继承就是子类继承父类的属性和行为,使子类的对象具有父类相同的属性和行为.子类可以直接访问父类的非私有属性和行为
继承的好处:1.提高了代码的复用性 2.使类和类之间产生了关系,是多态的前提
继承后的特点:成员变量,如果子父类的成员变量不重名不受影响,如果重名的话,子类的变量会覆盖父类的变量,调用父类的变量需要使用super关键字
成员方法,如果不重名没有影响,如果重名会产生方法的重写. 注意,1.子类重写父类的方法需保证方法名称,参数列表,返回值均一样2.子类重写父类方法时要保证权限要大于等于父类的权限 方法重写时可以用super关键字先调用父类的方法,再定义自己额外的功能,也可以不调用,完全覆盖
继承后的特点之构造方法:1.构造方法和类名是一致的,所有子类是不能继承父类构造方法的
2.构造方法的作用是初始化成员变量,所以子类的初始化过程中必先执行父类的初始化动作,子类的构造方法中有一个默认的super()来调用父类的构造方法.父类成员变量初始化后才可以给子类使用
父类空间优先于子类对象产生,每次创建子类对象时,先创建其父类空间,再创建子类的对象本身.目的在于子类对象中包含了其对应的父类空间,便可以包含父类的成员,如果父类成员非private修饰,则子类对象可以随意使用父类成员
super代表父类的存储空间标识(可以理解为父类的引用)
this代表当前对象的引用(谁调用就代表谁)
super()和this()都必须放在构造方法的第一行,所有不能同时出现
java只支持单继承不支持多继承,但支持多层继承 子类和父类是一种相对的概念 顶层父类是Object类,所有类默认继承Object类
没有方法体的方法就是抽象方法,含有抽象方法的类就是抽象类 关键字abstract 产生的由来,父类的方法被子类重写,每个子类重写的方法都不尽相同,那么父类的方法声明和方法主体,只有方法声明还有意义,方法主体则没有存在的意义.
使用abstract修饰的方法就是抽象方法,抽象方法只包含一个方法名,没有方法体
如果一个类 包含抽象方法那么该类必须是抽象类,但是抽象类不一定有抽象方法
继承抽象类的子类,必须重写父类的全部抽象方法,否则该类也必须是抽象类,并且最终必须有子类实现该父类的抽象方法,否则从最初的父类到最终的子类都不能创建对象就失去了意义
子类实现父类抽象方法,这种方法重写的操作也叫做实现方法
抽象类的注意事项:
1.抽象类不能创建对象,如果创建会编译不通过而报错,只能创建其非抽象子类的对象.理解:抽象类如果能创建对象,那么因为其抽象方法没有方法体,对象无法调用,失去意义.
2.抽象类中可以有构造方法,使其子类创建对象时,初始化其父类成员.
3.抽象类中不一定包含抽象方法,但有抽象方法的类一定是抽象类
4.抽象类的子类必须重写父类的所有抽象方法,否则会编译不通过而报错,除非其子类也是抽象类