17

首先,我正在尝试使用 Java 学习 Java ,初学者指南,第 4 版。我使用 Ubuntu 作为我的操作系统,使用 Netbeans 作为我的 IDE。在使用 Netbeans 时,我需要创建一个项目来创建一个类。

这是我的 hello world 应用程序。

class First{
    public static void main(String args[])
    {
        System.out.println("Hello!");
    }   
}

但这会返回很多错误。当我将package first;行放在我的 Java 类的顶行时,它会运行。但是,这本书没有使用包术语。这是 Netbeans 的规则,还是我需要知道的?

4

4 回答 4

20

您永远不需要将类放入包中。但是,这几乎总是一个好主意。这是 Netbeans 积极尝试鼓励您去做的事情。

对于小型项目,使用默认包(即没有package声明的文件)是可以的。但是,一旦您的项目增长并开始添加外部库,就会发生不好的事情。如果其他人决定使用默认包并且碰巧有一个同名的类怎么办?现在,由于你们都在同一个包中,可能会发生冲突!

你的文件结构也应该反映你的包。也就是说,一个文件package com.myurl.helloworld应该位于一个名为com/myurl/helloworld. 这是出于与上述相同的原因。

此外,您可能还没有学习到这里,您不能从默认包中导入类,或者在默认包类中使用包私有可见性修饰符。

于 2013-07-22T22:02:50.557 回答
12

那是因为Java, A Beginner's Guide, 4th Edition的作者很可能使用了“默认包”。这样,您不必包含任何包。包是命名空间声明。

什么是命名空间声明!? 命名空间声明只是一个用于组织类的包。例如,如果您要拥有多个类,比方说您的 GUI,以及多个算法类,将它们混合在一起总是有点令人困惑。然而,将它们分类在不同的包装中是一种优越的解决方案。

如果其他人要查看您的代码,您还应该遵循一个命名约定。包应该以顶级域命名。我倾向于创建 SourceForge 项目,然后我会得到这样的结果:

net.sourceforge.softwarename.security, net.sourceforge.softwarename.gui, 等等...

另请注意,在命名包时,切勿使用大写字母。更多信息在这里

在学习编程时,你会遇到很多这样的情况。他们都是游戏的一部分。你只需要自己弄清楚一点。

我能为您做的最好的事情就是推荐Eclipse。此外,在学习 Java 时,我建议您完全不要使用 IDE!那是因为你将学会独立编码。不过,这取决于你。

于 2013-07-22T21:53:41.293 回答
2

不,您不需要将包放入您的类中,除非您要将它导入到另一个将在它自己的文件中的类中。当您不想将它们设为私有但只想让子类(或子类)访问它们时,这就是受保护类型变量的用武之地。你也错过了你班级的公开声明,所以它应该看起来像

public class First{
    public static void main(String[] args){
          System.out.println("Hello!");
       }


}
于 2013-07-24T01:27:55.017 回答
1

包代表一个包含相关类和接口组的目录。

包是组织一组相关类和接口的命名空间。从概念上讲,您可以将包视为类似于计算机上的不同文件夹。您可以将 HTML 页面保存在一个文件夹中,将图像保存在另一个文件夹中,并将脚本或应用程序保存在另一个文件夹中。因为用 Java 编程语言编写的软件可以由成百上千个单独的类组成,所以通过将相关的类和接口放入包中来保持事物的组织是有意义的。

下面你可以找到一些关于 java 包的很好的讨论:

于 2013-07-22T23:15:03.273 回答