「言語まとめ Java」の版間の差分
ナビゲーションに移動
検索に移動
(→メソッド参照) |
(→ラムダ式基本) |
||
209行目: | 209行目: | ||
*上記のメソッド参照の例では、writeLineメソッドに引き渡すためだけに、quoteおよびindentメソッドを定義している | *上記のメソッド参照の例では、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); | ||
+ | } | ||
+ | } | ||
====ファイル==== | ====ファイル==== | ||
=====ファイルを読む===== | =====ファイルを読む===== | ||
=====ファイルに書く===== | =====ファイルに書く===== |
2020年4月13日 (月) 16:00時点における版
目次
言語まとめ Java
準備
参照サイト
- JDK6 ドキュメント http://java.sun.com/javase/ja/6/docs/ja/
- Java言語規定 第三版 http://java.sun.com/docs/books/jls/third_edition/html/j3TOC.html
環境
言語基本
データ型
データ型
型 | 内容 |
---|---|
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); } }
ファイル
ファイルを読む
ファイルに書く
© 2006 矢木浩人