Java是否等效于C#using语句

时间:2019-02-04 14:06:34

标签: java

我知道还有喜欢这样的其他问题,但是它们没有回答我的问题。

在C#中,您将使用:

using System;

namespace Program
{
  static void Main(string[] args)
  {
    Console.WriteLine("Helllo, World);
    Console.ReadLine();
  }
}

您使用using System;不必这样做:

namespace Program
{
  static void Main(string[] args)
  {
    System.Console.WriteLine("Helllo, World);
    System.Console.ReadLine();
  }
}

在Java中,是否有等效于C#的using System;

2 个答案:

答案 0 :(得分:1)

评论正在探讨为什么这些语言的社区选择了不同的方法,而直接回答了这个问题:

在Java中,import语句允许使用后缀*来指示应将命名空间中的所有类导入并在当前文件中使用,并且不带任何前缀:

import java.util.*;

这基本上等同于类似的东西

using System.Collections.Generic;

但是,Java标准库和C#标准库的组织方式大不相同,因此没有与C#的using System完全相同的声明。

但是,在Java中,java.lang包始终是隐式导入的,并且java.lang包含C#的System中的许多内容,因此可以说Java使{{1 }} 隐式

例如,在C#中,您需要using System才能写using System;,但是在Java中,您不需要Console.WriteLine("Hello, World!");就可以写{{1} }。

Java还具有称为import java.lang.System;的功能,您可以在其中导入类的成员,而不仅仅是类本身或包中的类。因此,您可以执行类似System.out.println("Hello, world!");import static的操作,然后根据需要编写import static java.lang.System.out;

C#还具有一个称为名称空间别名的功能,您可以在其中从另一个名称空间导入单个名称,并可以随意选择重命名。因此,您可以写import static java.lang.System.*;,然后根据需要写out.println("Hello, world!");

后两个选项在标准库中通常不使用,但可能在特殊情况下或设计为以这种方式使用的特殊类中使用。

答案 1 :(得分:1)

关于以下内容的附录

  

...但是为什么C#用户使用using语句?

简单:因为它们只有using,没有Java导入。它是该语言的内建属性,类似于C#支持.Net平台,而Java(主要)支持JVM平台。

换句话说,不同的语言遵循不同的范式和概念,非常类似于“真实的”人类语言。因此,从本质上讲,问题why does language A support feature X, but language B has Y不会(通常,并不总是)导致很多其他问题,而是“因为这就是每个人想要拥有的东西”。