SlideShare uma empresa Scribd logo
1 de 26
Baixar para ler offline
Operator s Side
@第23回アルゴリズム勉強会
t_murano
演算子に着目しよう!
※都合によりJavaに限定
※注意事項
この発表を参考にした
可読性の悪いコードの生産に対しての
一切の責任を負いかねます
演算子とは?
!
“ In computer programming and at the command
line, an operator is an object that is capable of
manipulating a value or operator. ”
引用元 : http://www.computerhope.com/jargon/o/operator.htm
なぜ演算子なのか?
• ほぼ必ず使う要素
• 様々な演算子を知っていると簡潔に書けるかも
• よく知らずに使うと思わぬ挙動が…
演算子の種類
• 算術演算子
• 比較演算子
• 論理演算子
• ビット演算子
• 代入演算子
明確な定義があるわけではないけど
だいたいこんな感じに分けられるはず
いくつかピックアップ
/ (除算)
• 左の値を右の値で割る演算子
突然ですが問題です
次のうち浮動小数点型の値を返すのはどれ?
• 1 / 2
• 1.0 / 2
• 1 / 2.0
• 1.0 / 2.0
答え
除数 or 被除数が浮動小数点型のもの
• 1.0 / 2
• 1 / 2.0
• 1.0 / 2.0
またまた問題です
次のうち例外(ArithmeticException)が発生するの
はどれ?
• 0 / 0
• 1 / 0
• 0 / 0.0
• 1.0 / 0
答え
除数 and 被除数が整数型のもの (除数は0)
• 0 / 0
• 1 / 0
ちなみに
浮動小数点型には、NaN(非数)とInfinity(無限大)
が用意されている
• 0 / 0.0 -> NaN
• 1.0 / 0 -> Infinity
++ --
• インクリメント, デクリメント
• 前置 と、後置 が存在
• for文とかでよく使いますよね
前置と後置を比較
!
int a = 0;
int b = a++; // b -> 0
!
Code:
0: iconst_0
1: istore_1
2: iload_1
3: iinc 1, 1
6: istore_2
!
int a = 0;
int b = ++a; // b -> 1
!
Code:
0: iconst_0
1: istore_1
2: iinc 1, 1
5: iload_1
6: istore_2
単体で使う場合
int a = 0;
!
a++;
++a;
a += 1;
Code:
0: iconst_0
1: istore_1
2: iinc 1, 1
5: iinc 1, 1
8: iinc 1, 1
内部ではどれも一緒っぽい
論理演算子
• & (AND), ¦ (OR), ^ (XOR), ! (NOT)
• &&, ¦¦ (左から短絡評価)
• boolean型に使用
• & ¦ ^ は整数型にも使用できる
短絡評価
• && は左の式の結果が false だったら右の式を
評価しない
• ¦¦ は左の式の結果が true だったら右の式を評価
しない
短絡評価の利用
// array.length == 10 とする
for (int i = 0; i < 20; i++)
if (i < 10 && array[i] % 2 == 0) { /* 処理 */ }
!
i が 10未満の場合のみ array[i] にアクセスする
int型での利用
• a が奇数かどうか評価
int a = 11; // 0b1011
if ((a & 1) == 1)
• LSBが1かどうか評価している
0b1011
AND ) 0b0001
0b0001
複合代入演算子
• 自己代入を行う演算子
• +=, -=, *=, /=, %=, <<=, >>=, >>>=, &=, ¦=, ^=
• a += 1; -> a = a + 1;
• b /= c - 2; -> b = b / (c - 2);
instanceof
• Javaの特殊な演算子
• オブジェクトが指定したクラスかどうか判定
• プリミティブ型は使用できない
• foo instanceof String -> true
優先順位
• 四則計算のようにプログラミングの演算子にも
優先順位がある
• 同じ優先度の演算子は左から順に評価
• 各自で調べてください (スライドに収めるのが面
倒だった)
まとめ
• 演算子にも色々ある (多分Javaは少ない方)
• 同じ演算子でも型によって挙動が異なる
• 細かい仕様を理解して、正確にコードを読み書
きしよう!
参考URL
• Java演算子・式の評価 : http://www.ne.jp/asahi/hishidama/home/
tech/java/expression.html
• Javaの道 > Java基本 : http://www.javaroad.jp/index_basic.htm
• バイトコード : http://www.ne.jp/asahi/hishidama/home/tech/
java/bytecode.html
• Java入門 ¦ Byte Code : http://msugai.fc2web.com/java/perform/
byte.html

