gpt4 book ai didi

java - 学习 Java - 导入和包基础知识

转载 作者:行者123 更新时间:2023-12-02 07:34:37 25 4
gpt4 key购买 nike

我正在阅读我能找到的所有教程以及一本书,但仍然琐碎的概念让我提出问题:

  1. CLASSPATH 是一个向 JVM 注册的变量,它告诉 java 在其中开始查找类/jars/等的根目录?

  2. import 与 include (C/C++) 类似,但通过包提供命名空间?我刚刚读到,在不使用 import 的情况下,您必须显式声明每个类的包/命名空间(使用 FQCN),例如 java.util.String (可能是无效的借口),而使用 import java.util 将允许我在代码将类简单地引用为 String。

让我对导入感到困惑的是一些使用导入的示例,例如:

import java.util.*;  // import all public classes from java.util package
import java.util.Hashtable; // import only Hashtable class (not all classes in java.util package)

是的,文章还跟进了:

请注意,我们可以调用存储在我们仅执行导入的包级别中的公共(public)类。我们不能使用属于我们导入的包的子包的任何类。例如,如果我们导入包world,则只能使用HelloWorld类,而不能使用HelloMoon类。

那么,当我在导入中使用*时,是不是递归导入所有子包?

最佳答案

7.5.2. Type-Import-on-Demand Declarations

import java.util.*;

causes the simple names of all public types declared in the package java.util to be available within the class and interface declarations of the compilation unit. Thus, the simple name Vector refers to the type Vector in the package java.util in all places in the compilation unit where that type declaration is not shadowed (§6.4.1) or obscured (§6.4.2).

The declaration might be shadowed by a single-type-import declaration of a type whose simple name is Vector; by a type named Vector and declared in the package to which the compilation unit belongs; or any nested classes or interfaces.

The declaration might be obscured by a declaration of a field, parameter, or local variable named Vector.

(It would be unusual for any of these conditions to occur.)

关于java - 学习 Java - 导入和包基础知识,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12425488/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com