一、static 关键字

1、static关键字可以修饰成员变量和成员方法

2、特点:

  • 随着类的加载而加载
  • 优先于对象存在
  • 被类的所有对象共享
  • 可以通过类名调用
class Person{
            int num1 = 10;//普通变量
            static int num2 = 20;//静态变量
        }
        public class PersonDemo{
            public static void main(String[] args){
                Person p = new Person(); //初始化对象
                System.out.println(p.num1);//输出10
                //System.out.println(Person.num1);//会报错:不能引用非静态变量
                System.out.println(Person.num2);//随类的加载而加载,输出20
                System.out.println(p.num2);//输出20
            }
    }

3、注意:

  • 在静态方法中是没有 this 关键字的
  • 静态方法只能访问静态的成员变量和静态的成员方法

4、创建 Test.java 文件

public class Person{
        String name;
        static String contry;
        public static void main(String[] args){
            Person p1 = new Person();
            p1.name = "";
            p1.contry = "日本";
            System.out.println(p1.name+"是"+p1.contry+"人");  //输出:小是日本人
    
            Person p2 = new Person();
            p2.name = "lemon";
            Person.contry = "美国";//通过类名调用
            System.out.println(p2.name+"是"+p1.contry+"人");//输出:lemon是美国人
    
            Person p3 = new Person();
            p3.name = "姚明";
            Person.contry = "中国"; //通过类名调用
            System.out.println(p3.name+"是"+p3.contry+"人");//输出:姚明是中国人
            System.out.println(p2.name+"是"+p2.contry+"人");//输出:lemon是中国人
            System.out.println(p1.contry);//输出:中国
        }
    }

二、main方法

public static void main(String[] args){
    //方法体
}

1、使用 main() 方法应注意:

  • 访问控制权限是公有的(public)
  • main() 方法是程序的入口
  • String[] args 是一个字符串数组,早期是为了键盘录入数据的
  • main() 方法是静态的。如果要在 main() 方法中调用本类中的其他方法,则该方法也必须是静态的,否则需要先创建本类的实例对象,然后再通过对象调用成员方法
  • main() 方法没有返回值,只能使用 void
  • main() 方法具有一个字符串数组参数,用来接收执行 Java 程序的命令行参数。命令行参数作为字符串,按照顺序依次对应字符串数组中的元素
  • 除了形参变量名可以任意设置以外,main() 方法中的其他内容都是固定不变的

2、在 main() 方法中调用静态方法和非静态方法

class PersonDemo{
        public void play(){ //公共的非静态方法
            System.out.println("我们去玩吧");
        }
        public static void book(){ //公共的静态方法
            System.out.println("我们一起看出吧");
        }
        public static void main(String[] args){
            //play();//不可以直接调用非静态方法
            book();//可以直接调用静态方法
            PersonDemo p = new PersonDemo();//实例化对象
            p.play();//调用非静态方法,通过类的实例化来调用
        }
    }

3、创建 MainTest.java 文件,编写代码实现程序执行时统计传递参数的数量及每个参数值。

public class MainTest{
        public static void main(String[] args){
            int n = args.length;//获取参数数量
            System.out.println("一共有"+n+"个参数");
            if (n > 0){//判断参数个数大于0
                for (int i = 0; i < n; i++){
                    System.out.println(args[i]);//循环输出每个参数的值
                }
            }
        }
    }

运行 cmd ,执行上面的程序:

java main为什么static java main static_静态方法