day03-运算符

1、算数运算符

 使用方法如下:

注意事项:小数参与运算时,结果可能不准确,牵扯到计算机的数据存储
System.out.println(1 + 2);    //结果为3
System.out.println(8 - 6);    //结果为2
System.out.println(5 * 7);    //结果为35
 
/的运算结果为商值
System.out.println(10 / 2);    //结果为5
System.out.println(10 / 3);    //结果为3,只有整数参与运算时,结果为整数
System.out.println(10.0 / 3);    //结果为3.3333333,小数参与运算时,结果为小数
 
%的运算结果为余数
System.out.println(10 % 3);    //结果为1
System.out.println(10 % 5);    //结果为0

算数运算符实战:数值拆分

package ssss;    //创建的包名为ssss
import java.util.Scanner;    //导入键盘录入需要的包
public class test{
    public static void main(String[] args){
        //键盘录入
        Scanner  sc = new Scanner(System.in);    //固定格式
        System.out.println("请输入一个三位数:");
        int num = sc.nextInt();    //将键盘的录入值赋值给num
 
        //求各个位上的值
        int g = num % 10;    //个位
        int s = num /10 % 10;    //十位
        int b = num /100 % 10;    //百位
        System.out.println(g);
        System.out.println(s);
        System.out.println(b);
    }
}

2、数据运算时的类型转换

1、隐式转换(自动类型提升):把一个取值范围小的数值,转换成取值范围大的数据。

取值范围从小到大:byte -> short -> int -> long -> float -> double

例如以下转换不会报错:
int a = 19;
double b = a;    //b的值为19.0000000 

转换规则:

取值范围小的和取值范围大的进行运算时,小的会提升为大的,然后再进行运算。

byte、short、char三种类型的数据在运算的时候,都会直接先提升为int,然后再进行运算。

byte a1 = 10;
byte a2 = 20;
char c1 = 15;
int i1 = a1 + a2;    //结果为int
int i2 = a2 + c1;    //结果为int
 
int b1 = 9;
long b2 = 8;
double b3 = 7;
double d = b1 + b2 + b3;    //结果为double
 
long x = a1 + c1 + b2;    //结果为long

2、强制转换

如果把一个取值范围大的数值,赋值给取值范围小的变量。是不允许直接复制的。如果一定要这么做就需要加入强制转换。

格式:目标数据类型 变量名 = (目标数据类型)被强制转换的数据 ;

byte a = 10;
byte b = 20;
int c = 30;
 
转换如下:
byte d = (byte)c;
byte e = (byte)(a+b);

3、字符串的相加

字符串只有加操作,没有乘、除、减操作。

eg.

"123"+123   --->  "123123"

在加的过程中,只要有字符串参与计算,就是拼接

连续进行 " +  "操作时,从左到右依次执行

eg:

1 + 99 + " 年黑马" = 100年"黑马"

int age = 18

System.out.println("我的年龄是" + age + "岁");//"我的年龄是18岁"
System.out.println("我的年龄是" + "age" + "岁");"我的年龄是age岁"

第一个age属于变量

第二个age与变量无关,它属于字符串

System.out.println(1 + 2 + "abc" + 2 + 1);// "3abc21"

4、字符相加

当(字符+字符)或(字符+数字)时,会把字符通过ASCLL码表查询到的对应的数字再进行计算

代码实现如下:

System.out.println(1 + 'a');    //98, a的ASCLL码表对应数值为97
System.out.println('a'+'b');    //195, 97+98

ASCLL码表中  :

'A' 对应 97

'a' 对应 65

5、自增自减运算符

++:作用是加,变量值加1

--:作用是减,变量值减1

1、单独使用。

即单行使用,不参与运算。此时++和--无论是放在变量前还是变量后,单独写一行结果是一样的。

代码实现如下:

int a = 10;
a++;
System.out.println(a);//11

int a = 10;
++a;
System.out.println(a);//12

int a = 10;
a--;
System.out.println(a);//11

int a = 10;
--a;
System.out.println(a);//10

2、参与计算。(第二种运算,了解即可)

例如:
//先用后加
int a = 10;
int b  =a++;    //b=10,a=11
 
//先加后用
int c = 10;    
int d = ++c;   //d=11,c=11 

实战如下:

int x = 10;
int y = x++;    //先用后加,y=10,x=11
int z = ++x;    //先加后用,z=12,x=12
System.out.println(x);    //12
System.out.println(y);    //10
System.out.println(z);    //12

6、赋值运算符

7、关系运算符

" == "是判断     " = "是赋值!!!

