zoukankan      html  css  js  c++  java
  • 工具类的来由与静态方法

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

    例子:

    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(){}

  • 相关阅读:
    迈步从头越
    C 语言中用bsearch()实现查找操作
    ASP.NET 远程调试
    JsonHelper
    json数据中包含html代码的解决方法
    js对url的常见操作
    jquery中ajax中get和post的用法
    图片和文件合成为图片的方法(黑客)
    数据库分库知识
    长链接转短链接的方法(百度、新浪、腾讯)
  • 原文地址:https://www.cnblogs.com/canceler/p/4596934.html
Copyright © 2011-2022 走看看