1.8 运算符

1.运算符的含义:

对字面量或者变量进行操作的符号;

2.表达式的含义:

用运算符把字面量或者变量连接起来,符合java语法的式子就可以称为表达式(不同运算符链接的表达式体现的是不同的类型的表达式)

例:

public class IT梦{
  public static void main(String[] args){
    int a=10;
    int b=20;
    int c=a+b;
    //+就是运算符,且是算术运算符
    //a+b就是表达式,因为用算数运算符连接,所以叫算数表达式
  }
}

3.算数运算符(小学数学):

1. +         加
 
2. –          减
 
3. *          乘
 
4. /          除
 
5. %        取模,取余

代码演示:

public class IT梦{
  public static void main(String[] args){
    System.out.print(1+3+" ");  
    System.out.print(6-6+" ");  
    System.out.print(9*1+" ");  
    System.out.print(18/3+" ");  
    System.out.print(15%6);
   }
}

结果:

图片[1]-1.8 运算符-IT熊技术站

注:

1.整数参与计算,结果只能得到整数;
 
2.如果有小数参与计算,结果有可能是不精确的;
 
3.数字在进行运算时,数据类型不一样是不能进行计算的,需要转化成一样的才可以运算(后面会讲如何转换);

算数运算符小练习:

键盘录入一个三位数,获取其中的个位,十位,百位(记得自己先写一遍再看答案哦)

答案:

import java.util.Scanner;  
  
public class IT梦 {  
  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);  
   }  
}

图片[2]-1.8 运算符-IT熊技术站

4.类型转换的分类:

1. 隐式转换(自动类型提升):
把取值范围小的数值——>取值范围大的数值(不需要我们写代码,程序帮我们自动实现)

例:

public class IT梦 {  
  public static void main(String[] args) {  
    int a=10;
    double b=a;
    System.out.println(b);
   }  
}

图片[3]-1.8 运算符-IT熊技术站

注:

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

2.强制转换:

1.把取值范围大的数值——>取值范围小的数值(需要我们手动写代码进行转换)
 
  格式:目标数据类型 变量名=(目标数据类型)被强制转换的数据

例:

public class IT梦 {  
  public static void main(String[] args) {  
    double a=12.3;
    int b=(int)a;
    System.out.println(b);
   }  
}

图片[4]-1.8 运算符-IT熊技术站

字符串的”+”操作:

1.当”+”操作中出现字符串时,这个”+”是字符串连接符,就不是算数运算符了,会将前后的数据进行拼接,并产生一个新的字符串;
 
2.连续进行”+”操作时,会从左到右依次进行;

字符的”+”操作”:

1.当字符+字符或者字符+数字时,会把字符通过ASCII码表查询到对应的数字在进行计算;
ASCII码表:

图片[5]-1.8 运算符-IT熊技术站

自增自减运算符:

1. ++           加                说明:变量的值+1
2. —             减                说明:变量的值-1
 
注意事项:++和–既可以写在变量的前面,也可以写在变量的后面;

代码演示:

public class IT梦 {  
  public static void main(String[] args) {  
    int a=10;  
    a++;  
    System.out.println(a);  
   }  
}

图片[6]-1.8 运算符-IT熊技术站

赋值运算符:

1. =           赋值                   int a=10,将10赋值给变量a;
 
2. +=        加后赋值            a+=b,将a+b的值赋值给a;
 
3. -=         减后赋值            a-=b,将a-b的值赋值给a;
 
4. *=         乘后赋值            a*=b,将a*b的值赋值给a;
 
5. /=         除后赋值            a/=b,将a/b的商赋值给a;
 
6. %=        取余后赋值        a%=b,将a/b的余数赋值给a;
 
 
注意事项:
这些赋值运算符底层都隐藏了一个强制类型转换;

代码演示:

public class IT梦 {  
  public static void main(String[] args) {  
    //以+=为例  
    int a=10;  
    int b=20;  
    a+=b;  
    System.out.println(a);  
    System.out.println(b);  
   }  
}

图片[7]-1.8 运算符-IT熊技术站

关系运算符(比较运算符):

1. ==            a == b,判断a和b的值是否相等,成立为true,不成立为false;
 
2. !=             a!=b,判断a和b的值是否不相等,成立为true,不成立为false;
 
3. >              a>b,判断a是否大于b,成立为true,不成立为false;
 
