javaDay01_2
package zrs;
public class demo3 {
public static void main(string[] args) {
//运算符的学习,运算符有哪些就不一一列举了,直说一些坑
//运算符的特殊的两个:++ 和 -- 这两个运算符叫做加加和减减
int a=3,b,c;
//这是加加 加加前置,就是先将a+1然后在将其结果赋值给c
c=++a;
system.out.println("a="+a+",c="+c); //输出结果a=4,c=4
//这是加加的后置 就是先将a的值赋值给b,然后a在+1
/* ++后置的详细解释代码
* int temp=a;
* a=a+1;
* b=temp;
* */
b=a++;
system.out.println("a="+a+",b="+b); //输出结果a=4,b=3
//注意:为了避免不必要的麻烦,一般建议将++前置,--同理
//+ 号还可以作为字符串的连接符
system.out.println("--------------------------------");
system.out.println(5+5); //输出结果 10
system.out.println("--------------------------------");
system.out.println("5"+5);//输出结果55
//当字符串和其他类型的值相加时,+号就起连接作用,使他们变成新的字符串
system.out.println("--------------------------------");
//赋值运算符= += -= *= /=
short s1=1;
s1+=4;//因为他是赋值运算符,为自动转换类型
system.out.println("s1="+s1); //编译运行成功,输出的结果为5,建议使用在int上,其他的丢失精度会很麻烦
// s1=s1+4;
// system.out.println("s1="+s1); //编译失败,报错,这是因为s1+4在做运算的时候,将s1的类型自动提升为int了,就可能丢失精度
//比较运算符== >= <= != 比较运算符只会有两个结果,要么为true,要么为false
system.out.println(3==4); //输出结果为false 注意判断两个值是不是一样,使用的是两个等号,这个!=叫做不等于
//逻辑运算符
/*
* & : 两边为真则都为真,只要有一边为假,就都为假
* | : 只要一边为真就为真,两边为假才为假
* ^ : 异或,两边相同为false,不同为true
* ! : !true=false,!false=true
*
*
* */
//双与 ,双非 逻辑运算符
//当y=1
//y>3 & y<6 这时候,先判断y是否大于3,不管为真还是为假,都会判断y是否小于6,两边都会参与运算
//y>3 && y<6 这时候,先判断y是否大于3,如果为假,那么y<6就不会执行,直接为假,这就是所谓的短路,
//注意,在需要两边都进行判断运算的时候,推荐使用一个&
// | : 两边都参与运算
// || : 当左边为 真 的时候,右边就不参与运算,直接为真,这也是短路
//位运算就是右移是除以2的幂运算,右移几位就是除以2的几次幂 ,移出的位舍弃,原来最高位是啥就补啥(这样才能保证数的正负)
//6>>2 就相当于 6/2^2=1
//位运算的左移就是乘以2的幂运算,左移几位就是乘以2的几次幂,后面直接补0,前面移出的位直接舍弃
// 6<<2 就相当于 6*2^2=24
// 无符号右移 >>> 无论是正数还是负数(无论原来的最高位是什么) ,差的哪一位直接补零
//二进制位的也可以使用&(&) |(或) ^(异或) ~(取反) 来运算
// &运算
/* 011
* &101
* ------------
* 001
* */
// |运算
/* 011
* |101
* ------------
* 111
* */
// ^运算
/* 110
* ^011
* ------------
* 101
*
* 101
* ^011
* -------------
* 110
* 任何一个数与另一个数同时异或运算两次,那么结果就还是这个数
* */
}
}
上一篇: C#实现拼手气红包算法
推荐阅读