main方法:
? main方法使用说明:
? 1、main方法作为程序的入口
? 2、main方法作为一个普通的静态方法
? 3、main方法作为我们和控制台交互的方式。
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个静态代码块");
}
}
所以得出结论构造方法最后执行哈哈哈
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修饰