b站黑马Java就业班笔记P101-P200

#Java笔记2

p107

局部变量和成员变量的区别

  1. 局部变量:在方法内部

    成员变量:在方法外部,直接写在类当中

  2. 局部变量:只有在方法中可以使用,出了方法就不能再用了

    成员变量:整个类中都可以通用

  3. 局部变量:没有默认值,必须手动赋值

    成员变量:有默认值

  4. 局部变量:栈内存

​ 成员变量:堆内存

  1. 局部变量:方法进栈诞生,方法出栈消失

    成员变量:对象创建诞生,对象垃圾回收消失

p108

  1. 封装性:将细节信息封装起来,对外界不可见
    • 方法就是封装
    • private也是封装(用了private,只有本类可以访问,超出类了就不能访问)
    • 间接访问private变量用getxxx和setxxx。
    • 对于boolean类型,setxxx和isxxx

p112

构造方法

  1. 构造方法的名称必须和类名称一样,大小写也一样
  2. 构造方法不需要写返回值类型,void也不写
  3. 构造方法不能用return返回具体的值
  4. 如果没有写构造方法,编译器会默认一个构造方法,没有参数,方法体什么都不做
  5. 一旦写了构造方法,编译器就没有默认的构造方法了

P113

标准类

  1. 所有的成员变量都要用private修饰
  2. 为每一个成员变量写一个get和set方法
  3. 编写无参数的构造方法
  4. 编写全参数的构造方法

自动生成代码

code---->generate

p114

API:应用程序编程接口。JDK提供的现成的类的说明文档。

API文档最应该关注的三点:包路径、构造方法、方法摘要

P115

引用类型使用

  1. 导包

    • import 包路径.类名称
    • 如果目标类和当前类在同一个包下面,可以省略导包
    • 只有java.lang不需要导包,其他的都要导包
  2. 创建

    • 类名称 对象名=new 类名称()
  3. 使用

    • 对象名.成员方法名()

P118

匿名对象

  1. 只能使用一次,下次使用只能创建一个新的对象
  2. 如果只使用一次就可以使用匿名对象

P121

Random的nextInt()随机数为整个int范围,nextInt(n),左闭右开的区间。(比如n=10,范围就是0-9)

P128

  1. 如果想要对ArrayList使用基本数据类型,必须使用类型对应的包装类(包装类都位于java.lang下面)
    • bye Byte
    • short Short
    • int Integer
    • long Long
    • float Float
    • double Double
    • char Character
    • boolean Boolean
  2. 自动装箱拆箱,基本类型和包装类型可以自动转换

P133

字符串特点:

  1. 字符串内容用于不可变
  2. 字符串可以共享使用(节省内存)
  3. 字符串效果是上是char[]的字符数组,底层是byte[]字符数组

P135

程序中直接写双引号的字符串,都是在字符串常量池中的

对于引用类型来说,==比较的是地址

P136

  1. 任何对象都可以用object接收
  2. equals具有对称性
  3. 一个常量一个变量推荐把常量写在前面,例如“abc".equals(str)

P137、P138、P139、P140

  1. length
  2. concat
  3. charAt
  4. indexOf
  5. substring
  6. toCharArray
  7. replace
  8. split(方法参数是正则表达式,英文的句号.切割不了,用双斜杠点切割\\ .)

P145

  1. 使用static修饰成员方法,就成为了静态方法,静态方法不属于对象,属于类
  2. 如果没有static关键字,必须先创建对象,通过对象才能使用
  3. 有了static关键字,不需要创建对象,直接用类名称就可以使用
  4. 成员变量或是成员方法有了static都推荐使用类名称进行调用
  5. 静态只能访问静态,不能访问非静态(在内存中先有静态内容,再有非静态内容)
  6. 静态方法不能用this(this代表当前对象)
  7. 根据类名称放问静态成员变量时和对象没有关系,只和内存有关系

##P147

  1. 静态代码块当第一次用到本类时,静态代码块执行唯一一次
  2. 静态内容总是优先于非静态,静态代码块比构造方法先执行
  3. 典型用途:一次性的对静态成员变量进行赋值

P148

  1. toString将数组转化为字符串

  2. 字符串默认是sort升序排列

  3. 如果是自定义类型,必须要compareable或者comparator接口支持

P150

  1. abs(绝对值)
  2. ceil(向上取整)
  3. floor(向下取整)
  4. round(四舍五入)

P152

  1. 面向对象:封装、继承、多态
  2. 继承是多态的前提
  3. 继承解决共性抽取的问题
  4. 父类(基类、超类)
  5. 子类(派生类)
  6. 子类可以拥有父类的内容
  7. 子类可以拥有自己的专属内容

P154

1.继承关系中如果父子成员变量充满,则创建子类对象访问时有两种方法

  • 直接通过子类对象访问成员变量(等号左边是谁就优先用谁,没有就向上找)
  • 简洁通过成员方法访问成员变量(该方法属于谁就用谁的,没有就向上找)

P155

局部变量:直接写成员变量名

本类成员变量:this.成员变量名

父类成员变量:super.成员变量名

P156

父子继承访问成员方法的规则:创建的对象是谁,就优先用谁,没有就向上找

成员变量和成员方法都是向上找的

P157、P158

