java中条件表达式-Java条件表达式
这玩意儿名字听着就够唬人,但本质就是 `if (x >= 0)` 要么 `x > 0` 这种逻辑的封装。 还有嘛,比如求绝对值。`int abs(int x) { return x >= 0 ? x : -x; }`。别老用三元运算符写 `if` 了,Java 3.0 赶明儿直接赞成了,`return x >= 0 ? x : -x;` 一行搞定,可读性瞬间提升。
要是为了写 `if` 语句,反倒显得啰嗦,像个小丑一样。 再聊聊对象创建。`Object obj = new Object();` 这行代码别看能活,但有点忒通用,没啥意义。Java 里有个 `Boolean` 类,专门用来存布尔值的,比 `boolean` 对象更友好。`Boolean true = true;` 这种写法,对象多了,可读性也上来了,别总想着把所有东西都塞到 `boolean` 这种原始类型里。 还有啊,集合操作。`List
这就像买票,两个都买票才能看,买一个就能看,别搞反了。 还有啊,`instanceof` 这个关键字,别老当它是啥。它只能判断对象是不是某个类的实例,不能像 `equals` 那样随意凑合。`Integer 1` 和 `Integer.valueOf(1)` 这种写法,`instanceof` 能判断 `true`,但 `equals` 判断`false`。别老混淆这两个概念,认定它们差不多,结局逻辑全错了。 还有啊,`switch` 语句,别老把它当多分支判断。`switch` 本质就是 `if-else` 的封装,只不过把多套 `if` 逻辑给挤在一块了。别老想着每个分支都单独写,`switch` 最合适,别把 `if` 塞进来,显得忒累赘。 还有啊,`if - else if - else` 这种组合,别老把它们当三个条件看。`if - else if - else` 本质就是一个整个的逻辑链,别把它拆成三个独立的 `if`,不然逻辑就乱套了,可读性也大打折扣。 还有啊,逻辑运算里,`&` 和 `^`,`&` 是逻辑与,`^` 是逻辑异或。别老把它们当成位运算,别看名字听着像,但用法是按位算,逻辑是逻辑算。
这是两个彻底不同的概念,搞混了好办 biased,别老整这种低级毛病。 还有啊,`if` 里的赋值,别老想 `if (x++ = 1) { ... }`。赋值号在 `if` 里实际上就是 `=`,别把它当成 `++`。
这行代码要是是 `x = 1`,那 `x` 就变 1 了;要是是 `x++ = 1`,`x` 先自增变成 2,再赋值为 1。别搞混了,逻辑全乱了。 还有啊,`switch` 里的标签,别老当作随意写个字符串就行。`switch` 的标签务必是编译后的字符串常量,不能是变量,也不能是字面量(要不就是字符串字面量)。别老写 `switch (name)`,这行代码编译就报错。 还有啊,`instanceof` 和 ``,别老把它们当死兄弟看。`` 比较地址,`instanceof` 比较类型。`Integer.valueOf(1)` 和 `new Integer(1)`,`` 都不等(出于类型不同),但 `instanceof` 都等于 `true`。别搞混了,逻辑就全歪了。 还有啊,`Boolean` 的合法性,别老想随意构造。`Boolean false` 能够,`Boolean -1` 不中,编译器一报错。别老整这种鬼东西,逻辑就乱了,别老整这种低级毛病。 还有啊,`boolean` 和 `Boolean` 的转换,别老当作 `true` 就能自动变 `Boolean`。`boolean` 是原始值,`true` 只是字面量。`new Boolean(true)` 才合法,`Boolean true` 直接报错。别老整这种低级毛病,逻辑就乱了。 还有啊,`if` 里的三元运算符,别老当作它就是个 `if`。`x > 0 ? x : -x` 就是三元运算符,别老写成 `if-else` 结构。
这玩意儿后缀运算符,别老当成前缀。 还有啊,`switch` 里的变量,别老当作能随意用。`switch` 的标签务必是编译后的字符串常量,不能是变量。别老写 `switch (name)`,这行代码编译就报错。别老整这种低级毛病,逻辑就乱了。 还有啊,`instanceof` 和 ``,别老把它们当死兄弟看。`` 比较地址,`instanceof` 比较类型。`Integer.valueOf(1)` 和 `new Integer(1)`,`` 都不等(出于类型不同),但 `instanceof` 都等于 `true`。别搞混了,逻辑就全歪了。 还有啊,`boolean` 和 `Boolean` 的转换,别老当作 `true` 就能自动变 `Boolean`。`boolean` 是原始值,`true` 只是字面量。`new Boolean(true)` 才合法,`Boolean true` 直接报错。别老整这种低级毛病,逻辑就乱了。 还有啊,`if` 里的三元运算符,别老当作它就是个 `if`。`x > 0 ? x : -x` 就是三元运算符,别老写成 `if-else` 结构。
这玩意儿后缀运算符,别老当成前缀。 还有啊,`switch` 里的标签,别老当作随意写个字符串就行。`switch` 的标签务必是编译后的字符串常量,不能是变量,也不能是字面量(要不就是字符串字面量)。别老写 `switch (name)`,这行代码编译就报错。别老整这种低级毛病,逻辑就乱了。 还有啊,`instanceof` 和 ``,别老把它们当死兄弟看。`` 比较地址,`instanceof` 比较类型。`Integer.valueOf(1)` 和 `new Integer(1)`,`` 都不等(出于类型不同),但 `instanceof` 都等于 `true`。别搞混了,逻辑就全歪了。 还有啊,`Boolean` 的合法性,别老想随意构造。`Boolean false` 能够,`Boolean -1` 不中,编译器一报错。别老整这种鬼东西,逻辑就乱了,别老整这种低级毛病。 还有啊,`boolean` 和 `Boolean` 的转换,别老当作 `true` 就能自动变 `Boolean`。`boolean` 是原始值,`true` 只是字面量。`new Boolean(true)` 才合法,`Boolean true` 直接报错。别老整这种低级毛病,逻辑就乱了。 还有啊,`if` 里的三元运算符,别老当作它就是个 `if`。`x > 0 ? x : -x` 就是三元运算符,别老写成 `if-else` 结构。
这玩意儿后缀运算符,别老当成前缀。 还有啊,`switch` 里的标签,别老当作随意写个字符串就行。`switch` 的标签务必是编译后的字符串常量,不能是变量,也不能是字面量(要不就是字符串字面量)。别老写 `switch (name)`,这行代码编译就报错。别老整这种低级毛病,逻辑就乱了。 还有啊,`instanceof` 和 ``,别老把它们当死兄弟看。`` 比较地址,`instanceof` 比较类型。`Integer.valueOf(1)` 和 `new Integer(1)`,`` 都不等(出于类型不同),但 `instanceof` 都等于 `true`。别搞混了,逻辑就全歪了。 还有啊,`boolean` 和 `Boolean` 的转换,别老当作 `true` 就能自动变 `Boolean`。`boolean` 是原始值,`true` 只是字面量。`new Boolean(true)` 才合法,`Boolean true` 直接报错。别老整这种低级毛病,逻辑就乱了。 还有啊,`if` 里的三元运算符,别老当作它就是个 `if`。`x > 0 ? x : -x` 就是三元运算符,别老写成 `if-else` 结构。
这玩意儿后缀运算符,别老当成前缀。 还有啊,`switch` 里的标签,别老当作随意写个字符串就行。`switch` 的标签务必是编译后的字符串常量,不能是变量,也不能是字面量(要不就是字符串字面量)。别老写 `switch (name)`,这行代码编译就报错。别老整这种低级毛病,逻辑就乱了。 还有啊,`instanceof` 和 ``,别老把它们当死兄弟看。`` 比较地址,`instanceof` 比较类型。`Integer.valueOf(1)` 和 `new Integer(1)`,`` 都不等(出于类型不同),但 `instanceof` 都等于 `true`。别搞混了,逻辑就全歪了。 还有啊,`Boolean` 的合法性,别老想随意构造。`Boolean false` 能够,`Boolean -1` 不中,编译器一报错。别老整这种鬼东西,逻辑就乱了,别老整这种低级毛病。 还有啊,`boolean` 和 `Boolean` 的转换,别老当作 `true` 就能自动变 `Boolean`。`boolean` 是原始值,`true` 只是字面量。`new Boolean(true)` 才合法,`Boolean true` 直接报错。别老整这种低级毛病,逻辑就乱了。 还有啊,`if` 里的三元运算符,别老当作它就是个 `if`。`x > 0 ? x : -x` 就是三元运算符,别老写成 `if-else` 结构。
这玩意儿后缀运算符,别老当成前缀。 还有啊,`switch` 里的标签,别老当作随意写个字符串就行。`switch` 的标签务必是编译后的字符串常量,不能是变量,也不能是字面量(要不就是字符串字面量)。别老写 `switch (name)`,这行代码编译就报错。别老整这种低级毛病,逻辑就乱了。 还有啊,`instanceof` 和 ``,别老把它们当死兄弟看。`` 比较地址,`instanceof` 比较类型。`Integer.valueOf(1)` 和 `new Integer(1)`,`` 都不等(出于类型不同),但 `instanceof` 都等于 `true`。别搞混了,逻辑就全歪了。 还有啊,`boolean` 和 `Boolean` 的转换,别老当作 `true` 就能自动变 `Boolean`。`boolean` 是原始值,`true` 只是字面量。`new Boolean(true)` 才合法,`Boolean true` 直接报错。别老整这种低级毛病,逻辑就乱了。 还有啊,`if` 里的三元运算符,别老当作它就是个 `if`。`x > 0 ? x : -x` 就是三元运算符,别老写成 `if-else` 结构。
这玩意儿后缀运算符,别老当成前缀。 还有啊,`switch` 里的标签,别老当作随意写个字符串就行。`switch` 的标签务必是编译后的字符串常量,不能是变量,也不能是字面量(要不就是字符串字面量)。别老写 `switch (name)`,这行代码编译就报错。别老整这种低级毛病,逻辑就乱了。 还有啊,`instanceof` 和 ``,别老把它们当死兄弟看。`` 比较地址,`instanceof` 比较类型。`Integer.valueOf(1)` 和 `new Integer(1)`,`` 都不等(出于类型不同),但 `instanceof` 都等于 `true`。别搞混了,逻辑就全歪了。 还有啊,`Boolean` 的合法性,别老想随意构造。`Boolean false` 能够,`Boolean -1` 不中,编译器一报错。别老整这种鬼东西,逻辑就乱了,别老整这种低级毛病。 还有啊,`boolean` 和 `Boolean` 的转换,别老当作 `true` 就能自动变 `Boolean`。`boolean` 是原始值,`true` 只是字面量。`new Boolean(true)` 才合法,`Boolean true` 直接报错。别老整这种低级毛病,逻辑就乱了。 还有啊,`if` 里的三元运算符,别老当作它就是个 `if`。`x > 0 ? x : -x` 就是三元运算符,别老写成 `if-else` 结构。
这玩意儿后缀运算符,别老当成前缀。 还有啊,`switch` 里的标签,别老当作随意写个字符串就行。`switch` 的标签务必是编译后的字符串常量,不能是变量,也不能是字面量(要不就是字符串字面量)。别老写 `switch (name)`,这行代码编译就报错。别老整这种低级毛病,逻辑就乱了。 还有啊,`instanceof` 和 ``,别老把它们当死兄弟看。`` 比较地址,`instanceof` 比较类型。`Integer.valueOf(1)` 和 `new Integer(1)`,`` 都不等(出于类型不同),但 `instanceof` 都等于 `true`。别搞混了,逻辑就全歪了。 还有啊,`boolean` 和 `Boolean` 的转换,别老当作 `true` 就能自动变 `Boolean`。`boolean` 是原始值,`true` 只是字面量。`new Boolean(true)` 才合法,`Boolean true` 直接报错。别老整这种低级毛病,逻辑就乱了。 还有啊,`if` 里的三元运算符,别老当作它就是个 `if`。`x > 0 ? x : -x` 就是三元运算符,别老写成 `if-else` 结构。
这玩意儿后缀运算符,别老当成前缀。 还有啊,`switch` 里的标签,别老当作随意写个字符串就行。`switch` 的标签务必是编译后的字符串常量,不能是变量,也不能是字面量(要不就是字符串字面量)。别老写 `switch (name)`,这行代码编译就报错。别老整这种低级毛病,逻辑就乱了。 还有啊,`instanceof` 和 ``,别老把它们当死兄弟看。`` 比较地址,`instanceof` 比较类型。`Integer.valueOf(1)` 和 `new Integer(1)`,`` 都不等(出于类型不同),但 `instanceof` 都等于 `true`。别搞混了,逻辑就全歪了。 还有啊,`Boolean` 的合法性,别老想随意构造。`Boolean false` 能够,`Boolean -1` 不中,编译器一报错。别老整这种鬼东西,逻辑就乱了,别老整这种低级毛病。 还有啊,`boolean` 和 `Boolean` 的转换,别老当作 `true` 就能自动变 `Boolean`。`boolean` 是原始值,`true` 只是字面量。`new Boolean(true)` 才合法,`Boolean true` 直接报错。别老整这种低级毛病,逻辑就乱了。 还有啊,`if` 里的三元运算符,别老当作它就是个 `if`。`x > 0 ? x : -x` 就是三元运算符,别老写成 `if-else` 结构。
这玩意儿后缀运算符,别老当成前缀。 还有啊,`switch` 里的标签,别老当作随意写个字符串就行。`switch` 的标签务必是编译后的字符串常量,不能是变量,也不能是字面量(要不就
本文系作者个人观点,不代表本站立场,转载请注明出处!





