java运算符,命名规则,进制转换

  1. 算数运算符
    1. ++a:先运算后赋值
    2. a++:先赋值后运算
    3. %的本质a%b = a-(int)la/b*b
    4. public class Operator{
      	public static void main(String[] args) {
      		System.out.println(10 / 4);//2
      		double a = 10 / 4;
      		double b = 10.0 / 4;
      		System.out.println(a);//2.0
      		System.out.println(b);//2.5
      		System.out.println("================");
      		//a%b = a-a/b*b
      		System.out.println(-10 % 3);//-1
      		System.out.println(10 % -3);//1
      		System.out.println(-10 % -3);//-1
      		System.out.println(10 % 3);//1
      
      		System.out.println("================");
      		int i = 1;
      		i=i++;//规则会使用一个临时变量temp(1)temp=i,(2)i=i+1,(3)i=temp.
      		System.out.println(i);//1
      
      		int c = 1;
      		c = ++c;//规则会使用一个临时变量temp(1)c=c+1,(2)temp=c,(3)c=temp.
      		System.out.println(c);//2
      
      	}
      }

  2. 赋值运算符:复合赋值运算符会进行类型转换,
    1. byte b =3;
    2. b += 2;//这样是不会报错的,b=(byte)(b+2),底层有一个类型转换。
    3. b = b + 2;//这是会报错的,b + 2得出的是int类型的但b是byte类型,大容量的不能自动向小总量的类型自动转换。
  3. 关系运算符
    1. 关系运算符的结果都是boolean型,也就是要么是true,要么是false
  4. 逻辑运算符:用于连接多个条件(多个关系表达式),最终结果也是一个boolean值。
    1. &:逻辑与(效率低),&&短路与(效率高),|逻辑或(不管第一个条件是否为true,第二个条件都要判断,效率低),||短路或(如果第一个条件为true,则第二个条件不会判断,最终为true,效率高)。
    2. a^b:逻辑异或,当a和b不同时为真,相同时为假。
  5. 位运算符
    1. 按位与& :两位全为1,结果为1,否则为0
    2. 按位或| : 两位有一个为1,结果为1,否则为0
    3. 按位异或^ : 两位一个为0,一个为1,结果为0
    4. 按位取反~:0->1,1->0。
    5. public class Place{
      	public static void main(String[] args) {
      		System.out.println(2&3);//2与3输出2
      		System.out.println(2|3);//2与3输出,3
      		System.out.println(2^3);//,输出1
      		System.out.println(~-2);//输出1
      		System.out.println(~2);//得到2的补码00000000 00000000 00000000 00000010
      		//取反11111111 11111111 11111111 11111101得到这个补码
      		//然后打印出来需要换成原码
      		//负数补码到原码的转换
      		//负数的反码=负数的补码-1,11111111 11111111 11111111 11111100
      		//负数反码到原码的转换除了符号位其它位取反。
      		//10000000 00000000 00000000 00000011;
      		//最后输出为-3。
      		//int类型占四个字节。
      	}
      }

    6. 算数右移>>:低位溢出,符号位不变,并用符号位补溢出的高位
    7. 算术左移<<:符号位不变,低位补0
    8. >>>逻辑右移也叫无符号右移,运算规则是,低位溢出,高位补0.(没有<<<符号)
    9. public class Place01{
      	public static void main(String[] args) {
      		int a = 1<<2;
      		int b = 1>>2;
      		System.out.println(a);//输出4
      
      		System.out.println(b);//输出0
      		int c = 8>>>2;
      		System.out.println(c);//输出2
      		int d = -8>>>2;
      		System.out.println(d);//输出1073741822
      
      	}
      }

  6. 三元运算符:条件表达式?表达式1:表达式2;
    1. 如果条件表达式为true,运算后的结果是表达式1;
    2. 如果条件表达式为false,运算后的结果是表达式2;
    3. 表达式1和表达式2要为可以赋给接收变量的类型(或可以自动转换)
  7. 标识符
    1. 命名规则(必须遵守):数字不可以开头,由英文字母,0-9,_或$组成,不可以使用关键字和保留字,但可以包含。标识符不能含空格。
    2. 命名规范:包名:多单词组成时所有字母都小写:aaa.bbb.ccc
      1. 类名和接口名:多单词组成时,所有单词的首字母大写
      2. 变量名,方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写。
      3. 常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY
  8. 键盘输入语句:Scanner类(表示简单文本扫描器)
    1. 导入该类的所在包,java.util.*
    2. 创建该类的对象(声明变量)
    3. 调用里面的功能
    4. import java.util.Scanner;//导入类
      
      
      
      public class Input01{
      	public static void main(String[] args) {
      		//演示接收用户的输入
      		//1.引入Scanner类所在的包
      		//2.创建 Scanner 对象
      		//
      		Scanner scanner = new Scanner(System.in);
      
      		System.out.println("请输入你的名字:");
      		//接收用户输入
      		String name = scanner.next();//接收用户输入字符串
      
      		System.out.println("请输入你的年龄:");
      
      		int age = scanner.nextInt();//接收用户输入int
      
      		System.out.println("请输入你的薪水:");
      
      		double sal = scanner.nextDouble();//接收用户输入double
      		System.out.println("人员信息如下---");
      		System.out.println("名字:" + name +'\t' + "年龄:" + age + '\t' + "薪水" + sal);
      	}
      }

  9. 进制
    1. 二进制以0b或0B开头
      1. 二进制转八进制:从低位开始,将二进制数每三位一组,转成对应的八进制数即可。
      2. 二进制转十六进制:从低位开始,将二进制数每四位一组,转成对应的十六进制数即可。
    2. 十进制
    3. 八进制,以数字0开头表示。
      1. 十进制转换成八进制将该数不断除以8,直到商为0为止,然后将每步得到的余数倒过来就是对应的八进制。(十进制转其他也是这样的方法)
      2. 八进制转二进制:将八进制数每1位,转成对应的一个3位的二进制数即可。(0237=0b010011111
    4. 十六进制,以0x或者0X开头表示,此处A-F不区分大小写。
      1. 十六进制转二进制:将十六进制数每1位,转成对应的4位的一个二进制数即可(0x23B=0b001000111011
  10. 原码,反码,补码
    1. 二进制的最高位的是符号位:0表示正数,1表示负数
    2. 正数的原码,反码,补码都一样
    3. 负数的反码=它的原码符号位不变,其它位取反
    4. 负数的补码=它的反码+1,负数的反码=负数的补码-1
    5. 0的反码,补码都是0
    6. java没有无符号数,换言之,java中的数都是有符号的
    7. 在计算机运算的时候,都要以补码的方式来运算。
    8. 当我们看运算结果的时候,要看他的原码。

你可能感兴趣的:(java,c++,算法)