Mais conteúdo relacionado

Destaque

Jika memimpin jangan
Jika memimpin janganJika memimpin jangan
Jika memimpin janganCimta Abadi
 
Bedste Hypnose uddannelse (kursus) i Danmark
Bedste Hypnose uddannelse (kursus) i DanmarkBedste Hypnose uddannelse (kursus) i Danmark
Bedste Hypnose uddannelse (kursus) i DanmarkJacob Strachotta
 
Colegios y distritos privados
Colegios y distritos privadosColegios y distritos privados
Colegios y distritos privadosgabitachica
 
Al Fazl - international 25th July 2014
Al Fazl - international  25th July 2014Al Fazl - international  25th July 2014
Al Fazl - international 25th July 2014muzaffertahir9
 
Почему цены на сайты такие разные?
Почему цены на сайты такие разные?Почему цены на сайты такие разные?
Почему цены на сайты такие разные?itua_development
 
地図を自分で作る時代
地図を自分で作る時代地図を自分で作る時代
地図を自分で作る時代Jyun Tanaka
 
Silabus Kimia SMA kls X Kurikulum 2013
Silabus Kimia SMA kls X Kurikulum 2013Silabus Kimia SMA kls X Kurikulum 2013
Silabus Kimia SMA kls X Kurikulum 2013almansyahnis .
 
Thema 1 les 3 - iemand stelt zich voor
Thema 1   les 3 - iemand stelt zich voorThema 1   les 3 - iemand stelt zich voor
Thema 1 les 3 - iemand stelt zich voorIve Hapers
 
雲端藥物開發2:預測作用機轉
雲端藥物開發2:預測作用機轉雲端藥物開發2:預測作用機轉
雲端藥物開發2:預測作用機轉ribowsone
 
Software Educativo Organizar Recursos1
Software Educativo Organizar Recursos1Software Educativo Organizar Recursos1
Software Educativo Organizar Recursos1Sisifo08
 
Microsoft windows,,,,
Microsoft windows,,,,Microsoft windows,,,,
Microsoft windows,,,,eddie nataren
 
31 july sab ki khabren
31 july sab ki khabren31 july sab ki khabren
31 july sab ki khabrenSantosh Tiwari
 
Báo cáo thực tập tuần 5 - Phạm Tiến Quân
Báo cáo thực tập tuần 5 - Phạm Tiến QuânBáo cáo thực tập tuần 5 - Phạm Tiến Quân
Báo cáo thực tập tuần 5 - Phạm Tiến QuânQuân Quạt Mo
 
Intelijensia buatan - 01 Apa Itu Intelijensia Buatan
Intelijensia buatan - 01 Apa Itu Intelijensia BuatanIntelijensia buatan - 01 Apa Itu Intelijensia Buatan
Intelijensia buatan - 01 Apa Itu Intelijensia BuatanKuliahKita
 

Destaque (20)

Интервю с Маруся Евтимова - iBroker на месец юни
Интервю с Маруся Евтимова - iBroker на месец юниИнтервю с Маруся Евтимова - iBroker на месец юни
Интервю с Маруся Евтимова - iBroker на месец юни
 
Jika memimpin jangan
Jika memimpin janganJika memimpin jangan
Jika memimpin jangan
 
Bedste Hypnose uddannelse (kursus) i Danmark
Bedste Hypnose uddannelse (kursus) i DanmarkBedste Hypnose uddannelse (kursus) i Danmark
Bedste Hypnose uddannelse (kursus) i Danmark
 
Lista de exerc+¡cios 1 castigliano
Lista de exerc+¡cios 1   castiglianoLista de exerc+¡cios 1   castigliano
Lista de exerc+¡cios 1 castigliano
 
