Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

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

tarosuke777000
楽しい雰囲気が大好きな人です。人生の目的は、自由に人生楽しく! 職業はシステムエンジニア。Java、SQLを長くやっています。 最近は、Rubyに手を出しています。 趣味は、日本酒、ウクレレ。ブログとnoteを書いています。 ブログ:https://tarosuke777.com note:https://note.mu/tarosuke777000
https://tarosuke777.com
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away