Java第4章

Java算数运算符的使用

1.%的本质:看成一个公式:a % b = a - a / b * b【当a是小数时,公式=a-(int)a/b*b】有小数运算时,得到的结果是近似值,要用差值的绝对值在某个范围来判断是否相等,是要用一个精度来判断是否相等

2.自增:++

作为独立的语句使用时,前++和后++都完全等价于i=i+1

作为表达式使用

  • 前++:++i先自增后赋值
  • 后++:i++先赋值后自增

3.--,+,-,*是一个道理,完全可以类推

面试题
1.
int i = 1;
i=i++;//先赋值后自增。(1)temp=i;(2)i=i+1;(3)i=temp;
system.out.println(i);//1

2.
int i = 1;
i = ++i;//先自增后赋值。(1)i=i+1;(2)temp=i;(3)i=temp;
system.out.println(i);//2

关系运算符

逻辑运算符

 

 

 

 赋值运算符的特点

  • 运算顺序 int num =  a + b + c;
  • 赋值运算符的左边只能是变量右边可以是变量、表达式、常量值int num = 20;int num2 = 78 * 34 - 10;int num3 = a;
  • 复合赋值运算符等价于这样的效果。如:a+=3;等价于a=a+3;其他类推
  • 复合赋值运算符会进行类型转换
    byte b = 2;
    b+=3;//等价于b = (byte)(b + 2);
    b++;//等价于b = (byte)(b + 1);

三元运算符ternaryoperator

条件表达式?表达式1表达式2

运算规则:

1.如果条件表达式为true,运算后的结果是表达式1;

2.如果条件表达式为false,运算后的结果是表达式2;

口诀:【一灯大师,一真大师】

int a = 10;
int b = 99;
int result = a > b ? a++ : b--;//如果a > b为真就返回a++,如果为假就返回b--

运算符的优先级

  1. (),{}等
  2. 单目运算 ++,--
  3. 算术运算符
  4. 位移运算符
  5. 比较运算符
  6. 逻辑运算符
  7. 三元运算符
  8. 字符运算符

 标识符的命名规则规范 

1) 包名:多单词组成时所有字母都小写:aaa.bbb.ccc //比如 com.hsp.crm

2) 类名接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz [大驼峰] 比如: TankShotGame

3) 变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz [小 驼峰, 简称 驼峰法] 比如: tankShotGame

4) 常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ 比如 :定义一个所得税率 TAX_RATE

5) 后面我们学习到 类,包,接口,等时,我们的命名规范要这样遵守,更加详细的看文档

键盘输入语句

  • 介绍:在编程中,需要接收用户输入的数据,就可以使用键盘输入语句来获取。Input.java,需要一个 扫描器(对象),就是Scanner
  • 步骤:
  1. 导入该类的所在包,java.until.*
  2. 创建该类对象(声明变量)
  3. 调用里面的功能
  • 案例演示:要求:可以从控制台接收用户信息,【姓名,年龄,薪水】
  • import java.util.Scanner;//表示把java.util下的Scanner类导入,导入才能使用
    public class input{
    
    	//编写一个main方法
    	public static void main(String[] args){
    		//演示接受用户的输入
    		//步骤
    		//Scanner类 表示 简单文本扫描器,在java.util包
    		//1.引入/导入Scanner类所在的包
    		//2.创建Scanner对象,new创建一个对象,体会
    		//myScanner就是Scanner类的对象
    		Scanner myScanner = new Scanner(System.in);//从键盘输入
    		//3.接收用户输入了,使用相关的方法
    		System.out.println("请输入名字");
    
    		//当程序执行到next方法时,会等待用户输入~
    		String name = myScanner.next();//接收用户输入的字符串
    
    		System.out.println("请输入年龄");
    		int age = myScanner.nextInt();//接收用户输入的int
    
    		System.out.println("请输入薪资");
    		double sal= myScanner.nextDouble();//接收用户输入的double
    
    		System.out.println("人的信息如下:");
    		System.out.println("姓名="+name +"年龄="+age +"薪资="+sal);
    	}
    }

进制

对于整数,有四种表示方式

  1. 二进制:0,1,满2进1,以0b或者0B开头
  2. 十进制:0~9,满十进一
  3. 八进制:0~7,满八进一
  4. 十六进制:0~9及A(10)-F(15),满16进1。以0x或者0X开头表示。A~F不分大小写

