为了账号安全,请及时绑定邮箱和手机立即绑定

有没有办法用方法初始化静态字段?

有没有办法用方法初始化静态字段?

MMTTMM 2023-05-10 17:24:35
如何使用方法初始化类中的字符串数组?private static String[] strNrs2 = {"Zero","One","Two","Three","Four","Five","Six","Seven","Eight","Nine"};  private static String[] colo = arr();private String[] arr(){     String[] str99 = new String[strNrs2.length];     for (int i = 0; i<strNrs2.length;i++){       str99[i]= new StringBuilder(strNrs2[i]).reverse().toString();    }    return str99;    }我要这个 :private static String[] strNrs2 = {"Zero","One","Two","Three","Four","Five","Six","Seven","Eight","Nine"};看起来像这样: private static String[] strNrs =  {"oreZ","enO","owT","eerhT","ruoF","eviF","xiS","neveS","thgiE","eniN"};但我只想做一次。因为我计划循环使用该数组的方法数百万次。因此它会大大降低我的运行速度。完整代码:  public class IntToStr {  private static String[] strNrs2 = {"Zero","One","Two","Three","Four","Five","Six","Seven","Eight","Nine"};      public static String intToStr(int nr) {        StringBuilder str = new StringBuilder("");        while (nr>0) {           int pop = nr%10;            nr= nr/10;            str.append(new StringBuilder(strNrs2[pop]).reverse().toString());  //By using this str.append(strNrs[pop]); runtime will increase considerably.        }        return str.reverse().toString();    }    public static void main(String[] args) {        for (int i = 0; i<10000000;i++)            intToStr(5555555);            System.out.println("Finished");    }} 
查看完整描述

1 回答

?
MMMHUHU

TA贡献1834条经验 获得超8个赞

下面的数组初始化:

private static String[] colo = arr();

不起作用,因为arr()它是一个非静态方法,所以它不能在初始化变量的静态上下文中调用static

您必须创建arr()一个static方法才能使该static数组初始化工作:

private static String[] arr() {
    ...
}


查看完整回答
反对 回复 2023-05-10
  • 1 回答
  • 0 关注
  • 84 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信