4. >=            a>=b,判断a是否大于等于b,成立为true,不成立为false;
 
5. <              a<b,判断a是否小于b,成立为true,不成立为false;
 
6. <=            a<=b,判断a是否小于等于b,成立为true,不成立为false;

代码演示:

public class IT梦 {  
  public static void main(String[] args) {  
    //以==为例  
    int a=10;  
    int b=20;  
    boolean result=a==b;  
    System.out.println(result);  
   }  
}

图片[8]-1.8 运算符-IT熊技术站

注意事项:

关系运算符的结果都是boolean(布尔)类型,要么是true,要么是false;

逻辑运算符:

1. &             逻辑与(且)              并且, 两边都是真,结果才是真;
 
2. |               逻辑或                    或者, 两边都是假,结果才是假;
 
3. ^             逻辑异或                 相同为false,不同为true;
 
4. !              逻辑非                     取反;

代码演示:

public class IT梦 {  
  public static void main(String[] args) {  
    //以&为例  
    System.out.println(true&true);  
    System.out.println(false&false);  
    System.out.println(true&false);  
    System.out.println(false&true);  
   }  
}

图片[9]-1.8 运算符-IT熊技术站

短路逻辑运算符:

1. &&           短路与             结果与&相同,但是有短路效果;
 
2. ||               短路或             结果与|相同,但是有短路效果;

代码演示(短路效果):

public class IT梦 {  
  public static void main(String[] args) {  
    //以&&为例  
    int a=10;  
    int b=10;  
    boolean result= a++<5 && b++<5;  
    System.out.println(result);  
    System.out.println(a);  
    System.out.println(b);  
    /*短路的意思就是程序会先判断左边的,如果左边的代码已经能知道结果了,  
    那就不需要在执行后面的代码了,可以直接得出结果*/  
    }
}

图片[10]-1.8 运算符-IT熊技术站

解释:&&表示短路与(且)的意思,变量a=10,再自增一次肯定大于5,所以a++<5的结果是false,因为&&需要两边都是true,结果才是true,所以最后的结果result已经知道了就是false,那么b++<5就不会执行,所以最终b的值并没有自增,还是10;

注意事项:

1. 单个的& 和 | ,无论左边是true还是false,右边都要执行;
 
2. && 和  ||  , 如果左边能确定整个表达式的结果,右边就不会执行(这就是短路效果);
 
3. &&:左边是false,右边不管是真还是假,整个表达式的结果一定是false;
 
4. ||:左边是true,右边不管是真还是假,整个表达式的结果一定是true;
好处:可以提高代码运行的效率;

三元运算符(三元表达式);

格式:关系表达式 ? 表达式1 : 表达式2;
 
解释:如果关系表达式的结果为true,那么就会执行表达式1;
 
        如果关系表达式的结果为fales,那么就会执行表达式2;

代码演示:

public class IT梦 {  
  public static void main(String[] args) {  
    //求两个数哪个更大;  
    int a=10;  
    int b=20;  
    int result=a>b?a:b;  
    System.out.println(result);  
   }  
}

图片[11]-1.8 运算符-IT熊技术站

运算符优先级:

只需要记住(    )里的优先于所有就可以了;

代码演示:

public class IT梦 {  
  public static void main(String[] args) {  
    int a=10;  
    int b=1;  
    int c=3;  
    int result=(a+b)*3;  
    System.out.println(result);  
   }  
}

图片[12]-1.8 运算符-IT熊技术站

原码,反码和补码:

1. 原码:十进制数据的二进制表现形式,最左边的符号位,0为正,1为负;
 
2. 反码:正数的反码是其本身,负数的反码就是符号位保持不变,其余位取反(0变1,1变0);
 
3. 补码:正数的补码是其本身,负数的补码是在其反码的基础上+1;
 
注:计算机中的存储和计算都是补码的形式进行的

例:

原码:  56—–>00111000(左边第一位为符号位,0为正,1为负);

原码的弊端:

利用原码对正数进行计算是不会有问题的,但是如果是负数计算,结果就会出错,实际运算的结果跟我们预期的结果是相反的

补充:

一个0或者1我们称之为一个bit(比特位),8个bit为一个字节;字节是我们计算机中最小的存储单元;

byte类型:1个字节,8个bit位;
short类型:2个字节,16个bit位;
int类型:4个字节,32和bit位;
long类型:8个字节,64个bit位;

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容