Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有办法从Java中不包含main的类打印到控制台?_Java - Fatal编程技术网

有没有办法从Java中不包含main的类打印到控制台?

有没有办法从Java中不包含main的类打印到控制台?,java,Java,假设我们上课了 package myTest; public class a { public static void main(String[] args) { b printToConsole = new b(); } } package myTest; public class b { public static void printThis() {

假设我们上课了

package myTest;

public class a {            
    public static void main(String[] args) {            
        b printToConsole = new b();    
    }    
}
package myTest;

public class b {            
    public static void printThis() {            
        System.out.println("this is a test");           
    }    
}
我不能修改。我也有课

package myTest;

public class a {            
    public static void main(String[] args) {            
        b printToConsole = new b();    
    }    
}
package myTest;

public class b {            
    public static void printThis() {            
        System.out.println("this is a test");           
    }    
}
我可以修改。我想调用一个(我不能修改)并以某种方式打印到控制台“这是一个测试”。在目前的课程中,这显然不起作用,我理解为什么

总结:


有没有一种方法可以在不修改a的情况下调用a并对控制台进行“this Is test”?(b可以修改)。

您可以在
b

public b() {
    System.out.println("this is a test");
}
或者来自静态初始值设定项

static {
    System.out.println("this is a test");
}

(第二个将只为创建的第一个对象生成输出)

Put
System.out.println(“这是一个测试”)b
的默认/无参数构造函数中的code>:

public class b {

  public b() {
    System.out.println("this is a test");
  }
}
在目前的课程中,这显然不起作用,我理解为什么

因为类
b
printThis
方法没有在类
a
中的任何地方调用,所以它不会被执行。方法不会自动运行,它们必须被调用。您必须从类
a
调用该方法:

b printToConsole = new b();
printToConsole.printThis();
public class b {
    // Constructor
    public b() {
        System.out.println("this is a test");
    }
}
或者,您必须将
printToConsole
方法的内容放入类
b
的构造函数中(此时不必修改类
a
)。当创建
b
的新实例时(类
a
中的
new b();
语句),将调用构造函数:


是的,您可以通过多种方式完成:-

使用构造函数的第一种方法

class B
{
     public B()
     {
          System.out.println("This is a test");
     }
}
使用匿名块的第二种方法

class B
{
     {
          System.out.println("This is a test");
     }
}
第三种是使用静态块

class B
{
     static{
          System.out.println("This is a test");
     }
}
实际上,如果这些块在单个类中声明,则这些块的执行优先级如下:- 1.静态块
2.初始化块(匿名块)
3.构造函数
这三个块都在运行时通过对象初始化执行。
基本上,编译器将init块复制到构造函数中,用于在多个构造函数之间共享代码。

b
的构造函数中放置一个print语句?