windows環境の場合、javacがデフォルトで扱う文字エンコードがシフトJIS(正確にはMS932)なのが原因で、コンパイル時に文字列をUTF-8として扱えていないのが原因です。
プログラム実行時ではなく、コンパイル時点で既に文字化けしています。
対処法はいくつかありますが、ソースコードのエンコードがUTF-8前提であるなら以下のどちらかの対応でUTF-8を正常に扱えます。
①javacにエンコードのオプションをつける。
cmd
1javac -J-Dfile.encoding=UTF-8 Sample1.java
2java -cp . Sample1
3-> ようこそJavaへ!
②環境変数に上記オプション相当の設定を加える。
cmd
1(コマンドプロンプトの場合)
2SET JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF8
3(PowerShellの場合)
4$env:JAVA_TOOL_OPTIONS = "-Dfile.encoding=UTF8"
5javac Sample1.java
6java -cp . Sample1
7-> ようこそJavaへ!
環境変数側の対策をすると、プログラム上で読み書きするファイルのデフォルトエンコードも切り替わってしまうので要注意です。
参考:
https://www.javadrive.jp/start/encoding/
https://qiita.com/n_slender/items/6c566bb345e844ba8127
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。