运算符和表达式

算术运算符

包含:+  -  *  /  %

其中注意

/:
1.整数相除结果只能得到整除,如果结果想要是小数,必须要有小数参数。
2.小数直接参与运算,得到的结果有可能是不精确的。
案例:
System.out.println( 10 / 3);//3
System.out.println(10.0 / 3);//3.3333333333333335
 练习:数值拆分:

需求:键盘录入一个三位数,将其拆分为个位、十位、百位后,打印在控制台

代码示例:

//1.键盘录入一个三位数
//导包 --- 创建对象 --- 接收数据
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个三位数");
int number = sc.nextInt();//123

//2.获取这个三位数的个位、十位、百位并打印出来
//公式:
//针对于任意的一个数而言
//个位: 数字 % 10
int ones = number % 10;
//十位: 数字 / 10 % 10
int tens = number / 10 % 10;
//百位: 数字 / 100 % 10
int hundreds = number / 100  % 10;

//输出结果
System.out.println(ones);
System.out.println(tens);
System.out.println(hundreds);

隐式转换

两种提升规则:

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

取值范围从小到大的关系:

​ byte short int long float double

字符串型数据和基本数据类型的转换方法:

将字符串转换为基本数据类型:

String str = "123"; 
int num = Integer.parseInt(str);
 // 将字符串转换为整型 
double decimal = Double.parseDouble(str); 
// 将字符串转换为浮点型

将基本数据类型转换成字符串

int number = 123; 
String strNum = String.valueOf(number); 
// 将整型转换为字符串 
double decimalNumber = 3.14;
 String strDecimal = String.valueOf(decimalNumber); 
// 将浮点型转换为字符串

隐式转换的练习:

案例一
int i = 10;
long n = 20L;
??? result = i + n;
问变量result是什么类型的?

 变量i里面的值会自动提升为long类型的,result为long类型。

案例二
byte b1 = 10;
byte b2 = 20;
??? result = b1 + b2;//int
问变量result是什么类型的?

 变量b1和变量b2里面的值都会自动提升为int类型的,result为int类型。

强制类型转换

书写格式:

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

注意点:

​ 强制转换有可能会导致数据发生错误。(数据的精度丢失)

字符串的+操作

案例:

1 + 2 + "abc" + 2 + 1

结果:“3abc21”

从左往右相加。

字符的+操作

规则:

​ 当+操作中出现了字符,会拿着字符到计算机内置的ASCII码表中去查对应的数字,然后再进行计算。

案例:

char c = 'a';
int result = c + 0;
System.out.println(result);//97

ASCII码表中:

​ 'a' ----- 97 ​ 'A' ----- 65

自增自减运算符

分类:

++  自增运算符
--  自减运算符

赋值运算符 

最为常用的: =

运算过程:就是把等号右边的结果赋值给左边的变量

扩展赋值运算符

+=、-=、*=、/=、%=

注意点:

​ 扩展的赋值运算符中隐层还包含了一个强制转换。

比较(关系)运算符

分类:

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

注意点:

  • 关系运算符最终的结果一定是布尔类型(boolean)的。要么是true,要么是false
  • 在写==的时候,千万不要写成=(==是判断,=是赋值)

逻辑运算符

& 和 | 的使用:

&  //两边都是真,结果才是真
// | 或  //两边都是假,结果才是假,如果有一个为真,那么结果就是真。

!(取反)的使用:

​ 是取反,也叫做非。

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

温馨提示:取反最多只用一个。

^(异或)的使用:

​ 在以后用的不多,了解一下即可。

计算规则:如果两边相同,结果为false,如果两边不同,结果为true

短路逻辑运算符

&&:

​ 运算结果跟&是一模一样的,只不过具有短路效果。

||:

​ 运算结果跟|是一模一样的。只不过具有短路效果。

逻辑核心:

​ 当左边不能确定整个表达式的结果,右边才会执行。

​ 当左边能确定整个表达式的结果,那么右边就不会执行了。从而提高了代码的运行效率。

三元运算符

又叫做:三元表达式或者问号冒号表达式。

格式:

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

计算规则:

  • 计算关系表达式的值。
  • 如果关系表达式的值为真,那么执行表达式1。
  • 如果关系表达式的值为假,那么执行表达式2。

注意点:

​ 三元运算符的最终结果一定要被使用,要么赋值给一个变量,要么直接打印出来。

案例

public class OperatorDemo12 {
    public static void main(String[] args) {
        //需求:求两个数的较大值
        int a = 10;
        int b = 20;

        //格式:关系表达式 ? 表达式1 : 表达式2 ;
        //注意点:
        //三元运算符的最终结果一定要被使用。
        //要么赋值给一个变量,要么直接输出。
       int max =  a > b ? a : b ;
        System.out.println(max);


        System.out.println(a > b ? a : b);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值