Java 在方法中使用类变量

Java 在方法中使用类变量,java,class,variables,Java,Class,Variables,在java中,如何在方法中使用类变量 这是我的密码 public class ExamQ3a { String[] descriptionArr = new String[50]; static int[] codeArr = new int[50]; public static void displayItems(int count, int[] codeArr, String[] descriptionArr) { count

在java中,如何在方法中使用类变量

这是我的密码

public class ExamQ3a {
    String[] descriptionArr = new String[50];
    static int[] codeArr = new int[50];

    public static void displayItems(int count, int[] codeArr,
            String[] descriptionArr) {
        count = this.codeArr.length;
        for (int i = codeArr.length; i < codeArr.length; i--) {

        }
    }
}
公共类ExamQ3a{
字符串[]descriptionArr=新字符串[50];
静态int[]codeArr=新int[50];
公共静态无效显示项(int count,int[]codeArr,
字符串[]descriptionArr){
count=this.codeArr.length;
对于(int i=codeArr.length;i
此处突出显示的行是count=this.codeArr.length;我得到的错误是不能从静态上下文引用非静态变量。但是我已经把变量设为静态的。那么是什么原因呢

因此,仅根据要求!我不是想问整个问题,只是想知道为什么我要使用静态,这是一个实践问题

您需要开发一个简单的应用程序系统来管理库存 在公司里。系统应能够维护多达50个用户的列表 项目。每个项目都有唯一的整数代码和说明

(a) 编写Java语句,声明并创建两个数组来存储 项目的代码和说明

(b) 使用以下方法签名编写Java方法:

公共静态void displayItems(int count,int[]codeArr,String[]descriptionArr)

此方法显示公司中所有项目的代码和说明 以表格形式提供适当的列标题

Parameters:codeArr:存储项目代码的数组

descriptionArr:存储项目描述的数组

计数:系统中的项目数


在静态世界中没有
这个
。摆脱它。为了解释,
引用当前的实例,当您处理静态方法或变量时,您处理的是与类关联的项,而不是任何一个特定实例。因此,将代码更改为:

count = codeArr.length;
编辑1
顺便说一句,您不想像
}}
那样把右大括号捆在一起,这会使代码很难阅读和理解。空白是免费的,所以最好明智地使用它来提高代码的可读性

编辑2
你说:

那么我如何将数组codeArr引用到类变量codeArr呢

您位于类的内部,这里不需要使用类变量名,因为假定使用它。只要使用静态变量或方法名,您就应该是金色的

编辑3

对这种类型的变量使用static会给代码带来不好的味道。我认为如果这是一个实例变量而不是一个静态变量,那么您的整个程序会更好。关于这一点的更多讨论,您可以告诉我们为什么决定将变量设为静态。

您将引用一个与方法参数同名的静态变量,您将使用类的名称作为静态变量的前缀。在这种情况下,它将是
ExamQ3a.codeArr


另一种处理方法是为方法参数选择不同的名称,或者开始为实例/静态变量使用公共前缀。

另一点需要注意的是,在下面的代码段中,语句1将永远不会执行:

for (int i = codeArr.length; i < codeArr.length; i--) { statement1; }

因此,从您的解释中,我了解到我引用的codeArr数组是类变量正确吗?关于edit1,在我的实际代码中,我确实使用了它,但当我粘贴到这里时,我将它们耦合在一起,以便于阅读(估计不是),tk在删除
this
的同时,他/她应该重命名
codeArr
,这是指局部参数变量。@M.M.我编辑了我的原始帖子,其中有一个问题是我试图回答的。如果你想访问静态元素(字段/方法),你应该使用你的类名,如
ExamQ3a.codeArr
,但是,如果您的代码在类中,您可以跳过类名。@noobprogrammer:ur字符串数组需要是静态的,才能在静态方法中访问。我建议你使用动态数组,比如arraylist,这样会更方便
int length = codeArr.length;
for (int i = 0; i < length; i++) { ... }
int length = codeArr.length;
for (int i = (length-1); i > -1 ; i--) { ... }