java从头开始--static关键字与代码块

static关键字

static:静态的。
关键字:被语言赋予特定含义的单词,都是小写。
static 关键字可以应用于修饰类的属性,方法,代码块以及内部类。
static属于类变量,类只有一份,因此static修饰的变量也只有一份,在调用时建议用类名直接调用。
static修饰的成员变量为静态变量,在内存中只有一份。
被static修饰的成员随类的加载而加载,优先于对象,被所有对象共享。
成员方法中可以访问成员变量,还可以访问静态变量。静态方法中不能访问成员变量,因为静态方法先于对象存在。但成员的可以调用静态的。
静态的方法通过类名调用。多个静态块按顺序执行。

实例:

代码实现:

public class Chinese {
    String name;
    int age;
    String address;
/*
    String country = "中国";
    country 是中国人共有的属性,因此可以用static修饰
    static修饰后变成类变量,类只有一个,所以static修饰的变量也只有一份,不归属与某一个类
    要调用时用类名直接调用
 */
    static String country = "中国";

    public void chineseTest(){
        System.out.println(name);
        System.out.println(country);
    }

    public static void  chineseStatic(){
        /*System.out.println(name);
        静态方法是类的,类先于对象创建
        静态的方法不能访问对象的属性,他先于对象存在
         */
        System.out.println(country);
    }
}

主函数:

public class ChineseTest {
    public static void main(String[] args) {
        //static修饰的变量,即静态方法用类名直接调用
        Chinese.country = "美国";//若前面已经给此静态变量赋值则可以通过此语句重新为变量赋值
        
        //static修饰的方法,即静态方法用类名直接调用
        Chinese.chineseStatic();
        
        Chinese zs = new Chinese();
        zs.name = "张三";
        zs.age = 19;
        zs.address = "汉中市汉台区";
        System.out.println(zs.name+"的国籍是"+zs.country);

        Chinese ls = new Chinese();
        ls.name = "李四";
        ls.age = 19;
        ls.address = "汉中市汉台区";
        System.out.println(ls.name+"的国籍是"+ls.country);
    }
}

运行结果:
在这里插入图片描述

代码块

代码块分为静态块和实例块。
实例1:
代码实现:

public class Demo {
    //静态变量可以直接通过类名调用
     static int num;
    /*
    有静态代码块必定先执行静态代码块,接下来是实例块,最后是构造方法
     */
    //静态块,属于类,类加载执行,多个静态类块按顺序执行
    //类加载只加载一次,静态块只执行一次
    static
    {
        System.out.println("静态代码块1");
    }
    static
    {
        System.out.println("静态代码块2");
    }
    //实例代码块:与成员方法类似,属于对象,每次在创建对象时调用,先于构造方法执行,可以有多个
    //实例代码块定义在类中,类似于一个没有名称的方法
    //当类加载时(创建对象,使用类中静态变量,静态方法),加载一次,长期不用是被销毁,再用再加载
    {
        System.out.println("实例代码块1");
    }
    {
        System.out.println("实例代码块2");
    }
    //构造方法
    public void demo() {
        System.out.println("构造方法");
    }

    public static void main(String[] args) {
        /*
        Demo d =new Demo();与new Demo();作用相同
        new Demo只是new加Demo构造方法创建一个新的对象
        Demo d =new Demo();new加Demo构造方法创建一个具体的对象,Demo d 指将以Demo为类型声明一个d,=指用d的对象指向内存中的对象
         */
        Demo d =new Demo();
        d.demo();
        System.out.println(Demo.num);
    }
}

运行结果:
在这里插入图片描述
实例2:
代码实现:

public class Demo {
    //静态变量可以直接通过类名调用
     static int num;
    /*
    有静态代码块必定先执行代码块,接下来是实例块,最后是构造方法
     */
     
    //静态块
    static
    {
        System.out.println("静态代码块1");
    }
    static
    {
        System.out.println("静态代码块2");
    }
    //实例代码块
    {
        System.out.println("实例代码块1");
    }
    {
        System.out.println("实例代码块2");
    }
    
    //构造方法
    public void demo() {
        System.out.println("构造方法");
    }

    public static void main(String[] args) {
        Demo d =new Demo();
        Demo d1 =new Demo();
         /*new Demo();
         new Demo();
        */
        d.demo();
        System.out.println(Demo.num);
    }
}

运行结果:
在这里插入图片描述

模拟实现订票系统

代码实现:

//模拟卖票系统
public class TacketSell {
    static int ticket = 15;
public static void sellTest(){
    ticket--;
    System.out.println("当前票数为:"+ticket);
}

    public static void main(String[] args) {
        TacketSell.sellTest();
        TacketSell.sellTest();
        TacketSell.sellTest();
        TacketSell.sellTest();
        TacketSell.sellTest();
    }
}

运行结果:
在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值