3

鉴于我们有 java 程序,我们通过声明来声明对对象的引用,例如String ab=new String.

Java如何成为一种面向对象的编程语言?这个程序中哪里有对象?

在下面的 Java 代码中,我看不到任何对象。我想知道是否有任何对象用于打印 hello 消息。

class a
{ 
  public static void main(String a[])
  {
    System.out.println("hello");
  }
}
4

8 回答 8

5

如果有n命令行参数,那么就有n + 5对象:

  • 字符串文字"hello"是一个对象。
  • 数组a是一个对象。
  • 通过数组String传入的每个命令行参数都有一个对象。maina
  • System即使没有实例,该类也引用static了 3 个对象:theouterr PrintStreams 以及in InputStream.

a请注意,您的类没有实例。

于 2013-10-03T20:15:32.193 回答
3

是的,涉及的对象很少

System类有一个对象“out”,它是一个PrintStream类型的对象,它正在调用它的println方法

String a[]

a 是一个类型的对象:数组(字符串)。

你有你的class a,即使它没有任何属性或instance方法,你仍然可以实例化它,因为它所拥有的一切都是静态方法(main),所以没有意义。

此外,您可能想检查面向对象的特性。你有封装,以你的main方法为例,你可以从外面调用它;你有继承,你的类a,实际上所有的类都将至少继承到根对象类:java.lang.Object

I want to know if there is any object used to print the hello message.

在这种情况下,对象 out 实现了一个 println 方法,该方法接收一个 String 对象以在控制台中传递接收到的 String。

于 2013-10-03T20:15:48.060 回答
2

字符串"hello"是一个对象。它没有new运算符,但这仅仅是因为String该类支持使用双引号创建文字的特殊语法。

a您在方法中声明的数组main也是一个对象。传递的任何参数也是对象。

System.out也是一个对象(输出流),在System类的代码中初始化。

于 2013-10-03T20:15:54.087 回答
1

仅举几个您的程序中涉及的对象:

  • String a[]是一个对象;
  • System.out是一个对象;
  • "hello"是一个对象;

这些是您可以看到的。但也有:

  • main Thread; _
  • class a;
  • System;
  • ClassLoader; _

还有很多。

当然,这一切都取决于你如何定义所涉及的程序

于 2013-10-03T20:22:45.850 回答
1

"hello"是一个String对象。无需在 Java 中显式调用构造函数即可构造字符串对象。

于 2013-10-03T20:16:59.533 回答
1

a, System, out, 传递给 main 的数组,都是从 java.lang.Object 派生的东西

于 2013-10-03T20:17:02.183 回答
1

a,"hello"并且System.out都是对象。大多数新对象都是使用关键字创建的new,但字符串文字也会创建一个对象。命名的对象a由 Java 运行时系统创建以包含程序的参数。该对象System.out是标准库的一部分。

于 2013-10-03T20:15:39.100 回答
1

Java 中几乎所有的东西都是对象。在这种情况下,您的类“a”是一个接受字符串对象数组作为参数的对象。在 main 方法中,它使用另一个 String 对象作为参数对 System 对象进行静态调用。据我所知,没有对象就没有 Java。

于 2013-10-03T20:17:57.927 回答