学了一部分才开的个人博客并开始使用markdown写笔记,前面的笔记就不补了。


Chapter 07

可变参数

  • 可变参数的使用

    ***可变参数示例:***实现多个参数求和

    1
    2
    3
    public int sum(int... nums){
    //方法体
    }

    代码解读:

    1.int… 表示接收的是可变参数,类型是int,可以接收多个int类型参数。

    2.使用可变参数时,可以当作数组来使用。

    3.遍历nums求和。

  • 注意事项和使用细节

    1.可变参数的实参可以为数组。

    2.可变参数的本质就是数组。

    3.可变参数可以和普通类型的参数一起放在形参列表,但是需要保证可变参数在最后

    1
    2
    3
    4
    5
    6
    /**
    * 示例
    */
    public void f(String str,double... nums){
    //方法体
    }

    4.一个形参列表中只能出现一个可变参数。

作用域

  • 作用域的基本使用

    1.局部变量:一般指在成员方法中定义的变量,是除了属性之外的其他变量,作用域为定义它的代码块中。局部变量赋值后才可以使用,即无默认值。

    2.全局变量:即属性,作用域为整个类体。全局变量可以不赋值,直接使用(默认值)。

  • 注意事项和使用细节

    1.属性和局部变量可以重名,访问时遵循就近原则

    2.在同一个作用域中,两个局部变量不能重名。

    3.属性生命周期较长:伴随对象;局部变量生命周期较短:伴随代码块。

    4.属性不仅可以被本类使用,也可以被其他类使用(通过对象调用);局部变量只能在本类的对应方法中使用。

    5.属性可以加修饰符,局部变量不可以加修饰符。

构造方法/构造器

基本语法:

[修饰符] 方法名(形参列表){

​ 方法体;

}

说明:

1.构造器的修饰符可以默认。

2.构造器没有返回值

3.方法名必须和类的名字一致。

4.参数列表的规则和成员方法相同。

5.构造器的调用由系统完成。

主要作用:完成对新对象的初始化

  • 快速入门

    ***示例:***创建Person对象时,就直接指定这个对象的年龄和姓名

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    public class Example{
    public static void main(String[] args){
    //当我们创建一个对象时,直接通过构造器指定名字和年龄
    Person p1 = new Person("Smith",80);
    }
    }

    class Person{
    String name;
    int age;
    public Person(String pName,int pAge){
    name = pName;
    age = pAge;
    }
    }

    解读:

    1.构造器没有返回值**(也不能返回void类型)**

  • 注意事项和使用细节

    1.一个类可以定义多个不同的构造器,即构造器的重载。

    2.构造器是完成对象的初始化的,不是创造对象

    3.创建对象时,系统自动的调用该类的构造方法。

    4.如果程序员没有定义构造器,系统会自动给类生成一个默认无参构造器(也叫默认构造器)。

    5.一旦定义了自己的构造器,默认的构造器就覆盖了,就不能再使用默认的无参构造器,除非自己显式定义无参构造器。

    无参构造器语法:

    方法名(){

    }

对象创建的流程分析

案例:

1
2
3
4
5
6
7
8
9
class Person{
int age = 90;
String name;
Person(String n,int a){
name = n;
age = a;
}
}
Person p = new Person("小明",20);
  • 流程分析:

    1.加载Person类信息(Person.class),只会加载一次

    2.在堆中分配空间(地址)。

    3.完成对象初始化:

    • 默认初始化。(age = 0,name = null)
    • 显式初始化。(age = 90,name = null)
    • 构造器的初始化。(age = 20,name = 小明)

    4.将对象在堆中的地址返回给p(p是对象名,也可以理解为对象的引用)。

this关键字

this代表当前对象。

  • 注意事项和使用细节

    1.this关键字可以用来访问本类的属性、方法、构造器。

    2.this用于区分当前类的属性和局部变量。

    3.this关键字访问成员方法的语法:

    this.方法名(参数列表);

    4.this关键字访问构造器的语法:只能在构造器中访问另一个构造器,不可以在普通方法中使用。

    this(参数列表);

    该语句要使用,则必须放在构造器的第一句

    5.this不能在类定义的外部使用,只能在类定义的方法中使用