当前位置: 首页 > 知识库问答 >
问题:

如何从方法声明私有静态final int(java初学者)

夏侯元忠
2023-03-14

第一件事先...我是java新手,最近才开始尝试多类和多方法代码。

这是我目前所掌握的...

 import java.io.*;
 import java.util.Scanner;

 public class Student
 {
 // instance variables 
private int Quiz1;
private int Quiz2;
private int MidTerm;
private int Final;
private int FinalP;
private int LetterGrade;


public Student(int q1, int q2, int mt, int f)
{
   Quiz1 = q1;
   Quiz2 = q2;
   MidTerm = mt;
   Final = f;
}

public int getStudentNumber()
{
   Scanner two = null;
    try 
   {
      // Create a scanner to read the file, file name is parameter
       two = new Scanner (new File("Prog349f.txt"));
      } 
    catch (FileNotFoundException e) 
    {
    System.out.println ("File not found!");
    // Stop program if no file found
    System.exit (0);
    } 

   int lines = 0;   
    while(two.hasNext()) 
    {    
    lines++;
    two.nextLine();
   }
   two.close();
   return(lines);  
 }  
}

我已经决定,我想将行数/学生数保存为私有静态final int,(当前的分类只是占位符)。我只是不太确定如何把它保存成这样。在所有示例中,私有静态final声明如下:

 private static final double PI = 3.14; 

TLDR;我非常肯定这已经讨论过很多次了,但是使用方法定义公共静态final的协议是什么呢?

共有1个答案

宦博雅
2023-03-14

您误解了static final的用途,它只适用于在加载类时设置值的情况,并且在加载之后永远不会更改。它对于声明常量(如示例中的PI)非常有用,在此过程中,您可以在程序运行之前知道它应该包含什么内容。

相反,对于您阅读的每一行,创建一个学生并将其添加到列表中。无论何时需要学生的数量,都可以调用列表中的size方法。

如果您真的想要使某个东西成为静态final,那么您可以这样声明列表。静态final变量包含的引用永远不会改变,但是您可以添加和修改它的内容。

将文件读取代码作为实例方法塞进Student类似乎有些混乱,您应该为它找到一个更好的位置。从一个文件中读取所有学生不是属于单个学生的逻辑。Java不是面向类或面向方法的,它是面向对象的。将代码放入方法中,使它们与调用它们的实例相关。

 类似资料:
  • 我有一个关于静态方法访问的问题。我有一个类,其中有4个静态方法。如代码所示: } 我正在从下面的代码调用来自onLoadShipperDetailsListCtrl()的setSortingEnable()方法: } 因此,如果我从其他类调用setSortingEnabled()方法,我会认为它是公共的,而其他方法是私有的,但它会给我一个错误:Java . lang . nosuchmethode

  • 暴露的问题: 我想修改一些静态字段android.os.构建,如android.os.构建。董事会,android.os.构建。设备,android.os.构建。显示。 构建中有3个私有静态方法(私有静态字符串getString(String属性)、私有静态字符串[]getStringList(String属性、字符串分隔符)、私有静态long getLong(String属性))。Java语言

  • 问题内容: 我有一个快速的问题。在静态关键字声明之后立即开始的代码块,那是什么类型的方法?我从未见过。如果有人能启发我,将不胜感激。谢谢。 问题答案: 这不是方法,而是类的静态Initializer块。您可以在Java Language Specification中 阅读有关它的更多信息。 加载该类后,其中的代码将执行一次。

  • 问题内容: 您如何看待使用 私有静态方法 ? 就个人而言,我更喜欢使用 静态 私有方法而不 是非 静态 方法,只要它不需要访问任何实例字段即可。 但是我听说这种做法违反了OOP原则。 编辑:我想从样式的角度来看,而不是性能。 问题答案: 一个方法本身本身并没有违反OOP,但是当类上有很多不需要(也不能*)访问实例字段的方法时,您就不会以OO方式进行编程,因为“对象”表示状态+一起定义的状态操作。如

  • 问题内容: 我想调用一个私有静态方法。我有名字 我听说可以使用Java反射机制来完成。我该怎么做? 编辑: 我在尝试调用该方法时遇到的一个问题是如何指定其参数的类型。我的方法收到一个参数,其类型为Map。因此,我不能这样做(在运行时,由于Java Type擦除,没有Map这样的东西)。是否有另一种方法来获得该方法? 问题答案: 假设您要调用MyClass.myMethod(int x);

  • 问题内容: 如果该方法可以声明为静态方法,则会向编译器发出警告。 [edit] Eclipse帮助中的确切引号,重点是私有和最终的: 启用后,编译器将为私有或最终方法(仅引用静态成员)发出错误或警告。 是的,我知道我可以将其关闭,但是我想知道打开它的原因吗? 为什么将每个方法都声明为静态是一件好事? 这会给性能带来任何好处吗?(在移动域中) 指出一种方法是静态的,我想表明您不使用任何实例变量,因此