类的方法

1.方法

  • 方法是完成特定功能的、相对独立的程序段。方法一旦定义,可以在不同的程序中多次调用。
  • 方法的设计要遵循功能单一原则,即一个方法只干一件事。

2.实例方法

  • 实例方法(也叫做 non-static )包括属性和方法,也称为实例变量和实例方法。

  • 成员方法包括实例方法static方法( 静态方法)

  • 实例方法,因为非本类/本类非实例方法中使用时需要使用类的对象(实例)才能调用

  • 实例方法在同一个类中可以相互调用

    public class FunctionDemo { 
      public void say() { 
    System.out.println("say()");
    }
    }
    public class FunctionTest {
    public static void main(String[] args) {
    //创建FunctionDemo的实例/对象
    FunctionDemo demo = new FunctionDemo();
    //对象.方法()调用
    demo.say();
    }
    }

3.实例变量

  • 实例变量,是声明在方法之外,类里面的变量。

  • 实例变量的作用域:

    ​ 就近原则,实例变量的作用域是整个类,在这个类的所有实例方法中都可以访问。实例变量可以在定义

    ​ 的时候不初始化值,因为实例变量在实例化对象后会有默认值,默认值根据实例变量的类型决定。

4.实例变量与局部变量的区别

  • 作用域不同(局部变量的作用域仅限定义于他的方法中)
  • 有无默认值(实例变量有(看数据类型),局部变量没有默认值)
  • 在同一个方法中不允许出现同名的局部变量,在不同的方法中可以有同名的局部变量
  • 一个类中可以有同名的局部变量和实例变量,在方法中优先使用局部变量

5.构造方法

5.1构造方法 是一个特殊的方法

  • 构造方法没有返回值,也不是 void
  • 构造方法的方法名要和类名相同,包括大小写
  • 构造方法分为有参构造和无参构造(默认构造),它们之间是重载关系。
  • 一般有参构造是为实例变量初始化的。
  • 如果不自定义构造方法,那么 Java 会自动给类写一个 public 无参构造。如果显式的声明了构造方法(不管是否有参数) Java 都不会给这个类生成无参构造。
[访问修饰符] 方法名([参数列表]){ //方法头 
//方法体 
}

5.2构造方法的使用

  • 构造方法是对象初始化(实例化)时调用的,也就是说是 new 对象时调用的
public static void main(String[] args) { 
    Student stu = new Student(); 
    stu.name = "李四"; 
    System.out.println(stu.name); 
    
    Student stu1 = new Student("张三",'男',20); 
    System.out.println(stu1.name); 
}

6.static方法

6.1 static方法的调用

  • #### 使用 static 修饰的方法叫做 static (静态)方法,它属于类,所以也叫做类方法。
public class Demo{ 
    public static void add(int num, int num1){
        // 省略代码 
    } 
}
  • #### 对于 static 方法的调用,我们可以使用 类名.方法名 直接调用,也可以使用 对象.方法名 调用。
Demo.add(1, 2); 
// 直接使用 类名调用 Demo demo = new Demo(); 
demo.add(1, 2); 
// 对象调用
  • #### 虽然对于 static 方法而言,两种调用方式都可以,但是我们要求大家使用第一种方式也就是直接使用类名来调用,因为它是属于类的。如果你使用第二种方式调用,会受到鄙视的。

6.2 static方法的生命周期

  • #### static 方法在类被加载的时候就加载了(并不意味着要执行),而且之加载一次。实例方法在对象初始化的时候加载。

6.3实例方法和static方法的区别

  • 相同点:都是属于成员变量

  • 不同点:

    • 由于 static 方法比实例方法的声明周期长,所以在一个类中实例方法可以直接调用 static 方

    法。而 static 方法不能直接调用实例方法。

    • static 方法中不能够使用实例变量,而实例方法可以。

    • static 方法中不能够使用 this

7.this

  • 哪个对象的 this 就代表当前对象。也就是说 谁调用就是谁 。

  • this 其实是一个引用,对自身的一个引用。所以 this 能调用实例变量、实例方法、构造方法、类变量、类方法。不能调用局部变量。

  • 不推荐使用 this 来调用类变量或类方法。在本类中可以直接调用类变量和类方法,在其他类中使用 类 名.类变量/类方法 调用。

8.初始化

8.1实例初始化

  • 在类中会存在一个或多个 {} 代码块,它的作用是初始化类的实例变量。它里面可以写多行代码,也可以调用方法。

  • 如果一个类中有多个实例初始化块,执行顺序是先声明先执行。

    public class Demo{ 
      // 实例初始化 
    {
    // 代码块
    }
    }

8.2static初始化

  • static 初始化和实例初始化类似,作用是初始化 static 变量。只在类第一次加载的时候执行。

    public class Demo{ 
    // static初始化 
    static{
    // 代码块
    }
    }

9.类的成员不包括一下几个

  • 构造方法

  • 实例初始化

  • static 初始化

10.实例化对象时执行顺序

public class Demo { 
    { 
        System.out.println("实例初始化"); 
    }
    
     static { 
        System.out.println("static初始化"); 
    }
    
    public Demo() { 
        System.out.println("构造方法"); 
    } 
}
  • #### 输出结果如下:
static初始化 
实例初始化 
构造方法

ps: static在类的加载的时候就在进行加载了,实例初始化在定义对象时候加载类中所有的属性和方法,然后才使用构造函数创建对象。所以他们的执行顺序为:static --> 实例初始化 --> 构造方法

11可变参数 int ...nums

  • 参数中可以有一个或多个同一类型的参数

  • 在一个方法中最多只可以存在一个可变参数

  • 在有可变参数的时候,其他方法也有满足参数的方法,按准确度高的使用(先用可以确定的方法,没有在使用可变参数)

    public void add(int... nums) {
        // 使用方式和数组一样
    System.out.println("add(int... nums)");
    }

12.菲波那切数列

  • 1,1,2,3,5,8,...每一项等于前两项之和

    public int add(int num) {
        if(num == 1 || num == 2) {
    return 1;
    }else {
    return add(num - 1) + add(num - 2);
    }
    }
    public static void main(String[] args) {
    // 斐波那契数列 1 1 2 3 5 8 13 21
    for (int i = 1; i < 11; i++) {
    System.out.println(new DemoTest().add(i));
    }
    }

总结:

今天进入了面向对象,才算真的进入了Java的核心知识,对于老师讲的数组和对象String的内存解析感觉十分的生动,就是最后String的内存解析还是有点不是很了解,然后今天复习了一下前几天的知识点。

标签

评论


© 2021 成都云创动力科技有限公司 蜀ICP备20006351号-1