重写override(覆盖、覆写)

  1. 在继承关系中方法名称一样,参数列表也一样
  2. 重载overload方法名称一样,参数列表不一样
  3. Object类是所有类的公共最高父类
  4. 子类的返回值必须小于等于父类的返回值
  5. 子类方法的权限必须大于等于父类方法的修饰权限(default不是关键字)

P160

继承关系,父子构造方法:

  1. 子类构造方法中默认隐含一个super,先执行父类再执行子类
  2. 子类调用super必须再构造方法的第一句,而且只能用一次super
  3. 子类必须调用父类的构造方法,不写就用默认的,写了用自己的

P161

super用法

  1. 在子类的成员方法中访问父类的成员方法
  2. 在子类成员方法中访问父类成员变量
  3. 在子类构造方法中访问父类构造方法

P162

super访问父类内容,this访问子类内容。

this作用呢

  1. 在本类成员方法中访问本类成员变量
  2. 在本类成员方法中访问本类的另一个成员方法(而不是父类的方法)
  3. 在本类的构造方法中访问另一个构造方法(this在构造方法中调用也必须是第一个语句。super和this不能同时在构造方法中使用)

P164

Java特点

  1. 单继承的,只能有一个直接父类
  2. 可以多级继承
  3. 一个父类可以有很多子类

P166、P167、P168

抽象方法:加上abstract关键字,去掉大括号,直接分号

抽象类:抽象方法必须在抽象类,在class之前加上abstract

  1. 不能直接创建抽象类对象
  2. 必须用子类继承抽象父类
  3. 子类必须覆盖重写所有抽象方法
  4. 抽象类中不一定有抽象方法

P171

接口:公共规范标准。符合规范标准就能通用

接口最重要的内容就是其中的抽象方法

接口中可包含的内容:

  • java7 常量、抽象方法
  • java8 默认方法、静态方法
  • java9 私有方法

P172

  1. 接口中抽象方法,修饰符必须是固定的public abstract
  2. 两个关键字可以选择性省略
  3. 接口不能直接使用,必须有一个实现类来实现接口
  4. 接口的实现必须覆盖重写接口中所有的抽象方法
  5. 创建实现类对象进行使用
  6. 如果实现类没有覆盖重写所有的抽象方法,这个实现自己就必须是抽象类
  7. 不能通过接口实现类的对象来调用接口中的静态方法,通过接口名称直接调用静态方法

P181

  1. 接口也可以使用成员变量,但必须使用public static final三个关键字进行修饰
  2. 一旦使用final说明不可改变
  3. 可以省略public static final关键字但是省略也是这个意义
  4. 接口中的常量必须赋值
  5. 接口中常量的名称完全大写,用下划线分隔

P183

  1. 接口不能有静态代码块
  2. 接口不能有构造方法
  3. 一个类父类唯一,一个类可以实现多个接口
  4. 如果多个接口存在重复的抽象方法,只覆盖重写一次即可
  5. 如果实现类没有覆盖重写接口中的所有抽象方法,则实现类必须是抽象类
  6. 如果实现类实现的接口中有重复的默认方法,必须对冲突的默认方法进行覆盖重写
  7. 一个类继承父类也实现接口了继承优先于接口实现

P184

  1. 类与类是单继承的
  2. 类与接口是多实现的,一个类可以实现多个接口
  3. 接口和接口是多继承的
  4. 多个父接口的抽象方法可以重复
  5. 多个父接口中的默认方法如果重复,必须进行覆盖重写,必须带着default关键字

P185

  1. 面向对象特性:封装、继承、多态
  2. extends和implements是实现多态的前提

P186

代码中体现多态性:父类引用指向子类对象

父类名称 对象名=new 子类名称();

接口名称 对象名=new 实现类名称();

P187

多态访问成员变量:

  1. 直接通过对象名称访问成员变量,看等号左边是谁就优先用谁,没有就向上找
  2. 间接用成员方法访问,看该方法属于谁就用谁,没有就向上找

P188

在多态代码中成员方法访问规则:

看new的是谁就优先用谁,没有就向上找

P190

  1. 对象向上转型是多态的写法
  2. 向上转型一定是安全的

P191

对象一旦向上转型就无法调用子类特有方法(用对象的向下转型)

子类名称 对象名=(子类名称)父类对象

将父类对象还原为子类对象,类似于强制转换

P192

如何知道一个父类的引用是一个什么类型的子类

格式:对象 instanceof 类名称

将会得到一个boolean值结果,判断对象能否当做后面类型的实例

P195

final的常用四种方法

  1. 修饰一个类
  2. 修饰一个方法
  3. 修饰一个局部变量
  4. 修饰一个成员变量

P196-P199

  1. final 修饰一个类的时候,没有任何的子类
  2. 一个类是final的,其中的所有成员方法都无法进行覆盖重写
  3. final修饰成员方法,这个方法就是最终方法,不能被覆盖重写
  4. 对于方法来说,abstract和final矛盾
  5. final修饰局部变量,该局部变量不能改变。
  6. 对于成员变量来说,由于成员变量有默认值,用了final之后必须手动赋值,就没有默认值了
  7. 对于final的成员变量,要么直接赋值,要么通过成员方法赋值。(用构造方法赋值必须保证所有构造方法都能赋值)

P200

java中的四种权限修饰符

​ public > protected > default > private

同一个类 Y Y Y Y

同一个包 Y Y Y N

不同包子类 Y Y N N

不同包非子类 Y N N N

你可能感兴趣的:(Java基础学习)