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);
}
}