最近、Javaのイベントに行ったので、そのメモになります。
jshell
なにもの?
何者!かというと、気軽にJavaコマンドを実行できるツールです。
Rubyだと「irb」がありますよね。
Javaだと、、Eclipse を起動して、実行?もしくは、javacでコンパイルして、java で実行?
むっちゃ手間でした。
jshellを使うと、サクッと確認できます。
こんな感じ。タブで自動保管も出来るのがチョー便利です。
D:\Program Files>jshell
| JShellへようこそ -- バージョン13
| 概要については、次を入力してください: /help intro
jshell> System
シグネチャ:
java.lang.System
<ドキュメントを表示するにはタブを再度押してください>
jshell> System.out.p
print( printf( println(
jshell> System.out.println("Hello World!!");
Hello World!!
jshell>
どのバージョンからの機能?
ちなみに、Java9から、搭載された機能です。
もっと早く知ればよかった。。
var
どのバージョンからの機能?
Java10からの機能ですね。
実は知っていました、でも、勘違いして使っていませんでした。
勘違いしてたこと
javascriptのようなvarだと思っていました。
要するに「型保証」しない型かと。。
イベントで話を聞いたら違いました。
要するに「String」をセットした「var変数」に「数値」をセットできてしまう!と思っていましたが、
ちゃんとエラーになりました。
jshell> var testVal = "test data";
testVal ==> "test data"
jshell> testVal = 1;
| エラー:
| 不適合な型: intをjava.lang.Stringに変換できません:
| testVal = 1;
| ^
jshell>
varが生まれた経緯
この話が一番、目から鱗でした。
var が無い頃
jshell> class Customer {
...> void test(){
...> System.out.println("Hello World");
...> }
...> }
| 次を作成しました: クラス Customer
jshell> Customer customer = new Customer();
customer ==> Customer@5025a98f
jshell>
こんな風に書いて、「Customer customer = new Customer();」という形で、「customer」を3回書いています。
人によっては、「Customer cu = new Customer();」みたく、変数名を省略します。これは可読性が下がるのでやめたいです。
で、考えられたのが、「var」です。
varを使った場合
jshell> var customer = new Customer();
customer ==> Customer@20322d26
jshell>
「var customer = new Customer();」という形で、変数名を省略せず、「customer」を2回に減らせました!
要するに、変数名を省略せず、繰り返し書いていた内容を書かなくて済むようになりました。
これが、「var」を考えた人の目的とのこと。
目から鱗でした。
これからは「var」を使っていきます。