【我的Java学习笔记-3】

本文详细介绍了Java中的运算符、表达式类型(如算术表达式),涵盖了算数运算符、赋值运算符、关系运算符、逻辑运算符、短路逻辑以及三元运算符的使用,同时讨论了运算符优先级和隐式类型转换。
摘要由CSDN通过智能技术生成

运算符和表达式

运算符: 对字面量或者变量进行操作的符号。
表达式: 用运算符把字面量或者变量连接起来符合java语法的式子就可以称为表达式。不同运算符连接的表达式体现的是不同类型的表达式。
举例说明:
int a=10;
int b = 20;
int c= a+ b;
+ :是运算符,并且是算术运算符
a+b:是表达式,由于+是算术运算符,所以这个表达式叫算术表达式

算数运算符

package com.itheima.arithmeticoprator;
	public static void main(String[] args) {  
    //+  
    System.out.println(3 + 2);//5  
    //-    System.out.println(5 - 1);//4  
    //*    System.out.println(7 * 9);//63  
  
    //结论:在代码中,如果有小数参与计算,结果有可能不是精确的  
    System.out.println(1.1 + 1.1);//2.2  
    System.out.println(1.1 + 1.0);//2.1  
    System.out.println(1.1 - 1.01);//0.09000000000000008  
    System.out.println(1.1 * 1.01);//1.1110000000000002  
    
		//除法  
	System.out.println(10 / 2);//5  
	System.out.println(10 / 3);//3→整数参与计算结果只能是整数  
	System.out.println(10.0 / 3);//3.3333333333333335  
	  
	//求模运算--实际为除法运算,结果取余数而已  
	System.out.println(10 % 2);//0  
	System.out.println(10 % 3);//1
	}

小测试:输入一个三位数,分别输出他的个位、十位、百位。

import java.util.Scanner;  
  
public class Test1 {  
    public static void main(String[] args) {  
        //键入一个三位数,获取其中的个位、十位、百位  
  
        //键盘录入  
        Scanner sc = new Scanner(System.in);  
        System.out.println("请输入一个三位数:");  
        int number = sc.nextInt();  
  
        //获取各各位置  
        int ge = number % 10;  
        int shi = number / 10 % 10;  
        int bai = number / 100 % 10;  
  
        System.out.println(ge);  
        System.out.println(shi);  
        System.out.println(bai);  
  
    }  
}

"+"的三种情况

数字相加

隐式转换(自动类型提升)
隐式转换的两种规则:
- 取值范围小的,和取值范围大的进行运算,小的会先提升为大的,再进行运算
- byte short char 三种类型的数据在运算的时候,都会直接先提升为int,然后再进行运算
强制转换
如果把一个取值范围大的数值,赋值给取值范围小的变量。是不允许直接赋值的。如果一定要这么做就需要加入强制转换
格式: 目标数据类型 变量名=(目标数据类型)被强转的数据
例子
double a = 12.3;
int b = (int)a;

字符串相加

1、当“+”操作中出现字符串时,这个“+”是字符串连接符,而不是算术运算符了会将前后的数据进行拼接,并产生一个新的字符串。
2、连续进行"+"操作时,从左到右逐个执行
用代码演示

System.out.println("123" + 123);//"123123"字符串
System.out.println(1+2+"123");//"312",从左到右依次计算,第一个加法左右都是数字,进行相加运算,然后在进行字符串相加

//注意,没有双引号的可能是变量,有双引号的一定是变量
int age = 18;
System.out.println("我的年龄是"+ age +"岁")//我的年龄是18岁
System.out.println("我的年龄是"+ "age" +"岁")//我的年龄是age岁

字符相加

前面学到char类型在计算的时候会自动提升为char进行计算

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

当进行字符+字符字符+数字时,会把字符通过ASCII码表查询到对应的数字再进行计算。
ASCII中,A对应65,a对应97
但是在有字符串时,进行的是拼接操作哦!

System.out.println(1 + 'a'); //98
System.out.println('a' + "abc"); //aabc

自增自减运算符

基本用法

符号:++
说明:变量值加1
符号:–
说明:变量值减1
代码示例

int a = 10;
a++;
System.out.printl(a);//11
++a;
System.out.printl(a);//12
a--;
System.out.printl(a);//11
--a;
System.out.printl(a);//10

以++为示例,参与运算时,当++放在变量前面,先进行加1,在进行运算;当++放在变量后面,先进行运算,再加1.
代码示例

int x = 10;
int y = x++;//后++,先用后加
int z = ++y;//前++,先加后用
System.out.printl("x:" + x);//12
System.out.printl("y:" + y);//10
System.out.printl("z:" + z);//12

