インタビューで私はこの質問をしました:静的とメインを使わないと、どうやってコンソールにメッセージを表示できますか?Javaのメインブロックと静的ブロックを持たないコンソールにメッセージを出力することはできますか?
答えて
あなたのメッセージを出力するカスタムクラスローダを定義することができ
java -Djava.system.class.loader=MyClassLoader
(パラメータとしてクラスを追加する必要はありません)
@Chafousin @Chafousinその働き!説明できますか?java -Djava.system.class.loaderの略語 – shree18
'-Djava.system.class.loader'は、JVMクラスローダ、つまり読み込みを担当するオブジェクトを定義するために使用されますクラス。ここでは独自のクラスローダーを提供し、テキストを表示して終了するように「ハック」します。 –
JavaはOOP言語です。
クラスを作成せずに静的メイン関数を追加することなく、プログラムを作成することはできません。
次に、System.out.println
を呼び出して行を印刷することができます。
したがって、答えはいいえです。
あなたはJavaが好きではないが、名前の呼び出しに頼る必要はない。 – MikeTheLiar
あなたはいつも、おそらく、コードのブロックにsyso
を配置する必要があります。
public class example { public void message(){ System.out.println("Hello"); } }
方法は面接のための静的
しかし、この非静的コードはどのように実行されますか? – vikingsteve
@Savinsあなたが提供した解決策は、関数を呼び出すmain()メソッドが必要です** "message" ** – r3ap3r
@ r3ap3r私はよく分かりませんが、飛行機は必要ではありません。デプラの間にオブジェクトの値を表示するには、テストでは、主な方法はありません。これは非常に特殊なケースであることは事実です。 – Savins
public class Test {
public static PrintStream ps = System.out.printf("%s", "hello");
}
かなり奇妙な質問ではありません。こんにちはを印刷し、Exception in thread "main" java.lang.NoSuchMethodException
を投げます。
Java7の/ではない!私はあなたのコードを試して、私は**エラー:主なメソッドは、クラスのテストでは見つかりませんでしたメインメソッドを定義してください: public static void main(String [] args)** –
まあ、6 javaで動作します。 7番目のコードがmainメソッドなしで実行されないことは本当です。しかし、それはまだ静的変数を持っています。私はそれが受け入れられるかどうかを知らない。 – Mikhail
私はそれがJava 7で修正されたバグのようなものだと言っています。クラスをロードした後にmain()メソッドが検索されたため、7より前のすべてのJDKで動作します。 –
I have asked this question:Without using static and main how could we print
message on console?Is it possible?
回答はいいえ!
main()メソッドが呼び出されない限り、何も実行できません。 Java(登録商標)7以前は、main()メソッドが参照される前にクラスがロードされていました。したがって、静的ブロック(静的ブロックはクラスがロードされたときに実行されます)からデータを印刷できますが、Java 7以降ではそれは不可能です。したがって、まずmain()メソッドを最初に実行する必要があります。
Spring Beanのようなフレームワークでも、コンテキストが参照されるときにのみ初期化されます(main()も最初に実行する必要があります)。静的関数/ブロックを通して。
public class MyClassLoader extends ClassLoader {
public MyClassLoader(ClassLoader other) {
super(other);
System.out.println("Hi there");
System.exit(0);
}
}
が続いてjavaコマンドを実行します:
@ Aniket Thakurあなたは正しいですが、私の質問はメインブロックと静的ブロックでした。プライベートstatic int i = m1(); public static int m1(){ System.out.println( "Test ... !!!!"); System.exit(0); return 0; } – shree18
@ shree18 main()メソッドのルックアップの前にクラスがロードされたため、前に述べたように、コードはJava 7以前でのみ動作します。あなたの質問が考慮されるように(インタビューの視点を考慮して)、あなたが最近のJavaの変更を認識していないことだけを示すあなたのコードではいと答えた場合。私は最近のことを言ってはいけません:P(Java 7は今のところずっと続いていましたが)あなたが私の意見を得ることを願っています。 –
答えは間違いありません。
少なくとも静的なブロックが必要か、空のmain()が必要です。
は、以下の実施例を参照してください
public class ABC {
static{
System.out.println("hai");
}
public static void main(String[] args) {}
}
OUTPUT:
ハイ
2。
public final class ABC {
static{
System.out.println("hai");
}
}
「hai」は実行中に表示されますが、そのあとで例外が発生します。
OUTPUT:
java.lang.NoSuchMethodErrorのメイン
ハイ
可能
スレッドの例外 "メイン" メインメソッドの前
を実行静的ブロックと@ Aniket Thakur 私のポイントのためコメントできません。次のプログラムはmainに入る前にメッセージを出力します。 注:私はJava 7とJava 8を使用しました。両方とも正常に動作し、mainの前に静的ブロックを実行します。
public class PrintBeforeMain {
private static int i = m1();
public static int m1(){
System.out.println("m1(): Before main() through static method...");
return 0;
}
static{
System.out.println("Inside standalone static{} block");
}
public static void main(String[] args) {
System.out.println("Inside main()");
}
}
- 1. メインメソッド、静的変数、静的メソッドを使用せずにJavaメッセージをコンソールに出力できますか?
- 2. JavaまたはPythonでコンソールに出力する動的なカラーリング
- 3. javaコンソールからjTextAreaまたはjLabelに出力メッセージをリダイレクト
- 4. JPQLで静的Javaメソッドを呼び出すことはできますか
- 5. 静的ブロックと静的フィールドの違いは何ですか?
- 6. 静的ブロックと静的でない原始的なデータフィールド
- 7. JSP/Java/HTML | JSP out.println();メソッドのときにコンソールに出力する
- 8. なぜ静的クラスは静的メンバーのみを持つことができますか?
- 9. 静的な方法でsynchronizedブロックでwait()を呼び出すと、Javaはjava.lang.IllegalMonitorStateExceptionをスローします。
- 10. 国際化の書き方JavaのEclipseコンソールにメッセージを出力する
- 11. Java出力コンソールのエラーメッセージをファイルに出力しますか?
- 12. Javaの静的ブロックを擬似する
- 13. 処理されたブロックと未処理のブロックをハンドルバーに出力することは可能ですか?
- 14. Ruby on Railsプロジェクトで静的ファイルに関するメッセージをサイレントにすることはできますか?
- 15. Java 8ストリームの静的コンテキストから非静的メソッドを参照することはできません
- 16. Workerスレッドから静的クラスインスタンスの静的メソッドを呼び出すことはできますか?
- 17. C#で静的関数内で非静的関数を呼び出すことはできますか?
- 18. Java:コンソールのすべての出力をコンソールとファイルに出力する方法は?
- 19. 静的コンテキストから非静的変数を参照することはできません[JAVA]
- 20. C++でフラッディングすることなくコンソールに出力
- 21. Gradleでは、コンソール/イベントログにメッセージを出力する方法は?
- 22. Javaで静的初期化ブロックを使用するのはなぜですか?
- 23. libuvタイマー:私はコンソールから出力を得ることができません
- 24. libstdC++とmemcpyを静的にリンクすることはできますか?
- 25. Razorブロックの出力をビューに出力できますか?
- 26. VSは、私は、出力ウィンドウに静かにこのメッセージが出てい
- 27. Java - 静的でないフィールドへの静的参照を行うことができません。
- 28. Java出力の列幅を設定することはできますか?
- 29. Javaでクラスを静的にインポートすることができません
- 30. C#の静的メソッドとコンソール
[main()メソッドを使用せずにコンソール上の印刷メッセージ]の可能な重複(http://stackoverflow.com/questions/8605137/printing-message-on-console-without-using-main-method) –
@Razaしかし、mainまたはstaticブロックにない場合、sysout呼び出しはどこに行きますか? – vikingsteve
このリンクを試してください:[メインメソッドなしのJavaでの印刷メッセージ/静的ブロック](http://stackoverflow.com/questions/18171465/can-we-print-a-java-message-on-console-without-using- main-method-static-variabl)を使用します。上記の解決方法では、main()関数を使用して** "イニシャライザブロック" **を呼び出します。 – r3ap3r