public class CompareoperatorDemo1 {
    public static void main(String[] args) {
        //1. ==判断左右两边是否相等
        int a = 10;
        int b = 10;
        int c = 20;
        System.out.println(a == b);//true
        System.out.println(a == c);//false

        //!= 判断左右两边是否不相等
    }
}

实战代码如下:

int a=10;
int b=20;
int c=20;
boolean rel = c <= b;
boolean ress = c > b;
 
System.out.println(a==b);    //false
System.out.println(c==b);    //true
System.out.println(rel);    //true
System.out.println(ress);    //false

8、逻辑运算符

代码举例如下:

1、& 并且
System.out.println(true & true);    //true
System.out.println(true & false);    //false
System.out.println(false & false);    //false
 
2、| 或
System.out.println(true | true);    //true
System.out.println(true | false);    //true
System.out.println(false | false);    //false
 
3、 ^ 异或
System.out.println(true ^ true);    //false
System.out.println(true ^ false);    //true
System.out.println(false ^ false);    //false
 
4、! 逻辑非  取反
System.out.println(!true);    //false
System.out.println(!false);    //true

9、短路逻辑运算符

最常用的逻辑运算符为“&&、|| 和 !”

 注意事项如下:

&和|,无论左边是true还是false,右边的都要执行。
&&和||,如果左边能确定整个表达式的结果,右边就不用执行了。
 
&&:左边为false时,右边无论是真是假,整个表达式结果一定为false。
||:左边为true时,右边无论是真是假,整个表达式结果一定为true。

代码实战如下:

/*要求键盘输入两个整数
如果其中一个为6,最终结果输出true
如果它们的和为6的倍数,最终结果输出true
其他情况都是false*/
 
package sss;
import java.util.Scanner;
 
public class test{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入第一个整数");
        int num1 = sc.nextInt();
        System.out.println("请输入第二个整数");
        int num2 = sc.nextInt();
        boolean result = num1==6 || num2==6 || (num1+num2)%6==0;
        System.out.println(result);
    }
}

10、三元运算符

什么是三元运算符?

计算规则:

eg.求两个数的较大值以及较小值。

package ternaryoperator;

public class TernaryoperatorDemo1 {
    public static void main(String[] args) {
        //需求:使用三元运算符,获取两个数的较大值

        //分析:
        //1.定义两个变量记录两个整数
        int nember1 = 10;
        int number2 = 20;

        //2.使用三元运算符获取两个数的较大值
        //格式:   关系表达式?表达式1:表达式2;
        //整个三元表达式的结果必须被使用

        int max = nember1 > number2? nember1 : number2;
        System.out.println(max);

        System.out.println(nember1 > number2? nember1 : number2);
    }
}

(三元运算符/三语表达式)格式: 关系表达式? 表达式1:表达式2;

计算规则,首先计算关系表达式的值;如果值为true,表达式1的值就是运算结果;如果值为false,表达式2的值就是运算结果。

比如:求两个数的最大值
方案1:
int max = a > b ? a : b;
System.out.println(max);
方案2:
System.out.println(a > b ? a : b);
 
判断a是否大于b
System.out.println(a > b ? "是" : "否");

11、位移运算符


1、对于数据在内存中的表示安装位移的方式进行运算的符号。

2、位移运算符,只能对整型数据进行操作。

3、分类  <<     >>    >>>

4、<< 左移运算符,每移动一位,相当于把原来的数字扩大2倍,移动几位,就相当于扩大几个2倍。

5、>> 右移运算符,每移动一位,相当于把原来的数字缩小2倍,移动几位,就相当于缩小几个2倍。右移运算符操作正数的时候,结果和除以2相同。但是如果操作负数的时候,负数是奇数时,结果是除以2之后再减去1;如果是偶数,则和除法一致。

6、>>> 无符号右移,只能操作正数。

class Demo03 {
	public static void main(String[] args) {
		int m = 10;
		System.out.println(m << 1);//m * 2   20
		System.out.println(m << 2);//m * 2 * 2   40
		int j = 32;
		System.out.println(j >> 1);   //16
		System.out.println(j >> 2);	//8
		System.out.println(j >> 3);	//4
		int i = -8;
		System.out.println(i >> 2);//左移右移不会改变符号   -2
		int k = -9;
		System.out.println(k >> 1);//-5
		System.out.println(k >> 2);	//-3
		int n = -10;
		System.out.println(n >> 1);	//-5	
		//无符号右移,只能操作正数
		System.out.println(8>>>1);	//4
	}
}

12、运算符的优先级

()优先于所有,所以想要让谁优先计算就用小括号括起来.

eg:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值