赋值运算符

符号:=
作用:赋值
说明:int a=10,将10赋值给变量a
符号:+=
作用:加后赋值
说明:a+=b,将a+b的值给a
符号:-=
作用:减后赋值
说明:a-=b,将a-b的值给a
符号:*=
作用:乘后赋值
说明:a*=b,将axb的值给a
符号:/=
作用:除后赋值
说明:a/=b,将a/b的商给a
符号:%=
作用:取余后赋值
说明:a%=b,将a/b的余数给a

//+=  
int a = 10;  
int b = 20;  
a += b;//把a+b,再把结果赋值给左边的变量a  
//等同于 a=(int)(a + b);  
System.out.println(a);//30  
System.out.println(b);//20  
  
//细节:  
//+=,-=,*=,/=,%=底层都隐藏了一个强制类型转换  
short s = 1;  
//把左边和右边进行相加,得到结果2,再赋值给左边的变量  
s += 1;//等同于:s = (short)(s + 1);  
System.out.println(s);//2

关系运算符

符号:==
说明:判断a和b的值是否相等,成立为true,不成立为false
符号:!=
说明:判断a和b的值是否不相等,成立为true,不成立为false
符号:>
说明:判断a是否大于b,成立为true,不成立为false
符号:>=
说明:判断a是否大于等于b,成立为true,不成立为false
符号:<
说明:判断a是否小于b,成立为true,不成立为false
符号:<=
说明:判断a是否小于等于b,成立为true,不成立为false
注意事项:关系运算符都是boolean类型,要么时true,要么时false。注意不要把“==”写成"="。
代码实现

Scanner sc = new Scanner(System.in);  
System.out.println("请输入我们自己的时髦程度:");  
int myfashion = sc.nextInt();  
System.out.println("请输入对象的时髦程度:");  
int girlfashion = sc.nextInt();  
  
boolean result =  myfashion > girlfashion;  
  
System.out.println(result);

逻辑运算符

  • 在数学中,一个数据x,大于5,小于15,我们可以这样来进行表示:5<x<15.
  • 在Java中,需要把上面的式子先进行拆解,再进行合并表达。
    • 拆解为:x>5 和 x<15
    • 合井后:x>5&x<15

分类

符号: &
作用:逻辑与(且)
说明:并且,两边都为真,结果才为真

符号: |
作用:逻辑或
说明:或者,两边都为假,结果才为假

符号: ^
作用:逻辑异或
说明:相同为假,不同为真

符号: !
作用:逻辑非
说明:取反
代码示例

// &并且  
System.out.println(true & true);//true  
System.out.println(false & false);//false  
System.out.println(true & false);//false  
System.out.println(false & false);//false  
  
// |或者  
System.out.println(true | true);//true  
System.out.println(false | false);//false  
System.out.println(false | true);//true  
System.out.println(true | false);//true  
  
//  ^异或  
System.out.println(true ^ true);//true  
System.out.println(false ^ false);//false  
System.out.println(true ^ false);//false  
System.out.println(false ^ true);//true  
  
//  !非  
System.out.println(!true);//false  
System.out.println(!false);//true

短路逻辑运算符

短路与:&&
结果和&相同,但是具有短路效果
不满足A则不再判断B
短路或:||
结果和|相同,但是具有短路效果
满足了A则不再判断B
代码示例

int a = 10;
int b = 10;
boolean result = ++a < 5 && ++b > 5;
//由于++a < 5为false,不再判断后面的++b > 5,形成短路效果,同时,++b没有运算,所以不会自增。
System.out.println(result);  //false
System.out.println(a);  //11
System.out.println(b);  //10

[!NOTE] 注意事项
&、 | ,无论左边 true false,右边都要执行

&& 、||,如果左边能确定整个表达式的结果,右边不执行。

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

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

最常用的逻辑运算符:&&、||、!

三元运算符

格式: 关系运算符 ? 表达式1 : 表达式2
示例: 求两个数的较大值
a > b ? a : b;
解释,如果a大于b,则输出a,否则输出b
注意:直接用是会报错的。
用法:
①int max = a > b ? a : b;
②System.out.println(a > b ? a : b);
代码示例

//定义三个数  
int height1 = 150;  
int height2 = 210;  
int height3 = 165;  
//第一个数和第二个数比较,大者赋值给一个临时变量  
int temp = height1 > height2 ? height1 : height2;  
//再拿高的一个和第三个数比较  
int max = temp > height3 ? temp : height3;  
System.out.println(max);

运算符优先级

![[Pasted image 20240420205726.png]]

PS:小括号大于一切,养成加小括号的习惯

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值