• 工具类的来由与静态方法


    由于代码重用度很高,所以会使用方法来进行封装,便于调取使用。

    例子:

    class ArrayDemo{
    public static void main(String[] args){
    //定义数组
    int[] arr = {25,99,78,98,87};
    //需求:遍历数组
    // for(int x=0;x<arr.length;x++){
    // if(x==arr.length-1){
    // System.out.println(arr[x]);
    // }else{
    // System.out.print(arr[x]+",");
    // }
    // }

    printArray(arr);
    }
    public static void printArray(int[] arr){
    for(int x=0;x<arr.length;x++){
    if(x==arr.length-1){
    System.out.println(arr[x]);
    }else{
    System.out.print(arr[x]+",");
    }
    }
    }
    }

    但是,当printArray方法不是静态方法时,调用会出现"错误:无法从静态上下文中引用非静态方法printArray(int[])",解决办法有两个,

    第一,在main方法下写:

    ArrayDemo ad = new ArrayDemo();

    ad.printArray(arr);//main方法下调用自身对象调用,但是比较麻烦,因为先要创建对象

    第二个办法就是:

    创建一个ArrayTool的类,然后在main方法下进行调用

    class ArrayTool {

    //把构造方法私有,外界就不能在创建对象了
    private ArrayTool(){}

    public static void printArray(int[] arr) {
    for(int x=0; x<arr.length; x++) {
    if(x == arr.length-1) {
    System.out.println(arr[x]);
    }else {
    System.out.print(arr[x]+", ");
    }
    }
    }
    }

    在main方法下,直接

    //方法改进为静态后,就可以直接通过类名调用
    ArrayTool.printArray(arr);//这个比较好,因为只要加载类,就可以进行调用,省去创建对象的操作。

    若在同一个文件夹下,ArrayDemo类与ArrayTool类都没有编译,但是ArrayDemo中的main方法调用了ArrayTool类,只需直接编译ArrayDemo类就可以了,因为编译器会自动对调用类,即ArrayTool类进行编译,方便执行,免除编译重复操作。

    注意:在该类有静态方法时,是可以不用构造(即 new)就可以对类中方法进行调用,但是也可以利用构造函数进行构造(原因是:一个类不写构造函数,会自动添加一个默认无参的构造函数,所以,外界才能调用构造函数),为了把构造方法封住,不让使用者调用其构造方法,我们可以把构造方法变为显式,加入private权限,只允许本类内部进行访问。

    即:private ArrayTool(){}

  • 相关阅读:
    高级数据结构(一)----并查集
    分享复杂的线性动态规划问题(一)
    分享利用微信公众号做淘宝客返利机器人系统的3个技巧
    淘宝京东拼多多三合一cms源码怎么搭建优惠券网站
    微信公众号怎么查京东优惠券之3步搭建自己的找券机器人
    【职场提示】什么时间提出涨薪资更合适?
    项目管理之Git
    快速排序,数组去重
    信息安全风险治理——制度与标准篇
    浅谈漏洞管理实践
  • 原文地址:https://www.cnblogs.com/canceler/p/4596934.html
Copyright © 2020-2023  润新知