| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

言語まとめ Java

提供: MyMemoWiki
ナビゲーションに移動 検索に移動

言語まとめ Java

言語 まとめ | Java|

準備

参照サイト

環境

言語基本

データ型

データ型
内容
boolean trueもしくはfalse
char UTF-16文字をあらわす、符号なし整数
byte
short
int
long
float
double
文字列
String msg = "hello.";
char[] c1 = {'a', 'b', 'c'];
Sring s1 = new String(c1);
配列
int[] a1 = new int[3];
a1[0] = 1;
a1[1] = 2;
a1[2] = 3;

int[] a2 = {1, 2, 3};

int[][] a3 = {
  {1,2,3},
  {4,5,6},
  {7,7,9},
};
コレクション
  • List
List l = new ArrayList();
l.put("a");
l.put("b");
// ジェネリックスを使用
List<String> l2 = new ArrayList<String>();
  • Map
Map<String, Object> m = new HashMap<String, Object>();
m.put("foo", new Hoge("foo"));
m.put("bar", new Hoge("bar"));


変数

演算

演算子 内容
++ -- インクリメント、デクリメント
+ - * / 単項 加算、減算、乗算、除算
% 剰余
~ ビット反転
! 否定
(型) キャスト
<< >> >>> シフト >>は符号つき右シフト
< <= >= > 大小比較
== != 相等性、不等性
ビット演算子 AND XOR OR
&& || ブール演算用ショートサーキット
instanceof オブジェクト型比較
?: 条件演算子 char b = (true)?'t':'f';

制御

順次

文の終わりは、;

選択
  • if
if (cond1) {
  // 
} else if (cond2) {
  // 
} else {
  // 
}
  • switch
switch (cond) {
case 1:
   //
   break;
case 2:
   //
   break;
defaul:
   //
} 
繰り返し
  • for
for (int i=0; i<100; i++) {
   //
}
  • 拡張for
String[] ss = {"a", "b", "c"};
for(String s : ss) {
   //
}
  • while
wihle(cond) {
  //
}
do {
  //
} while(cond);

例外
try {
  // 例外が発生する可能性がある処理
} catch (Exception e){
  // 例外処理
}

オブジェクト

クラス
  • 継承

ラムダ式/Stream API

  • Java8以降では、メソッドも型の一つ
  • メソッドを引数として渡すこともできる。
    • 引数の型と数、戻り値の型が同一であるメソッド参照を渡せるようになる
  • その仕組みが、メソッド参照であり、ラムダ式
メソッド参照
public class MethodRef {

    public static void main(String[] args) {
        // メソッド参照による引き渡し
        writeLine("Quote test.", MethodRef::quote);  
        writeLine("Indent test.", MethodRef::indent);
    }
    private static void writeLine(String line, Converter converter) {
        System.out.println(converter.covert(line));
    }

    /** Converter型に対応したメソッド */
    public static String quote(String value) {
        return String.format("\"%s\"", value);
    }
    /** Converter型に対応したメソッド */
    public static String indent(String value) {
        return String.format("\t%s", value);
    }

    /** Stringを受け取りStringを返すメソッド型 */
    @FunctionalInterface
    public interface Converter {
        String covert(String value);
    }
}
  • 結果
"Quote test."
        Indent test.
ラムダ式基本
  • 上記のメソッド参照の例では、writeLineメソッドに引き渡すためだけに、quoteおよびindentメソッドを定義している
  • その場限りの利用の場合、メソッド定義を式として表すことができるラムダ式を利用できる
(引数型 仮引数) -> {
     メソッド本体
}
  • メソッド参照を使用して書いたコードをラムダで書き換え
public class Lambda {
    public static void main(String[] args) {
        writeLine("Quote test.", (String value) -> {
            return String.format("\"%s\"", value);
        });
        writeLine("Indent test.", (String value) -> {
            return String.format("\t%s", value);
        });
    }
    private static void writeLine(String line, Converter converter) {
        System.out.println(converter.covert(line));
    }

    /** Stringを受け取りStringを返すメソッド型 */
    @FunctionalInterface
    public interface Converter {
        String covert(String value);
    }
}
java.util.function関数型インターフェース
  • 関数インターフェースを上記では自作したが、java.util.function パッケージで提供されている1
名称 内容
Consumer 処理だけで、値を返さない

ファイル

ファイルを読む
ファイルに書く