运算符是一种特殊符号,用以表示数据的计算、赋值和比较等
public class study {
public static void main(String[] args){
System.out.println(5/2); //2
System.out.println(5.0/2);//2.5
double a = 5/2;
System.out.println(a);//2.0
}
}
解释:
5/2:都为整型,运行结果也为整型
5.0/2:前者为浮点型,运行结果也为浮点型
double a = 5/2:先计算5/2得2,再变为double类型,加上小数点
+= *= -+这些具有强制类型转换的功能
取模的使用:(易混)
公式:a % b = a - b / b * b
public class study {
public static void main(String[] args){
System.out.println(10%3);//1
System.out.println(-10%3);//-1
System.out.println(10%-3);//1
System.out.println(-10%-3);//-1
}
}
自增自减(易混)
public class study {
public static void main(String[] args){
int i = 8;
int k = i++;
System.out.println("k=" + k + "i=" + i);
}
}
k=8
i=9
简单记忆法:++在后,先用再+;++在前,先+后用
面试题
第一题:
i=i++
public class study {
public static void main(String[] args){
int i = 1;
i=i++;
System.out.println(i);
}
}
答案为1
解释:
第二题:
i=++i
public class study {
public static void main(String[] args){
int i = 1;
i=++i;
System.out.println(i);
}
}
答案为2
解释:
就是将某个运算的值赋给指定的变量
基本赋值运算符:
=
符合赋值运算符
+=
-=
*=
/=
%=
以+=为例,其他亦是如此
a += b; -----> a = a + b;
关系运算符的结果都是boolean型,也就是true或者false
关系表达式经常用在if结构的条件中或循环结构的条件中
注意:== 和 =
用于连接多个条件(多个表达式),最终的结果也是一个boolean值
说明逻辑运算规则:
注意:&& 和 & 的区别
&& 短路与:如果第一个条件为false,则第二个条件不会判断,最终结果为false,效率高
& 逻辑与:不管第一个条件是否为false,第二个条件都要判断,效率低
开发中,我们基本上使用&&短路与,效率高
注意:|| 和 | 的区别
|| 短路或:如果第一个条件为true,则第二个条件不会判断,最终结果为true,效率高
| 逻辑或:不管第一个条件是否为true,第二个条件都要判断,效率低
基本语法:
条件表达式?表达式1:表达式2;
若条件表达式为true,则运算后结果为表达式1
反之则运算后结果为表达式2
举例:
public class study {
public static void main(String[] args){
int a = 10;
int b = 99;
int result = a > b ? a++ : b--;
System.out.println(result);
}
}
运行结果为:
99
解释:
a=10,b=99,
a>b为假,则结果为b–
小细节:
int a = 10;
int b = 99;
int c = a > b ? 1.1 : 2.2;// 报错
System.out.println(c);
修改为:
int a = 10;
int b = 99;
int c = a > b ? int(1.1) : int(2.2);
System.out.println(c);
这里主要也是数据类型那方面的知识
int res = a > b ? a++ : --b;
上下代码含义相同
if(a > b)
{
res = a++;
}
else:
{
res = --b;
}
练习:求三个数的最大值
public class study {
public static void main(String[] args){
int a = 10;
int b = 99;
int c = 100;
int max = (a > b ? a : b) >c ? (a > b ? a : b) : c;
System.out.println(max);
}
}
概念:
规则:(必须遵守)
规范:(更加专业)
Java保留字:现有Java版本尚未使用,但以后版本可能会作为关键字使用,自己命名标识符时要避免使用这些保留字
在编程中,需要接收用户输入的数据,就可以使用键盘输入语句来获取。
input.java,需要一个扫描器(对象),就是Scanner
步骤:
举例:
import java.util.Scanner;//表示把java.util下的Scanner类导入
public class study {
public static void main(String[] args){
Scanner myScanner = new Scanner(System.in);
System.out.println("请输入姓名:");
String name = myScanner.next();
System.out.println("请输入年龄");
int age = myScanner.nextInt();
System.out.println("请输入薪水");
double sal = myScanner.nextDouble();
System.out.println("该人的信息如下:");
System.out.println("名字:" + name + "\n" + "年龄:"
+ age + "\n" + "薪水:" + sal);
}
}
请输入姓名:
汴京城下君
请输入年龄
20
请输入薪水
9600
该人的信息如下:
名字:汴京城下君
年龄:20
薪水:9600.0
进制的介绍:
二进制转为十进制
规则:
从最低位(右边)开始,将每个位上的数提取出来,乘以2的(位数-1)次方,然后求和
案例:
将0b1011转为十进制
八进制转为十进制
规则:
从最低位(右边)开始,将每个位上的数提取出来,乘以8的(位数-1)次方,然后求和
十六进制转为十进制
规则:
从最低位(右边)开始,将每个位上的数提取出来,乘以16的(位数-1)次方,然后求和
十进制转为二进制
规则:
将该数不断除以2,直到商为0为止,然后将每步得到的余数倒过来,就是对应的二进制
案例:
将34转为对应二进制---->0b00100010
(一个字节占八位,只得到六位,还要用两个0填充高位)
十进制转为八进制
规则:
将该数不断除以8,直到商为0为止,然后将每步得到的余数倒过来,就是对应的八进制
十进制转为十六进制
规则:
将该数不断除以16,直到商为0为止,然后将每步得到的余数倒过来,就是对应的十六进制
二进制转为八进制
规则:
从低位开始,将二进制数每三位一组,转成对应的八进制即可
案例:
将0b11010101转为八进制
二进制转为十六进制
规则:
从低位开始,将二进制数每四位一组,转成对应的十六进制即可
八进制转为二进制
规则:
将八进制数每一位,转成对应的一个3位的二进制数即可
案例:
将0237转成二进制
十六进制转为二进制
规则:
将十六进制数每一位,转成对应的一个4位的二进制数即可
位运算
System.out.println(4 << 3); // 4*2*2*2 = 32
System.out.println(15 >> 2);// 15/2/2 = 3