资讯专栏INFORMATION COLUMN

Java基础知识整理之static应用与总结

ytwman / 946人阅读

摘要:导入包注意使用了关键字上面使用了关键字之后,可以直接使用中的方法。通过关键字调用有参构造方法控制台输出总结属性和方法可以再没有实例化对象的时候直接由类名称进行调用。属性保存在全局数据区。

前面两篇分别介绍了static的属性以及方法。本篇就做一个收尾,介绍下剩下的。

在之前的总结:

不管多少个对象,都使用同一个 static 属性

使用 static 方法可以避免掉用实例化方法之后才能调用的限制。

导入 static 类的包 静态导入包

静态导包用法,将类的方法直接导入到当前类中,从而直接使用“方法名”即可调用类方法,更加方便。但是看上面的就不是特别直观,不便于阅读代码。

Utils.java

package statics.utils;

public class Utils {

    public static int int2Str(String str) {
        return Integer.valueOf(str);
    }

    public static int add(int x, int y) {
        return x+y;
    }
}

Test.java

// 导入包 注意使用了 static 关键字
import static statics.utils.Utils.*;

public class Test {

    public static void main(String[] args) {
        // 上面使用了 static 关键字之后,可以直接使用 Utils 中的方法。
        add(1, 2);
    }
}
通过 类名.方法名

Test.java

// 导入包 注意没有使用 static 关键字了
import statics.utils.Utils;

public class Test {

    public static void main(String[] args) {
        // 上面使用了 static 关键字之后,可以直接使用 Utils 中的方法。
        Utils.add(1, 2);
    }
}
static 的实例用法

对于了解了static 方法之后,在来看几个实际的例子回顾与加深下对 static的理解。

示例一:实现类实例化的统计

需求

希望在每次实例化对象的时候,都打印一个信息,输出产生第 x 个实例化对象。

Test.java

class Book {
    
    static int Index = 0;
    
    Book(){
        Index++;
        System.out.println("实例化对象第"+ Index + "个");
    }
}

public class Test {

    public static void main(String[] args) {
        new Book();     new Book();     new Book();
        new Book();     new Book();     new Book();
    }
}

控制台输出

实例化对象第1个
实例化对象第2个
实例化对象第3个
实例化对象第4个
实例化对象第5个
实例化对象第6个
示例二:实现属性的自动设置

需求

例如:现在某一个类有一个无参构造方法,一个有参构造方法,有参构造主要的目的是传递一个 title 属性,但是希望调用的不管是 有参构造方法还是无参构造方法,都可以为 title 设置内容,希望内容不要重复。

Test.java

class Book {

    private String title;
    static int Index = 0;

    Book() {
        // 通过 this 关键字调用有参构造方法
        this("NOTITLE" + Index++);
    }

    Book(String title) {
        this.title = title;
    }
    
    public String getTitle() {
        return this.title;
    }
}

public class Test {

    public static void main(String[] args) {
        System.out.println(new Book("java").getTitle());
        System.out.println(new Book().getTitle());
        System.out.println(new Book().getTitle());
    }
}

控制台输出

java
NOTITLE0
NOTITLE1
总结

static 属性和方法可以再没有实例化对象的时候直接由类名称进行调用。

static 属性保存在全局数据区。内存区一共有四个:栈内存、堆内存、全局数据区(存放所有的数据)、全局代码区(存放所有的方法)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/72382.html

相关文章

  • Java开发 大厂面试整理

    摘要:用户态不能干扰内核态所以指令就有两种特权指令和非特权指令不同的状态对应不同的指令。非特权指令所有程序均可直接使用。用户态常态目态执行非特权指令。 这是我今年从三月份开始,主要的大厂面试经过,有些企业面试的还没来得及整理,可能有些没有带答案就发出来了,还请各位先思考如果是你怎么回答面试官?这篇文章会持续更新,请各位持续关注,希望对你有所帮助! 面试清单 平安产险 飞猪 上汽大通 浩鲸科...

    Scorpion 评论0 收藏0
  • Java基础知识整理注解

    摘要:注解提供了一种安全的类似注释的机制,用来将任何的信息或元数据与程序元素类方法成员变量等进行关联。为程序的元素类方法成员变量加上更直观更明了的说明,这些说明与程序的业务逻辑无关,并且提供给指定的工具或框架使用。 什么是注解? Annotation 是 Java5 之后开始引入的新特性,中文为注解。注解提供了一种安全的类似注释的机制,用来将任何的信息或元数据(metadata)与程序元素(...

    blastz 评论0 收藏0
  • 我的阿里路+Java面经考点

    摘要:我的是忙碌的一年,从年初备战实习春招,年三十都在死磕源码,三月份经历了阿里五次面试,四月顺利收到实习。因为我心理很清楚,我的目标是阿里。所以在收到阿里之后的那晚,我重新规划了接下来的学习计划,将我的短期目标更新成拿下阿里转正。 我的2017是忙碌的一年,从年初备战实习春招,年三十都在死磕JDK源码,三月份经历了阿里五次面试,四月顺利收到实习offer。然后五月怀着忐忑的心情开始了蚂蚁金...

    姘搁『 评论0 收藏0
  • Java 总结

    摘要:中的详解必修个多线程问题总结个多线程问题总结有哪些源代码看了后让你收获很多,代码思维和能力有较大的提升有哪些源代码看了后让你收获很多,代码思维和能力有较大的提升开源的运行原理从虚拟机工作流程看运行原理。 自己实现集合框架 (三): 单链表的实现 自己实现集合框架 (三): 单链表的实现 基于 POI 封装 ExcelUtil 精简的 Excel 导入导出 由于 poi 本身只是针对于 ...

    caspar 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<