// 运算符和表达式
// 变量 使用 运算符链接就是表达式
/*
* 运算符
* + - * / % ++ -- 同python基本一样 但是 如果 是整数 不会得到一个浮点
* byte short char 在运算的时候会被自动提高到 int 类型,char类型和int类型的映射关系为 ascii unicode表
* 右侧的数据类型可以小于左侧,但是不能超过左侧的数据范围 没有超过的话隐式强转成左侧的
* + 运算在字符串上是拼接 这点和python 是一样的
* 优先级别 String + int 会int直接转成字符串 这一点和python是不一样的
*
*
* ++ -- 自增 自减 ++num num++ --num num--
* 1 单独使用 不和其他任何操作混合 自己独立成为一步骤
* 2 混合使用 和其他操作混合 例如和赋值混合
* 3 区别 :
* 单独使用 ++num num++ 没区别
* 混合使用 :
* a ++num 那么变量立马+1 然乎拿着结果进行使用 先加后用
* b num++ 那么首先使用本变量 然乎再让变量+1 先用后加
*
* 赋值运算符
* 基本 同python
* 复合 += -= *= %= /= 同python一样
* int a=33;
* a/=6 a=a/6
* a%=6 a=a%6
*
* 比较运算符
* == <> <= >= != 同python一致
*
* 逻辑运算符
* && 与 单个& 在python中用于集合取交集 并且python中的与是and
* || 或 python中是or
* ! 非 python 中的not
* 且 & | 用于字符串 则实际转化为二进制
* & 若 相同位置 都为1 则为1 否则为0
* | 若 相同位置 有一个为1 则为1 都则为0
*
* && || 具备短路效果 python中同样
*
* 三元运算符
* python a if a>b else b
* java a>b?a:b
* 同时要注意 如果三元运算符 赋值给左侧变量 注意 返回值需要同左侧变量数据类型一致
* 并且返回结果要被使用 哪怕是用在打印语句中
*
* */
public class OperatorAndExpress {
public static void main(String[] args) {
testInt();
testSelfAdd();
testBoolean();
System.out.println(threeOperator());
testPrivate();
testShort();
}
public static void testInt() {
// 整数运算 如果出现带浮点的情况 下 会取整数位 其实就是拿到的商
int a = 1234;
float b = 1234;
System.out.println(a / 1000 / 1000); // 直接得到0
System.out.println(b / 1000);
// 优先级
String str1 = "Java";
System.out.println(str1 + 10 + 20); // Java1020 整数强转字符
System.out.println(str1 + (10 + 20)); // Java30 小括号优先级高
}
public static void testSelfAdd() {
// 独立使用
int num = 10;
System.out.println(num);
++num;
System.out.println(num);
num++;
System.out.println(num);
// 混合使用
// 先加后用
int num2 = 20;
System.out.println(++num2);
System.out.println(num2);
// 先用后加
int num3 = 30;
System.out.println(num3++);
System.out.println(num3);
}
public static void testBoolean() {
System.out.println(!true);
}
public static int threeOperator() {
int a = 1;
int b = 2;
int c = a > b ? a + 1 : b - 1;
return c;
}
private static void testPrivate(){
System.out.println("in test testPrivate");
}
public static void testShort(){
short a =5;
short b =8;
// short c =a+b; a b 都是int 所以c应该是int类型
int c = a + b;
System.out.println(c);
}
}