面向对象2

main方法:

? main方法使用说明:

? 1、main方法作为程序的入口

? 2、main方法作为一个普通的静态方法

? 3、main方法作为我们和控制台交互的方式。

面向对象2

public class MyTest01 {
  public static void main(String[] args){
      for(int i=0;i<args.length;i++){
          System.out.println("**************"+args[i]);
      }
  }
}

代码块:

? 代码块的作用:通常用来初始化当前类或者对象

? 代码块的结构:可以使用static修饰

? 静态代码块:随着类的加载而执行

? 非静态代码块:随着对象的创建而执行

? 如果我们定义了多个代码块,执行顺序是按照定义的顺序(当然静态代码块肯定是比非静态代码块先执行)

public class MyTest01 {
  public static void main(String[] args){
      Demo demo=new Demo();
  }

}
class Demo{
    private String name;
    public Demo(){
        System.out.println("构造方法执行");
    }
    {
        System.out.println("第一个非静态代码块");
    }
    {
        System.out.println("第二个非静态代码块");
    }
    static{
        System.out.println("第一个静态代码块");
    }
    static{
        System.out.println("第2个静态代码块");
    }

}

面向对象2

所以得出结论构造方法最后执行哈哈哈

final:

? 可以用来修饰的结构:类 方法 变量

修饰类:

? 不可被继承 System String StringBuffer类都是final

修饰方法:

? 不可被子类重写 Object的getClass wait notify notifyAll方法

修饰变量:

? 不可以在改变了(成为常量)

? 我们知道为属性赋值有几个位置:1、默认初始化2、显式初始化3、代码块4、构造器

? 5、set方法

? 但是如果我们的是final属性,只可以考虑三个(显式 初始化 代码块初始化 构造器初始 化),因为一旦构造器执行我们的对象就会被创建,此时如果final变量还没有被初始 化,就会报错。

class Demo{
    private final int a=1;
    private final int b;
    private final int c;
    {
        b=2;
    }
    public Demo(){
        c=3;
    }
}

? 修饰局部变量就是一旦初始化,就不可以修改了,只能使用,不能再次更改

?

public class MyTest01 {
  public static void main(String[] args){
      new MyTest01().add(new Demo());
  }
  void add(final Demo demo){
      demo.i++;
  }

}
class Demo{
    int i=0;
}

这样是没错误的,因为final修饰的是一个对象,但是这个对象的属性并没有被final修饰

面向对象2

上一篇:20210826每日总结


下一篇:干货分享!悬浮按钮设计规范和经典实践