Java03--运算符

一.运算符和表达式

运算符:对常量或变量进行操作的符号

如:+ - * /

表达式:用运算符把常量或变量连接起来的,符合Java语法的式子

如:a + b

二.算术运算符

1.分类:

+ - * / %

运算符 / :

1.整数相除得到整数,如果想要结果是小数,必须要有小数参数

2.小数直接参与运算,得到的结果可能是不精确的 

如:System.out.println(10 / 3);//结果为3

System.out.println(10.0 / 3)//3.3333333333335

运算符 % :取余 / 取模

是除法运算,但是得到的结果是余数

如:System.out.println( 10 % 2); // 结果为0

System.out.println(10 % 3);// 3

这个运算符可以用来判断奇偶数

示例:键盘录入一个三位数,输出其个位、十位、百位

import java.util.Scanner;
public class Day_02 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int num = sc.nextInt();
        int one = num % 10;//个位
        int two = num / 10 % 10;//十位
        int three = num / 100 % 10;//百位
        System.out.println(one);
        System.out.println(two);
        System.out.println(three);
    }
}

输出: 

获取任意一个数上每一位数的公式:

个位:数字 % 10

十位:数字 / 10 % 10

百位:数字 / 100 % 10

千位:数字 / 1000 % 10

.....以此类推

2.算术运算符 “+” 操作的三种情况

2.1.数字相加

2.2.字符串相加:

当 “+” 操作中出现字符串时,这个 “+” 是字符串连接符,不是算术运算符了

“+” 会将前后的数据进行拼接,产生一个新的字符串

连续进行 “+” 操作时,从左到右逐个执行

字符串只有 + 操作,没有其他操作 

示例:

"123" +123     结果为"123123"

1 + 99 + "编程"   结果为 "100编程"  ,从左到右,要先计算 1 + 99

1 + 2 + "abc" + 2 + 1   结果为"3abc21"  ,后 边的 2 和 1 不能相加

 int age = 18;

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

结果为"我的年龄是18岁" , 因为age已经被赋值

2.3.字符相加:

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

示例: 

public class Demo{
        public static void main(String[] args) {
            char ch = 'a';
            int ret = ch + 0;
            System.out.println(ret);
}
}

输出:

 ASCII码中:'a'------97, 'A'------65

三.类型转换 

1.隐式转换

也叫自动类型提升

取值范围小的数值——>取值范围大的数值

1.1 提升规则:

(1)取值范围小的,和取值范围大的进行运算,小的会先提升为大的,再进行运算

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

1.2 示例 :

double a = 10;

System.out.println(a);//10.0

10是整数,整数默认是 int 类型

double取值范围大于 int,所以可以直接赋值给double类型

int i = 10

long n = 20L;

result = i + n;

i 是 int 类型,n 是 long 类型;取值范围 long > int 

所以变量 i 里的值会自动提升为 long 类型,变量result最终是 long 类型

1.3 注意点 :

取值范围:

byte < short < int < long < float < double

什么时候转换:

数据类型不一样,不能进行计算,需要转换成一样的才可以

转换规则:

byte short char 类型的数据在运算的时候,都会提升为 int,再运算

2.强制转换: 

取值范围大的数值——>取值范围小的数值

书写格式:

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

示例:

public class Demo1{
    public static void main(String[] args) {
        double a = 3.14
        int b = (int) a;
        System.out.println(b);//3
    }
}

四.自增自减运算符

分类:

++ 自增运算符,把变量里的值 +1

 --  自减运算符,把变量里的值 -1   

不管是先++(++a),还是后++(a++),单独写在一行时,运算结果是一样的

 示例:

public class Demo3 {
    public static void main(String[] args) {
        int x = 10;
        int y = x++;//10,先用x,x再+1
        int z = ++x;//12,x先+1
        System.out.println("x:" + x);
        System.out.println("y:" + y);
        System.out.println("z:" + z);
    }
}

输出:

五.赋值运算符

最常用的:= 

把等号右边的结果赋值给左边的变量

示例:

public class Day02_3 {
    public static void main(String[] args) {
        int x = 10;
        System.out.println(x);
        int z = 20;
        int y = x + z;
        System.out.println(y);
    }
}

六.扩展赋值运算符

符号作用说明
+=加后赋值a+=b,将a+b的值给a
-=减后赋值a-=b,将a-b 的值给a
*=乘后赋值a*=b,将a*b的值给a
/=除后赋值a/=b,将a/b的值给a
%=取余后赋值a%=b,将a%b的值给a

示例:

int a = 10;

int b = 20;

a += b;//相当于a = a + b 

注意点: .扩展赋值运算符中还包含了一个强制类型转换

a+=b,相当于 a = (byte)(a + b)

六.关系运算符

也叫比较运算符

分类:

符号解释
==就是判断左边跟右边是否相等,如果成立就是true,如果不成立就是false 
!=就是判断左边跟右边是否不相等,如果成立就是true,如果不成立就是false
>就是判断左边是否大于右边,如果成立就是true,如果不成立就是false
>=就是判断左边是否大于等于右边,如果成立就是true,如果不成立就是false 
<就是判断左边是否小于右边,如果成立就是true,如果不成立就是false 
<=就是判断左边是否小于等于右边,如果成立就是true,如果不成立就是false 

关系运算符最终的结果是布尔类型,要么是true,要么是flase 

七.逻辑运算符 

符号作用说明
&逻辑与并且
|逻辑或或者
^逻辑异或相同为flase,不同为true
!逻辑非取反

 !的使用:

计算规则:flase取反就是true,true取反就是flase

取反最多用一个

八.短路逻辑运算符 

1.&&:

运算结果跟 & 一样,只不过具有短路效果,效率更高

2.||:

 运算结果跟 | 一样,也具有短路效果,效率更高

3.区别:

(1)& |:无论左边 false 或 true,右边都要执行

(2)&& || :如果左边就能确定整个表达式的结果,右边不执行

(3)&&:左边为false,右边不管是真是假,整个表达式的结果一定是false

(4)||:左边为true,右边不管是真是假,整个表达式的结果一定是true

九.三元运算符

1.格式:

关系表达式 ?表达式1:表达式2;

2.计算规则:

首先计算关系表达式值

如果值为true,运算结果为表达式1的值

如果值为flase,运算结果为表达式2的值 

3.示例:

示例一:获取两个整数的较大值

public class Day02_4 {
    public static void main(String[] args) {
        int num1 = 10;
        int num2 = 20;
        int max = num1 > num2 ? num1 : num2;
//表达式的值为false,结果就是num2的值
        System.out.println(max);
    }
}

输出:

示例二:有三个和尚,身高分别为150cm、210cm、165cm,获取这三个和尚的最高身高

public class Day02_4 {
    public static void main(String[] args) {
        int height1 = 150;
        int height2 = 210;
        int height3 = 165;
        //1.第一个和尚与第二个和尚比较
        int temp = height1 > height2 ? height1 : height2;
        //2.拿1的结果跟第三个和尚进行比较
        int max = temp > height3? temp : height3;
        System.out.println(max);
    }
}

输出:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值