Colegios y distritos privados
Colegios y distritos privadosColegios y distritos privados
Colegios y distritos privados
 
Al Fazl - international 25th July 2014
Al Fazl - international  25th July 2014Al Fazl - international  25th July 2014
Al Fazl - international 25th July 2014
 
GRUPO B
GRUPO BGRUPO B
GRUPO B
 
Почему цены на сайты такие разные?
Почему цены на сайты такие разные?Почему цены на сайты такие разные?
Почему цены на сайты такие разные?
 
Entzuixu!! 8.zkia. 2014ko abuztua.
Entzuixu!! 8.zkia. 2014ko abuztua.Entzuixu!! 8.zkia. 2014ko abuztua.
Entzuixu!! 8.zkia. 2014ko abuztua.
 
地図を自分で作る時代
地図を自分で作る時代地図を自分で作る時代
地図を自分で作る時代
 
Silabus Kimia SMA kls X Kurikulum 2013
Silabus Kimia SMA kls X Kurikulum 2013Silabus Kimia SMA kls X Kurikulum 2013
Silabus Kimia SMA kls X Kurikulum 2013
 
Thema 1 les 3 - iemand stelt zich voor
Thema 1   les 3 - iemand stelt zich voorThema 1   les 3 - iemand stelt zich voor
Thema 1 les 3 - iemand stelt zich voor
 
雲端藥物開發2:預測作用機轉
雲端藥物開發2:預測作用機轉雲端藥物開發2:預測作用機轉
雲端藥物開發2:預測作用機轉
 
Software Educativo Organizar Recursos1
Software Educativo Organizar Recursos1Software Educativo Organizar Recursos1
Software Educativo Organizar Recursos1
 
Microsoft windows,,,,
Microsoft windows,,,,Microsoft windows,,,,
Microsoft windows,,,,
 
Edu 2
Edu 2Edu 2
Edu 2
 
Proyecto 2° parte
Proyecto 2° parteProyecto 2° parte
Proyecto 2° parte
 
31 july sab ki khabren
31 july sab ki khabren31 july sab ki khabren
31 july sab ki khabren
 
Báo cáo thực tập tuần 5 - Phạm Tiến Quân
Báo cáo thực tập tuần 5 - Phạm Tiến QuânBáo cáo thực tập tuần 5 - Phạm Tiến Quân
Báo cáo thực tập tuần 5 - Phạm Tiến Quân
 
Intelijensia buatan - 01 Apa Itu Intelijensia Buatan
Intelijensia buatan - 01 Apa Itu Intelijensia BuatanIntelijensia buatan - 01 Apa Itu Intelijensia Buatan
Intelijensia buatan - 01 Apa Itu Intelijensia Buatan
 

Semelhante a Operator's Side

プログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズムプログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズムTakuya Akiba
 
Effective Modern C++ Item 24: Distinguish universal references from rvalue re...
Effective Modern C++ Item 24: Distinguish universal references from rvalue re...Effective Modern C++ Item 24: Distinguish universal references from rvalue re...
Effective Modern C++ Item 24: Distinguish universal references from rvalue re...mooopan
 
kagami_comput2015_4
kagami_comput2015_4kagami_comput2015_4
kagami_comput2015_4swkagami
 
わんくま東京#38 LT 「Func&lt;> と ref / out 小咄」
わんくま東京#38 LT 「Func&lt;> と ref / out 小咄」わんくま東京#38 LT 「Func&lt;> と ref / out 小咄」
わんくま東京#38 LT 「Func&lt;> と ref / out 小咄」Takeshi Kiriya
 
ソフトウェア工学2023 12 コードフォーマット
ソフトウェア工学2023 12 コードフォーマットソフトウェア工学2023 12 コードフォーマット
ソフトウェア工学2023 12 コードフォーマットToru Tamaki
 

Semelhante a Operator's Side (6)

プログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズムプログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズム
 
C言語講習会2
C言語講習会2C言語講習会2
C言語講習会2
 
Effective Modern C++ Item 24: Distinguish universal references from rvalue re...
Effective Modern C++ Item 24: Distinguish universal references from rvalue re...Effective Modern C++ Item 24: Distinguish universal references from rvalue re...
Effective Modern C++ Item 24: Distinguish universal references from rvalue re...
 
