1 package OOP;
2
3 public class Static {
4 public static int age;//加了static 修饰符代表为静态变量=类变量,类可以直接调用赋值
5 private String name;//不加static 修饰符代表为非静态变量,只能通过创建对象调用赋值
6 public static void add(){//静态方法同上
7 System.out.println("add");
8 }
9 public void test(){//非静态方法同上,
10 System.out.println("test");
11 }
12 public static void main(String[] args) {
13 int sum;
14 Static a=new Static();
15 sum=10;
16 //Static.age=10;
17 Static.add();
18 // Static.test();
19 a.test();
20 //a.age=10;
21 a.name="hpp";
22 System.out.println(a.name+"\t"+age);
23
24
25 }
26 }
总结:静态变量静态或者方法可以直接使用类调用,非静态变量或方法必须new一个对象调用。
1 /**
2 * Static关键字
3 *1 static修饰属性:静态变量
4 *实例变量又称为成员变量:
5 *实例变量必须对象实例化才能调用,
6 *类变量用Static修饰也叫做静态变量,类名就可以直接调用
7 *
8 * 2 static修饰方法: 静态方法
9 *和静态变量相同,可以在方法中直接通过类名调用,也可以通过创建对象进行调用
10 * 非静态方法,只能通过对象调用,无法通过类名直接调用。
11 * 静态方法中不可以使用this,super等关键字,因为没有实例的存在 ···
12 */
13 public class Demo3 {
14 static int age=1;
15
16 @Test
17 public void add(){
18 int age=10;
19 Demo3 demo3=new Demo3();
20 demo3.age=8;
21 System.out.println(demo3.age);
22 System.out.println(age);
23 //变量声明在方法外成为实例变量,如果方法内定义了同名变量
24 // 对象想要调用必须通过demo3.age进行赋值(为了进行区分,此时age与demo.age不是同一个变量)
25 //如果没有定义同名变量,则age与demo3.age没有区别指的是同一个变量,
26 // 直接调用赋值或者通过对象调用都可以,一个类的每个对象都有一套自己的非静态类属性,
27 Demo3 demo31=new Demo3();
28 System.out.println(demo31.age);
29 //对于static修饰的静态类变量,一个类的多个对象共享这个静态变量,其中一个对象修改变量值,
30 // 则其他对象调用此变量,是为修改过的变量
31
32 }
33
34
35 }