Can";“主要”;在java中返回字符串?
java中的公共静态void main(String[]args)是否可能返回Can";“主要”;在java中返回字符串?,java,string,return,main,Java,String,Return,Main,java中的公共静态void main(String[]args)是否可能返回String,而不是void?如果是,如何进行 public static String main(String[] args) 而不是: public static void main(String[] args) 当我按以下方式更改代码时: public static String main(String[] args) throws IOException { String str = null;
String
,而不是void
?如果是,如何进行
public static String main(String[] args)
而不是:
public static void main(String[] args)
当我按以下方式更改代码时:
public static String main(String[] args) throws IOException {
String str = null;
TurkishMorphParser parser = TurkishMorphParser.createWithDefaults();
str = new Stm(parser).parse("bizler");
System.out.println("str = " + str);
String replace = str.replace("[","");
String replace1 = replace.replace("]","");
List<String> result1 = new ArrayList<String>(Arrays.asList(replace1.split(",")));
String result = result1.get(0);
System.out.println("Result = " + result);
return result;
}
简言之,不,它不能。
您始终可以从main方法打印到stdout(使用
System.out.print
或System.out.println
),但您不能更改main
的返回类型。不,您不能。。。一旦主程序完成,程序就失效了。。所以你从中没有任何好处。。你的目的是什么?你想达到什么目的
您可以将所有内容包装到将字符串返回到main的其他方法中
public static void main(String[] args) throws IOException {
String result = doSomething();
return result;
}
public static String doSomething() {
String str = null;
TurkishMorphParser parser = TurkishMorphParser.createWithDefaults();
str = new Stm(parser).parse("bizler");
System.out.println("str = " + str);
String replace = str.replace("[","");
String replace1 = replace.replace("]","");
List<String> result1 = new ArrayList<String>(Arrays.asList(replace1.split(",")));
String result = result1.get(0);
System.out.println("Result = " + result);
}
publicstaticvoidmain(字符串[]args)引发IOException{
字符串结果=doSomething();
返回结果;
}
公共静态字符串doSomething(){
字符串str=null;
TurkishMorphParser=TurkishMorphParser.createWithDefaults();
str=newstm(parser.parse(“bizler”);
System.out.println(“str=“+str”);
字符串replace=str.replace(“[”,”);
字符串replace1=replace.replace(“]”,“”);
List result1=newarraylist(Arrays.asList(replace1.split(“,”));
字符串结果=result1.get(0);
System.out.println(“结果=”+结果);
}
可以,但不能运行该类。你会犯错误的
class Test {
public static String main(String[] args) {
return "1";
}
}
您将得到错误消息
Error: Main method must return a value of type void in class Test, please
define the main method as:
public static void main(String[] args)
不可以。要成为main()
方法,它必须不返回任何内容(即是void
)
但是,如果需要方法的功能,您可以重构代码以返回以下内容:
public static void main(String[] args) throws IOException {
myMain(args);
}
public static String myMain(String[] args) throws IOException {
// your method, which can now be called from anywhere in your code
}
是的,绝对有可能。也就是说,您可以定义一个方法
publicstaticstringmain(String[]args)
。这就像定义任何其他方法一样
然而,它不会是一个主方法,不管它的名称如何,因此在执行程序时不会像主方法那样运行。引用Java语言规范,§12.14:
main方法必须声明为public、static和void
我的。Java中不能有非void主方法。主方法的返回类型必须是
void
,因为Java语言规范强制执行它。看
对于进程间通信,您可以使用:
和System.in
System.out
- 插座
- 这是一个非常有趣的场景。一般来说,我们可以将返回void的任何方法更改为返回其他任何方法,而不会产生太大影响,main方法是一个特例
在早期的编程语言中,main方法的返回被认为是向操作系统或调用环境返回退出值
但在Java的情况下(多线程概念案例进入图片),从main方法返回值是不正确的,因为main方法返回JVM而不是OS。JVM然后完成其他线程,例如deamon线程(如果有),并在退出操作系统之前执行其他退出任务
因此,允许main方法返回将导致开发人员产生错误的期望。因此它是不允许的。如果您确实需要它返回某些东西(您不需要),请将输出分配给静态变量。那你就不需要回来了。i、 e
static String a = "";
public static void main(String[] args){
//do sth
a = "whatever you want";
}
现在您有了字符串a
,可以在任何您想使用的地方使用它,但我看不出它有任何用途。答案是否定的
当程序运行时,JVM查找名为main()的方法,该方法将字符串数组作为输入,不返回任何内容(即返回类型为void)。但是如果没有找到这样的方法(<强> main()方法,例如返回字符串),那么它在java之前,在java或C++中抛出一个<强> java.为什么?因为main方法是由操作系统调用的,操作系统对程序的成功/不成功执行不负责。因此,为了让操作系统知道程序成功执行,我们提供了一个返回值 现在,在java中,程序是由OS加载的,但执行是由JRE完成的。JRE本身负责程序的成功执行。因此,无需更改返回类型 这就像是把你的问题告诉上帝,而上帝自己却给你问题来解决它们
)() 不可能使用相同的方法参数。方法重载是由参数类型定义的,计数不是由返回类型定义的。异常告诉您不能,所以不,您不能。问问自己,它将返回到什么位置,以及它返回时的预期用途是什么?system.exit(“”)-正在进行中-这里更好地解释一下,如果在同一个类中运行,声明将具有相同的签名。@Makoto,我不明白这与此有什么关系。它会的。如果声明了
publicstaticvoidmain(String[]args)
和publicstaticstringmain(String[]args)
,则不会编译,因为这两个方法都具有相同的签名。在解决这一点之前,这不是一个完整的答案。@Makoto,是的,但我看不出在同一个类中有关于main
两个版本的问题。只有关于main
是否可以返回String
而不是void
,我已经回答了。有点不正确。您不能使用常规方式运行该类。但是您可以编写一个自定义加载程序来执行修改后的main。
static String a = "";
public static void main(String[] args){
//do sth
a = "whatever you want";
}