LoginSignup
3
3

More than 3 years have passed since last update.

javaのjshellとvar がおススメ過ぎます!

Posted at

最近、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」を使っていきます。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3