博客主页: A_SHOWY
系列专栏:力扣刷题总结录 数据结构 云计算 数字图像处理 力扣每日一题_ 运算符是一种特殊的符号,用于表示数据的运算、赋值和比较
取模 %的本质: a - (int)a / b * b//当a是小数时
public class Hello {
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
}
}
自增
独立语句使用时,++i和i++没有区别的。但是如果作为表达式使用,++i先自增后赋值,++i先赋值后自增。和c++没有区别。注意自增运算符的优先级大于算数运算符。
答:其主要过程为按照规则使用临时变量temp,先将i存到临时变量temp中,再对i进行自增,再把temp赋值给i,所以最后的值为1。
面试题2
答: 其主要过程为按照规则先将i自增,然后 将存到临时变量temp中,再将temp存到i中,最后i的值为2。
关系运算符的结果都是boolean型,要么true要么false ,关系运算符组成的表达式称为关系表达式。
用于连接多个条件,最终结果也是boolean值。
分为两组:第一组短路与&& 短路或|| 取反!
第二组与& 逻辑或| 逻辑异或 ^
+= -= *= /= 和c++一模一样
复合赋值运算符会进行类型的转换
byte b = 3;
b += 2;//b = byte(b + 2);等价,底层有一个类型转换
条件表达式?表达式1:表达式2
int c = a > b ? 1.1 : 2.6;//错误的
它的本质是if else 语句
例子:三个数,寻找最大值,用一句语句
int max = (n1 > n2 ? n1 : n2) > n3 ? (n1 > n2 ? n1 : n2) : n3;
规则:
规范:
例子:
import java.util.Scanner;//引入scanner类所在的包
public class Hello {
public static void main(String[] args) {
//创建Scanner类的对象,scanner就是Scanner类的对象
Scanner scanner = new Scanner(System.in);
System.out.println("请输入姓名");
String name = scanner.next();
System.out.println("请输入年龄");
int age = scanner.nextInt();
System.out.println("请输入成绩");
double score = scanner.nextDouble();
System.out.println("name: " + name + "\t" + "age: " +age + "\t" + "score: " + score);
}
}
二进制转十进制 例:0b1011:1 * 2的零次方 + 1 * 2的一次方 + 1 * 2的三次方 = 11
八进制转十进制 例:0234 : 4 * 8的零次方 + 3 * 8的一次方 + 2 * 8的二次方 = 156
十六进制转十进制 例:0x23A:10 * 16的零次方 + 3 * 16的一次方 + 2 * 16的二次方 = 570
十进制转二进制:例: 34
十进制转八进制:例:131(同理)得:0203
十进制转十六进制:例:237(同理)得:0xED
二进制转八进制和16进制:0b11010101
转八进制:每三位一组,转成对应的八进制数0325
转十六进制:每四位一组,转成对应的十六进制数 0xD5
八进制转二进制:八进制每一位数,转成一个对应的3位二进制数 例:0237
02(010)3(011)7(111) ——> 0b10011111
十六进制转二进制:十六进制每一位数转成4位的二进制数 例:0x23b
0x2(0010)3(0011)b(1011)——> 0b1000111011
对于有符号的数,有8个原则:
java 中有7个
例:
>> 算数右移:低位溢出,符号位不变
<<算数左移:低位补0,符号位不变
>>>逻辑右移:低位溢出,高位补0,没有<<<符号
练习:
int i = 66;
System.out.println(i++ + i);//133,i++ 被用在表达式中,它的值是 66(使用当前值,然后增加 1,但在这个表达式中使用的是当前值)。
int i = 66;
System.out.println(++i + i);//134