【Java入门】Java运算的基础(面向初学者)
这是我作为一名刚起步的程序员整理并公开的自己的备忘录,也可以算作复习的一部分。由于有可能存在错误,请谨慎参考。
心态
- 学校で習った数学のイメージでやると違いにビビる
x = x + 1;
和/或/或者
count += 2;
作为程序员的我可能会说“啊是的”,但对于刚刚开始学习编程的人来说可能会感到“!??”不解。
- このように一般的な数学の演算子の意味と異なることがあるので、基本的には別の意味と思って臨むことが必要。
只需要找出共同点即可。
公式的组成元素
-
- 演算子(Operater):「+」「-」「=」など
- オペランド(Operand):演算子以外のこと
直译
-
- ソースコードに記述されている値であり、それ自体が要素となるもの
- オペランドとの違いは、リテラルは記述された値そのものが要素となるが、オペランドは記述された値が要素そのものとは限らない
int a , b;
a = 10; //10は整数リテラル
b = a + 27; //a,b,27はオペランドだが、リテラルは27のみ
boolean flag;
flag = true; //trueはbooleanリテラル
评价
- 演算子は周囲のオペランドを使って計算を行い、オペランドと共に値へと変化する
int numA = 1;
int numB = 2;
int ans = numA + numB;
// 演算子+がnumAとnumBと共に値3へと変化する。
if(numA < numB){
System.out.println("numAはnumBより小さい");
}
// 演算子>がnumAとnumBと共にtrueへと変化する
System.out.println(numA == numB);
// 実際に文字出力すると、結果はfalseになる
运算符 zǐ)
-
- 右記サイトが分かりやすい(丸投げ)。参考)Javaの道:演算子
- ざっと表にまとめておく
種類演算子意味(ざっくり)備考算術演算子+足す
-引く
*掛ける
/割る
%余りを求める
代入演算子=右辺を左辺に代入する
+=左辺に右辺を足した値を代入する
-=左辺から右辺を割った値を代入する
*=左辺に右辺を掛けた値を代入する
/=左辺から右辺を割った値を代入する
%=左辺割る右辺の余りを代入する
インクリメント演算子++値を1増加させるa++と++aで意味が異なる
†注1デクリメント演算子–値を1減少させるa–と–aで意味が異なる
†注1比較演算子==等しい†注2
!=等しくない
>大きい
>=以上
<小さい
<=以下
論理演算子&かつ
&&かつ短絡評価を行う
†注3
|
||または短絡評価を行う
†注3
!否定
†注1:a++执行后会先给变量 a 赋值再加 1。++a会先加 1 再赋值。
int a = 0;
int b = 0;
System.out.println(a++); // 結果は0
System.out.println(++b); // 結果は1
System.out.println(a); // 結果は1
System.out.println(b); // 結果は1
但事实上很少只看到”i++”这样的独立代码段,没有看到过或写过那种不能区分的代码(至少目前为止)。
我认为只需要在脑海中牢记这个想法就可以了。
注意:当比较对象时需要小心。参考:对象的比较。
短路评估是什么。
int num = 5;
if(num > 2 || num > 7){
// 処理A
} else {
// 処理B
}
如果存在像这样的处理,当 num > 2 的评估完成时,可以确定为真,因此不需要进行 num > 7 的评估。
这样一旦评估确定,就不再进行不必要的后续评估,这就是短路评估。
三个运算符
- 下記のように使用する
[条件] ? [TRUEの場合の返却値] : [FALSEの場合の返却値] ;
- 安易に使用すると可読性が悪い、と言われるため注意が必要。慣れるまでは読むとき専用で覚えるとよい
int n = a > 0 ? 1 : 0 ;
// 意味は以下と同じ
int n;
if(a > 0){
n = 1;
} else {
n = 0;
}
(仅提供一个选择)
参考)
- 三項演算子は悪か?