kagami_comput2015_4
kagami_comput2015_4kagami_comput2015_4
kagami_comput2015_4
 
わんくま東京#38 LT 「Func&lt;> と ref / out 小咄」
わんくま東京#38 LT 「Func&lt;> と ref / out 小咄」わんくま東京#38 LT 「Func&lt;> と ref / out 小咄」
わんくま東京#38 LT 「Func&lt;> と ref / out 小咄」
 
ソフトウェア工学2023 12 コードフォーマット
ソフトウェア工学2023 12 コードフォーマットソフトウェア工学2023 12 コードフォーマット
ソフトウェア工学2023 12 コードフォーマット
 

Mais de Takumi Murano

モダンな感じでChrome Extension作ってみた
モダンな感じでChrome Extension作ってみたモダンな感じでChrome Extension作ってみた
モダンな感じでChrome Extension作ってみたTakumi Murano
 
金大アルゴリズム勉強会#007資料
金大アルゴリズム勉強会#007資料金大アルゴリズム勉強会#007資料
金大アルゴリズム勉強会#007資料Takumi Murano
 
金大アルゴリズム勉強会#006資料
金大アルゴリズム勉強会#006資料金大アルゴリズム勉強会#006資料
金大アルゴリズム勉強会#006資料Takumi Murano
 
金大アルゴリズム勉強会#005資料
金大アルゴリズム勉強会#005資料金大アルゴリズム勉強会#005資料
金大アルゴリズム勉強会#005資料Takumi Murano
 
金大アルゴリズム勉強会#004資料
金大アルゴリズム勉強会#004資料金大アルゴリズム勉強会#004資料
金大アルゴリズム勉強会#004資料Takumi Murano
 
金大アルゴリズム勉強会#003資料
金大アルゴリズム勉強会#003資料金大アルゴリズム勉強会#003資料
金大アルゴリズム勉強会#003資料Takumi Murano
 
金大アルゴリズム勉強会#002資料
金大アルゴリズム勉強会#002資料金大アルゴリズム勉強会#002資料
金大アルゴリズム勉強会#002資料Takumi Murano
 
金大アルゴリズム勉強会#001資料
金大アルゴリズム勉強会#001資料金大アルゴリズム勉強会#001資料
金大アルゴリズム勉強会#001資料Takumi Murano
 

Mais de Takumi Murano (10)

モダンな感じでChrome Extension作ってみた
モダンな感じでChrome Extension作ってみたモダンな感じでChrome Extension作ってみた
モダンな感じでChrome Extension作ってみた
 
Dockerぐらし!
Dockerぐらし!Dockerぐらし!
Dockerぐらし!
 
金大アルゴリズム勉強会#007資料
金大アルゴリズム勉強会#007資料金大アルゴリズム勉強会#007資料
金大アルゴリズム勉強会#007資料
 
金大アルゴリズム勉強会#006資料
金大アルゴリズム勉強会#006資料金大アルゴリズム勉強会#006資料
金大アルゴリズム勉強会#006資料
 
金大アルゴリズム勉強会#005資料
金大アルゴリズム勉強会#005資料金大アルゴリズム勉強会#005資料
金大アルゴリズム勉強会#005資料
 
金大アルゴリズム勉強会#004資料
金大アルゴリズム勉強会#004資料金大アルゴリズム勉強会#004資料
金大アルゴリズム勉強会#004資料
 
金大アルゴリズム勉強会#003資料
金大アルゴリズム勉強会#003資料金大アルゴリズム勉強会#003資料
金大アルゴリズム勉強会#003資料
 
金大アルゴリズム勉強会#002資料
金大アルゴリズム勉強会#002資料金大アルゴリズム勉強会#002資料
金大アルゴリズム勉強会#002資料
 
金大アルゴリズム勉強会#001資料
金大アルゴリズム勉強会#001資料金大アルゴリズム勉強会#001資料
金大アルゴリズム勉強会#001資料
 
Lombok java
Lombok javaLombok java
Lombok java
 

Operator's Side