我们什么时候实际使用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.mainDice.java 被包装成 my.proj.simsMain.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 :)