JAVA学习笔记二之(5)运算符①

时间:2023-02-16 16:37:10

JAVA学习笔记二之(5)运算符①

一、运算符的分类
    1、算数运算符
    2、赋值运算符
    3、比较运算符
    4、逻辑运算符
    5、位运算符
    6、三元运算符
二、算数运算符
    算数运算符包括+,-,*,/,%,++,- -等。
     1、+,-,*,/的使用
class OperatorDemo1 {
public static void main(String[] args) {
int a = 10;
int b = 20;

//加法
int c = a + b;
System.out.println(c); //30

//减法
int d = a - b;
System.out.println(d); //-10

//乘法
int e = a * b;
System.out.println(e); //200

//除法
int f = a / b;
System.out.println(f); //整数相除,结果只能是整数。

//我就想得到小数
//float ff = a*1.0f / b;
//System.out.println(ff);
}
}
    2、+的用法
        A:加法运算符
        B:正号
        C:字符串连接符
            操作的结果是按照从左到右的顺序进行。
        注意:
            5+5+”=5+5”和”5+5”+5+5的区别。
class OperatorDemo2 {
public static void main(String[] args) {
//作为加法运算符
int a = 10;
int b = 20;
int c = a + b;
System.out.println(c);
System.out.println("---------------");

//作为正号
System.out.println(30);
System.out.println(+30);
System.out.println(-30);
System.out.println("---------------");

//作为字符串连接符
String s = "hello";
int x = 100;
//有问题,不能和字符串这样直接转换
//x = x + s;
s = x + s;
System.out.println(s);

System.out.println("5+5="+5+5);
//第一次:"5+5=5"
//第二次:"5+5=55"
System.out.println(5+5+"=5+5");
//第一次:10
//第二次:"10=5+5"


//字符
System.out.println('a');
System.out.println('a'+1); //'a' = 97
//ASCII码表 数值和基本字符的对应关系表。

//'a' = 97
//'A' = 65
//'0' = 48

System.out.println('a'+1+"haha");
System.out.println("haha"+'a'+1);
}
}
    3、/和%的用法
        (1)、/:求商,就是两个数据做除法。
        (2)、%:取余,就是数据做除法,得到余数。
            两个操作数据,分为左边和右边:
                左边小于右边,结果是左边。
                左边等于右边,结果是0。
                左边大于右边,结果是余数。
            最终的余数的符号和左边的操作数一致。
class OperatorDemo3 {
public static void main(String[] args) {
int a = 3;
int b = 5;
//除法的用法
System.out.println(a/b);

//取余的用法
System.out.println(3%5); //3
System.out.println(5%5); //0
System.out.println(7%5); //2
System.out.println(-3%5); //-3
System.out.println(3%-5); //3
}
}
    4、++,- -运算符
        ++,- -运算符也就是自增,自减运算符。
        作用:其实就是针对本身加1或者减1操作。
        它们可以放在操作数据的前面或者后面。

        注意:

            A:如果是单独使用,位置前后效果一致。
            B:如果是参与操作使用,放在后面,是先操作,再++或者- -;放在前面,是先++或者- -,再操作。
class OperatorDemo4 {
public static void main(String[] args) {
int a = 10;

//a++; // a = a + 1;
//++a;

//a--;
//--a;
//System.out.println(a);

//int b = a++;
//System.out.println(a); //11
//System.out.println(b); //10

int b = ++a;
System.out.println(a); //11
System.out.println(b); //11

}
}
class OperatorDemo5 {
public static void main(String[] args) {
int a = 9;
int b = 9;
int c = 9;

//a=9,b=9,c=9

b = a++; //a=10,b=9,c=9
c = --b; //a=10,b=8,c=8
--a; //a=9,b=8,c=8
c++; //a=9,b=8,c=9

System.out.println(a);
System.out.println(b);
System.out.println(c);

System.out.println("------------------");

int x = 10;
x++;
x = x + 20;
System.out.println(x);
}
}
    5、赋值运算符
        =:赋值。
        +=,-=,*=,/=,%=:
            +=:把左边和右边的结果赋值给左边。
        注意:
            一个变量的使用,必须先声明,再赋值,最后使用。
class OperatorDemo6 {
public static void main(String[] args) {
//定义变量
int a =10; //把10赋值给int类型的变量a
System.out.println(a);

//int b; //错误:可能尚未初始化b
//System.out.println(b);
//b = b + 100;//错误:可能尚未初始化b

//int b;
//b = 100;
//System.out.println(b);

//int a = 9;
//int b = 9;
//int c = 9;

//可不可以同时赋值呢?
//int a = b = c = 9; //做法错误

//int a;
//int b;
//int c;

//a = b = c = 9;

//改进版
//int a, b, c;
//int a;b;c; //错误

int x = 100;
int y = 200;
x += y; //把x加上y然后赋值给x
//x = x + y;
System.out.println(x);
}
}

三、面试题

看程序是否有问题,如果有请指出:
//代码1
short s = 1;
s = s + 1; // 错误: 可能损失精度
System.out.println(s);


//代码2
short ss = 1;
ss += 1;
System.out.println(ss);
第一行代码中有问题。因为类型的提升。
第二行代码中没有问题,因为+=隐含了强制类型转换。

+=这种做法的真实步骤:
x += y;

x = (x的数据类型)(x + y);
class OperatorDemo7 {
public static void main(String[] args) {
//代码1
//short s = 1;
//s = s + 1; //错误: 可能损失精度
//System.out.println(s);


//代码2
short ss = 1;
ss += 1; // ss = ss + 1;
//ss = (short)(ss + 1);
System.out.println(ss);

}
}