用Java打包

mas*_*nun 8 java

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

假设我编写以下代码:

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


}
Run Code Online (Sandbox Code Playgroud)

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

谢谢

Jus*_*yer 13

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


真实世界的例子:

可以将"包"视为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.java,Dice.java,和DiceRoller.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);
    }
}
Run Code Online (Sandbox Code Playgroud)

"C:/ ProgramFiles/Java Project/my/proj/sims/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
    }
}
Run Code Online (Sandbox Code Playgroud)

"C:/ ProgramFiles/Java Project/my/proj/sims/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 S.o.p in a method - it's bad practice, but it's easier this way if you don't yet understand the concept of objects
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

.

需要注意的事项:

  • 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是一个将类的功能加载到当前文件的命令.Dice.java比如说,看看.为了创建一个Random具有该方法的对象,nextInt()它需要从java.util.*包中导入Random类.

.

你可能会发现有些人宁愿使用java.util.*替代java.util.Random,java.util.ArrayList等什么*本质上意味着中的任何类java.util.Running import java.util.*将导入Random,String,ArrayList等类.

.

希望这可以解决问题.如果这对你有帮助,请考虑upvoting :)