用Java打包

我们什么时候实际使用package关键字? 这是什么意思?

假设我编写以下代码:

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

这个包裹的东西是做什么的? 我得到一个不运行的masnun.class文件。 我是Java新手。 有人可以解释一下吗?

谢谢

由于我不喜欢这些其他答案,我会写自己的。


真实世界的例子:

可以将“包”视为java类引用另一个类的简单方法。

假设我的阁楼上有这个大盒子。 我有一个计算器,指南针,量角器等。我可以标记这个盒子MathTools

另一个例子是拍摄所有照片并将它们放入文档中的Pictures文件夹中。 从那里,你可以将它们分成Spring Break 2009[Insert Name Here]'s Party

这与Java有什么关系? 好吧,让我们看一下java.util包(你可以用import java.util.*;来引用它。你有大多数Java程序中使用的ArrayLists,Strings,Random等等(如果你愿意,可以使用常见的“实用程序”)所有程序员都可以轻松地引用它们( import java.util.*; )。


易于应用:

让我们假设我们可以在C:/Program Files/Java Project/my/proj/找到所有文件到一个小骰子模拟器(你的计算机上可能不存在这个文件,但只是假装片刻)。

您有3个文件: Main.javaDice.javaDiceRoller.java 。 所有这些都显示如下:

“C:/ ProgramFiles / Java Project / my / proj / main / Main.java ”:

 package my.proj.main; import my.proj.sims.Dice; public class Main { public static void main(String[] args) { DiceRoller roller = new DiceRoller(); roller.rollAndShow(4); } } 

“C:/ ProgramFiles / Java Project / my / proj / Dice.java / Dice.java ”:

 package my.proj.sims; import java.util.Random; // I used the Random class, but you can also use the Math class if you prefer (java.lang.Math) public class Dice { public Dice() { } public int roll() { Random rand = new Random(); return rand.nextInt(6) + 1; // Rolls a random number 1-6 } } 

“C:/ ProgramFiles / Java Project / my / proj / DiceRoller.java / DiceRoller.java ”:

 package my.proj.sims; public class DiceRoller { public DiceRoller () { } // Rolls and prints the result of 'n' number of rolls public void rollAndShow(int n) { Dice dice = new Dice(); for (int i = 0; i < n; i++) { System.out.println(dice.roll()); // You should never use Sop in a method - it's bad practice, but it's easier this way if you don't yet understand the concept of objects } } } 

需要注意的事项:

  • Main.java打包到my.proj.main
  • Dice.java打包到my.proj.sims
  • Main.java需要导入my.proj.sims.Dice才能创建Dice对象并使用它的方法,因为它与Dice.java位于不同的包中。
  • DiceRoller.java不需要导入my.proj.sims.Dice因为它与Dice.java位于同一个包中,编译器会自动将两者相关联。

Import是一个将类的function加载到当前文件的命令。 例如,看看Dice.java 。 为了创建一个Random对象,它有方法nextInt() ,它需要从java.util.*java.util.*导入Random类。

您可能会注意到有些人更喜欢使用java.util.*而不是java.util.Randomjava.util.ArrayList等。 *本质上意味着java.util任何类。 运行import java.util.*将导入Random,String,ArrayList等类。

希望这可以解决问题。 如果这有助于你,请考虑upvoting 🙂

软件很可能拥有名为Logger,Database,Connection,Table等的类。软件包将这些类的范围分开,这样您就不会遇到重复类名的问题。

几个例子:

  • java的。*
  • org.apache。**
  • com.yourcompany.yourproject。

如果你不想使用destinct包中的类,你需要导入它们.ig

 import java.util.Date 

要么

 import java.sql.Date 

这是组织源文件的一种方式。 一个包包含多个类文件,一个类文件只包含一个公共类,一个类包含多个方法和变量。

Java中的package语句用于对几个相关的类进行分组。 如果您有专门处理数据库交互的类,那么将它们全部放在一起是合乎逻辑的

 com.example.myapp.persistence 

这也提供了名称间距的好处,请记住,在运行时,java类标识的一部分是它的完全限定名,也就是说,类名前面跟着它的包名,如

 com.example.myapp.persistence.UserDAO 

当您的应用程序增长以容纳多个类时,在包中组织它们既实用又实用

“软件包只不过是我们根据文件的function,可用性以及它们应属于的类别将文件组织到不同目录中的方式。” 来自: http : //www.jarticles.com/package/package_eng.html

基本上,在你的例子中,你说类masnun是包masnun的包。 所以基本上在其他类中你可以通过import masnun引用这个类; 其中导入了驻留在masnun包中的类masnun。

在Layman术语中,让我们假设大学里有多个部门,如科学,艺术等。现在每个部门都有一些员工。 在对象方面可以有多个Employee类,因此java中存在限制,我们不能将两个类作为同名。因此程序员应该使用不同的包来存储应用程序中具有相同名称的不同类。