进制的转换(基本功)

  1. 二进制转十进制:规则:从最低位(右边)开始,将每个位上的数提取出来,乘以2的(位数-1)次方,然后求和
  2. 八进制转十进制:规则:从最低位(右边)开始,将每个位上的数提取出来,乘以8的(位数-1)次方,然后求和(详情看视频:【零基础 快速学Java】韩顺平 零基础30天学会Java_哔哩哔哩_bilibili
  3. 十六进制转十进制:规则:从最低位(右边)开始,将每个位上的数提取出来,乘以16的(位数-1)次方,然后求和
  4. 十进制转二进制:规则:将该数不断地除以2,直到商为0为止,然后将每步得到的余数倒过来,就是对应的二进制(详情看视频:【零基础 快速学Java】韩顺平 零基础30天学会Java_哔哩哔哩_bilibili
  5. 十进制转十六进制:规则:将该数不断地除以16,直到商为0为止,然后将每步得到的余数倒过来,就是对应的十六进制(详情看视频:【零基础 快速学Java】韩顺平 零基础30天学会Java_哔哩哔哩_bilibili
  6. 二进制转八进制:规则:从低位开始,将二进制数每三位一组,转成对应的八进制数即可【例子:ob11(3)010(2)101(5)=>0325
  7. 二进制转十六进制:规则:从低位开始,将二进制数每四位一组,转成对应的十六进制数即可【例子:ob1101(D)0101(5)=>oxD5
  8. 八进制转换成二进制:规则:将八进制数每一位,转成对应的一个3位的二进制数即可 【例子:0(000)2(010)3(011)7(111)=>0b10011111】
  9. 十六进制转换成二进制:规则:将十六进制每1位,转成对应的4位的一个二进制数即可【例子:0x2(0010)3(0011)B(1011)=>001000111011】

原码、反码、补码(重点 难点

  1. 二进制的最高位符号位0表示正数,1表示负数(口诀0->正 1->负)。其余位是低位,称为数值位(原码=最高位+低位)
  2. 正数的原码,反码,补码都是一样的(三码合一)
  3. 负数的反码=它的原码符号位不变,其它位取反(0->1,1->0)
  4. 负数的补码=它的反码+1,负数的反码=负数的补码-1
  5. 0的反码,补码都是0
  6. java没有无符号数,换言之,java中的数都是有符号的
  7. 在计算机运算的时候,都是以补码的方式来运算的(补码可以解决正数和负数,把正数和负数统一起来了)
  8. 当我们看运算结果的时候,要看它的原码

倘若觉得晕乎乎,多看几遍。还是看不懂,那我就直接甩个链接:【计算机组成原理】原码反码补码 | 小白友好_哔哩哔哩_bilibili

看完视频回来再看看8条句子,会知道啥意思的。

位运算

  • java中有7个位运算(&、|、^、~、>>、<<、>>>)分别是按位与&、按位或|、按位异或^、按位取反~
  • 运算规则
  1. 按位与& :两位全为1,结果为1,否则为0
  2. 按位或| :两位有一个为1,结果为1,否则为0
  3. 按位异或^ :两位一个为0,一个为1,结果为1,否则为0
  4. 按位取反~ :0->1,1->0

例子:

public class BitOperator{

	//编写一个main方法
	public static void main(String[] args){
		//1.2的补码=> 2的原码 00000000 00000000 00000000 00000010
		//  2的补码=> 00000000 00000000 00000000 00000010
		//2.3的补码=> 3的原码 00000000 00000000 00000000 00000011
		//  3的补码=> 00000000 00000000 00000000 00000011
		//3.按位或|
		//  00000000 00000000 00000000 00000010
		//  00000000 00000000 00000000 00000011
		//  00000000 00000000 00000000 00000011  |运算之后的补码
		//  00000000 00000000 00000000 00000011   运算之后的原码也是
		//  结果就是3

		System.out.println(2|3);
		//1.2的补码=> 2的原码 00000000 00000000 00000000 00000010
		//  2的补码=> 00000000 00000000 00000000 00000010
		//2.3的补码=> 3的原码 00000000 00000000 00000000 00000011
		//  3的补码=> 00000000 00000000 00000000 00000011
		//3.按位异或^ 
		//  00000000 00000000 00000000 00000010
		//  00000000 00000000 00000000 00000011
		//  00000000 00000000 00000000 00000001  ^运算之后的补码
		//  00000000 00000000 00000000 00000001   运算之后的原码也是
		//  结果就是1
		System.out.println(2^3);



	}
}

位运算符【不懂看视频:位运算符_哔哩哔哩_bilibili

  • 还有3个位运算符>>、<<和>>>,运算规则(右除左乘)
  1. 算术右移>>:低位溢出,符号位不变,并用符号位补溢出的高位
  2. 算术左移<<:符号位不变,低位补0
  3. >>>逻辑右移也叫无符号右移,运算规则是:低位溢出,高位补0
  4. 特别说明:没有<<<符号
public class BitOperator{

	//编写一个main方法
	public static void main(String[] args){
	int a = 1>>2;
	//-1的原码:10000000 00000000 00000000 00000001
	//-1的反码:11111111 11111111 11111111 11111110
	//-1的补码:11111111 11111111 11111111 11111101
	//-1的反码:11111111 11111111 11111111 11111100
	//-1的原码:10000000 00000000 00000000 00000011 此处为-4
	//算术右移:10000000 00000000 00000000 00000001 11 //人看原码,计算机看补码
	//-4/2/2=-1
	int b = -1>>2;
	int c = 1<<2;
	int d = -1<<2;
	int e = 3>>>2;
	System.out.println("a="+a);//0
	System.out.println("b="+b);//-1
	System.out.println("c="+c);//4
	System.out.println("d="+d);//-4
	System.out.println("e="+e);//0

	}
}

该文是记录B站韩顺平老师的java课程

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值