Java中主类中定义方法加static和不加static的区别(前者可以省略类名直接在主方法调用(类名.方法),后者必须先实例化后用实例调用)
知识点:1.Getter and Setter 的应用2.局部变量与成员变量(也可叫做全局变量)3.Static关键字的用法a.成员变量被static修饰后的所有类的共享属性b.方法被static修饰之后,在本类内调用的类名省略问题;以及不用Static,即使在本类内也必须先实例化4.This关键字的用法this:是当前类的对象引用。简单的记,它就代表当前类的一个对象。注意:谁调用这个方法,在该方法内部的this就代表谁。this的场景:解决局部变量隐藏成员变量*///定义学生类class Person {//姓名private String name="刘德华";//年龄private int age=45;//所有对象共享的属性用static修饰,可以直接被类名直接调用static String country = "中国";//姓名获取值public String getName() {return name;}//姓名设置值public void setName(String name) { //name = "林青霞";//name = name; //变量的使用规则:就近原则//这里是类名,目前还没有说过类似的用法,所以这个是有问题的//这里的调用只能通过对象名//这个对象如果存在,它应该代表的是Student的一个对象。//那么,谁能够代表当前类的对象呢? java就提供了一个关键字 this//Student.name = name;this.name = name;}//年龄获取值public int getAge() {return age;}//年龄赋值public void setAge(int age) {this.age = age;}}//测试类public class PersonClass {public void show()//定义非静态方法,必须经过实例化后才能调用{System.out.println("哈哈");}public static void show2()//但是当以静态方法后,可以直接用 类名.函数名//调用,在本类内,类名可以忽略,这就是常见的public static...的由来{System.out.println("哈哈你妹");}public static void main(String[] args) {//创建人对象Person s1= new Person();Person s2= new Person(); PersonClass s3=new PersonClass();s3.show();//不能直接写show(),因为是非静态方法,必须实例化后通过实例调用show2();//给成员变量赋值s1.setName("林青霞");s1.setAge(27);s1.country="美国";//静态变量的值是共享的,所以以最后一次修改的为准,即全变成了日本s2.country="日本";//静态属性最好用类名直接调用,要不会警告的哦//Static 与Final是不同的哦,Static类似C语言的Extern,Final类似Define//Static定义的变量的值仍然是可以修改的,但是Final指定在定义的时候赋值一次//获取数据System.out.println(s1.getName()+"---"+s1.getAge());//直接用类名.调用Name和// age是绝对不可以的System.out.println(s2.getName()+"---"+s2.getAge());System.out.println(s1.country);//静态属性最好不要用类的实例调用,会警告的System.out.println(s2.country);System.out.println(Person.country);//Person.后面只提示country,//不会提示name和age哦}}