static静态关键字

1.static是什么?

1.static是静态的意思,是一个修饰符,就像是一个形容词,是用来形容类,变量,方法的。
2.static修饰变量,这个变量就变成了静态变量,修饰方法这个方法就成了静态方法,
3.static关键字方便在没有创建对象的情况下来进行调用(方法/变量)。
4.static关键字的作用
5.static关键字你可以理解为是一个形容词,一般是用来形容类、方法、变量,代码块,还有一个作用是用来静态导包
我们只讨论它的三个用法。

1.1修饰变量

不使用static关键字访问对象的属性:

public class Test {
   String name;
   int age;

    public static void main(String[] args) {
        Test test = new Test();
        test.name = "吕布";//需要先创建对象   才能设置对象的属性
        Test.age=18;//这样写 根本就不会出来 age这个属性
    }
}

使用static关键字访问对象属性:

public class Test {
   static String name;
   static int age;

    public static void main(String[] args) {
        Test.name = "吕布";//使用static关键字修饰变量    可以通过  类名.属性名  直接访问
        Test.age=18;//不需要在去实例化对象
    }
}

注意:如果一个类的成员变量被static修饰了,那么所有该类的对象都共享这个变量。无论这个类实例化多少对象,它的静态变量只有一份

public class Test {
   static String name="貂蝉";
   static int age;

    public static void main(String[] args) {
        Test test1 = new Test();
        test1.name="吕布";
        Test.name="赵云";
        Test test2 = new Test();
        Test test3 = new Test();
        System.out.println(test1.name);
        System.out.println(test2.name);
        System.out.println(test3.name);
    }
}

输出结果:
请添加图片描述

1.2修饰方法

用static关键字修饰的方法叫做静态方法。静态方法我们已经用过,它有一个特点相信你已经很熟悉,那就是不需要创建对象就可以直接使用。

注意:正常情况下  是两个类  这里演示  就写在一个类了
public class Test {

    public static void hello(){    //静态方法
        System.out.println("hello");
    }
    public void hi(){   //普通方法
        System.out.println("hi");
    }

    public static void main(String[] args) {
       Test.hello();  //调用静态方法  只需要 类名.方法即可
        Test test = new Test();
        test.hi();  //而调用普通方法  需要实例化对象
    }
}

静态方法不能使用类的非静态变量

public class Test {
    static String name;
    int age;
    public static void main(String[] args) {
       name="貂蝉";
       age=1;  //静态方法不能直接访问非静态变量
       //这个地方会报错
    }
}

静态方法可以直接调用静态方法,但是调用普通方法只能通过对象的实例才能调用。

public class Test {

    public static void hello(){   //静态方法
        System.out.println("hello");
    }
    public void hi(){   //普通方法
        System.out.println("hi");
    }
    public static void main(String[] args) {
        hello();
        hi();//错误的调用方法,静态方法不能直接调用普通方法
        //普通方法调用是要实例化对象
        Test test = new Test();
        test.hi();
    }
}

3.静态代码块

public class Test {

    static {
        System.out.println("我是大哥");
    }
    public static void main(String[] args) {
        System.out.println("我是小弟");
    }
}

运行结果:
请添加图片描述
上面中static{ }就是一个静态代码块。

我们在main方法中没有编写任何代码,可是运行的时候,程序还是会输出我被调用了,由此我们可以发现静态代码块是不需要依赖main方法就可以独立运行的。

关于静态代码块你只需要记住一句话:在类被加载的时候运行且只运行一次。

静态代码块中变量和方法的调用也遵守我们之前所说的规则,即只能直接调用静态的属性和方法。

2.static修饰的成员变量是什么?有什么特点?

静态成员变量(有static修饰,属于类,加载一次,内存中只有一份)访问格式

类名.静态成员变量(推荐)

对象.静态成员变量(不推荐)

实例化成员变量(无static修饰,属于对象),访问格式:

对象.实例成员变量

3. 两种成员变量各自在什么情况下定义?

静态成员变量:表示在线人数等需要被类的所有对象共享的信息是

实例成员变量:属于每个对象,且每个对象的该信息不同时(如:name,age.money…)

4.每种成员方法的使用场景是怎么样的?

表示对象自己的行为的,且方法中需要直接访问实例成员,则该方法必须申明成实例方法

如果该方法是以执行一个通用功能未目的,或者需要方便访问,则可以申明称 静态方法

public class User{
     //静态成员变量
     static String name;
     //实例成员变量
     int age;
}
public class Test{
	public static void main(String[] args){
	//访问区别
	System.out.println(User.name);
	System.out.println(User.age);//报错
	
	User u=new User();
	System.out.println(u.age);
	System.out.println(u.name);
	//静态成员变量可以用类,也可以用对象访问
	//实例成员变量只能用对象访问

	//static 修饰静态成员变量的特点
	User u1=new User();
	u1.age=23;
	u1.name="貂蝉";

	User u2=new User();
	u2.age=35;
	u2.name="吕布";
	
	System.out.println(u1.age);//23
	System.out.println(u1.name);//吕布
	
	}
	
}

static访问注意事项

静态方法只能访问静态的成员,不可以直接访问实例成员

实例方法可以访问静态的成员,也可以访问实例成员

静态方法中是不可以出现this关键字的
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值