0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

varを使った変数宣言

明示的に型を記述せず、型を推論することを型推論と呼ぶ。Javaではvar(varible type)を使用することで型推論が可能である。以下のようにして宣言する。

var num = 10;

varの使い方

メソッドの引数、コンストラクタの引数、メソッドの戻り値、フィールド(メンバ変数)、catchブロックでは使用できない。

Java(Main.java)
import java.util.ArrayList;
import java.util.Arrays;

public class Main {
	var a = 100;//エラー①
	static var b = 100;//エラー②
	public static void main(String[] args) {
		var c = "hello";//OK
		var d = 10;//OK
		var e;//エラー⑤
		var f = null;//エラー⑥
		final var g = 100;//OK
		var a1 = new int[] {1,2,3};//OK
		var a2 = new int[1];//OK
		var a3 = new int[];//エラー⑩
		var a4 = {1,2,3};//エラー⑪
		var b1 = new ArrayList<>();//OK
		var b2 = new ArrayList<String>();//OK
		var var = 1;//OK
		var b3 = () -> {};//エラー⑭
		public var b4 = "aaa";//エラー⑮	
	}	
	public static int number(var a) {//エラー⑯
		return a;
	}
}

①、②メンバ変数(インスタンス変数やクラス変数)にvarは使えない

③、④ローカル変数なのでvarは使用可

⑤初期値未設定だとvarは使えない

⑥初期値nullだとvarは使えない

⑦finalと併用は可能。この時finalが先

⑧,⑨配列の宣言に使用可能

⑩配列の要素または初期値が未設定なのでvarは使えない

⑪配列の初期化式を使うと型推論ができないので、varは使えない

⑫ジェネリクスのダイヤモンド演算子<>では変数宣言時のジェネリクスで指定された型パラメータまたはObject型が型パラメータとして与えられるのでvarは使用可

⑬varは予約語でないので、変数名として使用可

⑭ラムダ式からは型推論ができないので、変数名として使用可

⑮varはfinalのみ修飾子を使うことが可能

⑯メソッドの引数にvarは使えない

まとめ

varの制約は多いけれども、試験でよく問われるところなので、覚えよう!

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?