Java定义包的关键字:package

1.使用package(包)来区分两个名字相同的类。
比如,aaa定义的Hello类放在名字为aaa的这个包下面,bbb定义的Hello类放在名字为bbb的这个包下面。

package aaa;//对应了一个名为aaa的文件夹
public class Hello{
}
package bbb;//对于了一个bbb的文件夹
public class Hello{
}

2.package其实就是类的命名空间,用来唯一标识这个类的,避免类的重复。
①一般情况下,一个公司、社团中所定义的包的名字,就是他们官网的域名(倒过来),因为域名一定是全球唯一的。

例如,http://commons.apache.org/ 这官网下的代码中的包,都是 package org.apache.commons; 开头的。

②类加上了包名,在编译之后,都必须要有和包名对应的文件夹。

例如, package com.baidu.demo;
这里是三个包,包和包之间用点(.)隔开,编译完之后,需要有对应的三个文件夹分别是 com/baidu/demo ,最后在demo目录中,才有编译生产的class文件。

3.使用javac Hello.java来编译代码,编译通过后使用java Hello来运行代码。

①Hello这个类是定义在指定的包中的,那么就需要在把生成的class文件存放到和包名相对应的文件夹中。
②一个类一旦指定的包,那么在运行它的时候,就一定要带上它的包名。

4.类名种类:
①简单类名:直接一个类名。
②全限定名:包名加类。

5.每次编译好一个指定包的类,都不需要手动去创建和包对应的目录。

使用javac -d . Hello.java命令,该编码命令中有参数,可以直接帮我们在指定位置自动创建和包名对应的目录结构,并且把编译好的class文件自动存放到里面。

该命令中,-d表示编译时自动生成和包名对应的目录结构,-d后面的点(.)表示就在当前目录中生成。编译成功后,还会自动把编译好的class文件存到这个生成的目录中。

6.运行一个类的时候,JVM加载这个类的规则:

①如果运行的Hello类,没有指定包,Hello类一定对应的是Hello.class ( 固定要求)。那么当运行 java Hello 的时候,JVM会从CLASSPATH中指定的路径中查找是否有Hello.class这个文件。如果有那么就加载到内存,然后运行;如果没有则就报错。

②如果运行的Hello类,指定了包,例如是package com.baidu.test; Hello类一定对应的是com/baidu/test/Hello.class(固定要求)。那么当运行 java com.baidu.test.Hello 时,JVM会从CLASSPATH中指定的路径中查找是否有com/baidu/test/Hello.class这个文件。如果有那么就加载到内存,然后运行,如果没有就报错。这个时候JVM从CLASSPATH的路径中,会先找com这个文件夹,然后依次找下去。因为如果有包存在的时候,这个包就是这个类不可分割的一部分。这个情况下,CLASSPATH中就要配置com文件夹所在的路径。

③如果运行的Hello类,被打包到一个jar中,比如是we.jar。把jar文件的路径和jar文件的名字,都配置到CLASSPATH中。
Ⅰ.**当Hello类没有指定包时:当运行 java Hello时,JVM会从CLASSPATH中指定的路径中查找是否有we.jar,如果有那么就从we.jar中将Hello.class载到内存,然后运行。如果没有那么就报错。
Ⅱ.当Hello类指定了包时
:**当运行 java com.baidu.test.Hello 时,JVM会从CLASSPATH中指定的路径中查找是否有we.jar。如果有,那么就从相应的we.jar中把com/baidu/test/Hello.class加载到内存,然后运行,如果没有那么就报错。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java关键字是指具有特定含义和用途的保留字,不能作为标识符(变量名、类名、方法名等)使用。以下是Java所有关键字的作用: 1. abstract:抽象类或抽象方法的修饰符,表示该类或方法不可被实例化或调用,只能被子类继承或实现。 2. assert:断言语句的关键字,用于在代码检查某个条件是否为真,如果不为真就会抛出一个 AssertionError 异常。 3. boolean:布尔类型的数据类型,表示真或假。 4. break:跳出循环或 switch 语句的关键字。 5. byte:字节类型的数据类型,表示-128到127之间的整数。 6. case:在 switch 语句用于判断某个值是否等于某个常量。 7. catch:用于捕获异常的关键字,在 try-catch-finally 结构使用。 8. char:字符类型的数据类型,表示单个字符。 9. class:声明一个类的关键字。 10. const:Java没有实际意义,但为了与 C++ 兼容保留了该关键字。 11. continue:跳过当前循环剩余的语句,执行下一次循环。 12. default:在 switch 语句用于指定默认的分支。 13. do:循环语句的关键字,执行一个语句块,然后根据条件判断是否继续执行。 14. double:双精度浮点数类型的数据类型。 15. else:在 if 语句用于指定条件不成立时执行的代码块。 16. enum:枚举类型的关键字,用于定义一组常量。 17. extends:表示一个类继承自另一个类的关键字。 18. final:修饰类、方法和变量,表示它们的值或引用无法改变。 19. finally:在 try-catch-finally 结构,无论是否发生异常都会执行的代码块。 20. float:单精度浮点数类型的数据类型。 21. for:循环语句的关键字,用于执行一个语句块多次。 22. goto:Java没有实际意义,但为了与 C++ 兼容保留了该关键字。 23. if:条件语句的关键字,用于判断某个条件是否成立。 24. implements:表示一个类实现一个接口的关键字。 25. import:引入一个包或类的关键字。 26. instanceof:用于判断一个对象是否属于某个类的关键字。 27. int:整数类型的数据类型。 28. interface:声明一个接口的关键字。 29. long:长整型数据类型。 30. native:表示一个方法是本地方法(由本地代码实现)的关键字。 31. new:创建一个新对象的关键字。 32. package:声明一个包关键字。 33. private:表示一个方法或变量只能被同一个类的其他方法或变量访问的关键字。 34. protected:表示一个方法或变量可以被同一个包的其他类访问,或者被继承的子类访问的关键字。 35. public:表示一个方法或变量可以被任何类访问的关键字。 36. return:从方法返回值的关键字。 37. short:短整型数据类型。 38. static:表示一个方法或变量属于类而不是属于对象的关键字。 39. strictfp:表示一个方法是严格遵守 IEEE 754 浮点数规范的关键字。 40. super:表示一个对象所属的超类的关键字。 41. switch:多分支语句的关键字。 42. synchronized:表示一个方法或代码块是线程安全的关键字。 43. this:表示当前对象的关键字。 44. throw:用于抛出异常的关键字。 45. throws:用于声明某个方法可能会抛出的异常的关键字。 46. transient:表示一个变量不会被序列化的关键字。 47. try:异常处理语句的关键字。 48. void:表示一个方法不返回任何值的关键字。 49. volatile:表示一个变量是易变的(可能会被多个线程同时访问)的关键字。 50. while:循环语句的关键字,用于执行一个语句块多次,直到条件不成立为止。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值