从零开始学习JAVA---4

 表达式

表达式就是运算符、操作数以及方法调用的序列,用来说明某个计算过程并返回计算结果. 按照运算符功能来分,基本的运算符分包括算术运算符、关系运算符、位运算符、条件运算符等

  • 算术运算符 +、-、*、/、%、++、--
  • 关系运算符 >、<、>=、<=、==、!=
  • 逻辑运算符 &&、 ||、 !。注意:逻辑计算支持短路操作
  • 位运算符 &、|、^、~、<< 、 >>、>>>。注意:为运算符不支持短路操作[考点]
  • 赋值运算符 =,+=,―=,*=,/=
  • 三目条件运算符(?:)规则是完全一致的,使用的形式是: x ? y:z;

算术运算符 +-*/%++--

+-*/

整除:参与运算的双方都是整数 10/3=3而不是3.33333

如果是10./3=3.333...这里由于10.是浮点数,则3会自动转换为大类型并参与计算,所以最终是10.0

/3.0的计算结果

计算次序为先乘除后加减,如果优先级一致,则自动从左向右进行计算 10+2*5=20

/除法分母不能为0,否则出错

% 求余(取模) 10%3=1实际就是10除以3求余数

double k=10.12;

System.out.println(k%3);

输出:1.1199999999999992 应该返回值为1.12,由于浮点数不能精确存放,所以返回值是一个类似值

double d1=-10.12;

double res=d1%3;

System.out.println(res);

输出值为-1.1199999999999992 求余计算中符号位不参与计算

double dd=12.45;

System.out.println(dd%3.1); //0.049999999999998934

++和--是单目运算符

i++等价于i=i+1,i--等价于i=i-1

以++为例写法有2个:i++或者++i考核题目

i++是先获取i的值,然后再对i加1

       int age=100;

       System.out.println(age++);输出为100

       System.out.println(age); 输出为101,因为上面进行加1

++i是先对i加1,然后再获取i的值

       int age=100;

       System.out.println(++age);输出101,先加1然后获取值

       System.out.println(age); 输出101

public class Oper11 { 
    public static void main(String[] args) { 
         int k = 0; 
         int res = k++ + k++ + k; 
         System.out.println(res); //3 

         int m = 0; 
         res = ++m + m++ + m; 
         System.out.println(res); //4 
     } 
}
需求:
用户输入身高和体重,计算对应的 BMI 指数值
BMI 指数(英文为 Body Mass Index ,简称 BMI ),是用体重千克数除以身高米数的平方得出的数字,是
国际上常用的衡量人体胖瘦程度以及是否健康的一个标准

关系运算符 ><>=<===!=

用于判断两个数据之间的大小关系,计算结果为boolean,如果成立返回为true,否则为false

double d1=10;

System.out.println(d1>3); 返回true

==和=的区别:

k=100;这是赋值运算符,意思是将=右边的计算结果储存在=左边的变量中

k==100这是比较计算符,意思是判断k是否值为100;如果是则返回true,否则false

!=意思是判断是否不等于,表示如果相等时返回false,否则返回true

k!=100不等于判定,如果k值为100则返回false,如果k值不是100则返回true

由于浮点数无法精确存放,所以判断k==1.0这个写法是错误的

正确写法: a-b的绝对值小于1e-6

Java提供了一个工具类Math,其中包含一个abs()的方法实现求绝对值

Math.abs(d1-1)<1e-6 判断浮点类型的变量d1的值是否为1

浮点数的比较

double res = 0;

for(int i=0;i<10;i++)

    res=res+0.1;

if(Math.abs(res-1)<1e-6) //|res-1|判断是否小于10的-6次方

    System.out.println("计算结果为1");

else

    System.out.println("计算结果不为1");
需求:
用户输入身高和体重,计算对应的 BMI 指数值
BMI 指数(英文为 Body Mass Index ,简称 BMI ),是用体重千克数除以身高米数的平方得出的数字,是国际上常用的衡量人体胖瘦程度以及是否健康的一个标准
System.out.print("请输入身高:"); 
Scanner sc = new Scanner(System.in); 
double height = sc.nextDouble(); 
System.out.println("请输入体重:"); 
double weight = sc.nextDouble(); 

//算法的问题 BMI指数 
double bmi = weight / height / height; 
System.out.println("您的bmi指数为:" + bmi);

逻辑运算符 && || !

注意:逻辑计算支持短路操作

表达多个条件之间的关系。例如年龄大于等于18并且年龄小于65

&&:与运算,含义是两个条件必须同时成立,可以翻译为并且

年龄大于等于18并且年龄小于65

age>=18 && age<65

算法规则:同真则真,其余为假

||:或运算,含义是两个条件中成立一个即可,可以翻译为或者

年龄小于18岁或者年龄不小于65

age<18 || age>=65

算法规则:同假则假,否则为真

!:非运算,含义是不是,用于对某个条件进行否定

年龄不小于18

写法1:age >=18 写法2: !(age<18) 算法规则:非真则假,非假则真

短路运算

例如:A && B:如果条件A为false,则不会执行B,因为根据运算规则结果一定是false,和B的值没有关系

A||B:如果条件A为true,则不会执行B,因为格局运算规则结果一定是true,和B的值没有关系

int age=100; 
char cc='A'; 
if(cc>='B' || age++<200){ 
    System.out.println("ZZZZZ"); 
}
System.out.println(age);//?输出101
int age=100; 
char cc='A'; 
if(cc>='B' && age++<200){ 
    System.out.println("ZZZZZ"); 
}
System.out.println(age);//?输出100,因为短路的原因,导致age++并没有得到执行
int age=200; 
char cc='A'; 
if(cc>='B' || age++<=200){ 
    System.out.println("ZZZZZ"); 
    System.out.println(age);//?输出201 
}

 

赋值运算符 =+=-=*=/=%=

int k=100; 含义是将100赋值存储在k对应的存储单元中

k=k+3可以简写为k+=3 -= */ /=类似

short k=3; 
k=k+3; //出现了一个语法错误,因为k+3这里的3系统识别为int类型,所以计算时所有数据自动转换为 int类型,必然计算结果也是int类型,将int类型的数据赋值给short类型变量----错误 
System.out.println(k); 

short k=3; 
k+=3; //没有语法错误,因为+=这种符号中包含了自动类型转换
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值