运算符计算

数学运算

  1. 同种类型数据参与运算得到的同种结果

    • 如果数据类型不同,则转换为同种类型计算
    • 返回结果类型与原数据类型一致
  2. 如果是byteshortchar按照int计算

+ - * / 四则运算

案例:

int a1 = 5;
int a2 = 6;
int c = a1*a2;//计算乘法

a1 = 6;
long l1 = 7 ;
//int 与 long进行计算自动将int转换为long类型,在与long类型进行计算,返回long类型的结果。
long x = a1 * l1; 


int a = 5;
int b = 2;
// 整数的除法是整除的结果
int c = a/b;

double d1 = 5.0;
double d2 = 2;
//浮点数的除法是浮点结果!!
double d3 = d1/d2;

经典面试题目:

如下代码:
double price = 80/100*5.6;
System.out.println(price);
选择输出结果:
A.编译错误 B.运行异常 C.0.0 D.4.48

答案:C
说明:80/100 是整除计算返回结果为 0 

% 取余数运算:

计算结果是除法运算的余数

如:

int a = 11;
int b = 3;
int c = a % b; // 11/3 = 3 余 2
// c 的值是余数 2

取余数运算的特点:

假设:整数m n, x = m%n
则:
1.x的值范围: [0,n)
2.如果m = 0 1 2 ... 
  则 x=0, 1 ... n-1, 0, 1 ... n-1 ... 
  是周期性结果

取余数运算的用途:

  1. 处理周期性变化算法
  2. 用于时间计算

案例:

/*
 * 举个例子
 * 计算 238秒是 ?分?秒
 */
int s = 238; //秒数
int m = s/60;//整分
int sec = s % 60;//不够一分钟整秒
System.out.println(m+"分"+sec+"秒"); 
/*
 * 显示当前系统时间的秒数
 * 
 */
long ms = System.currentTimeMillis();
long ss = ms/1000;
long mm = ss%60;//不够一分钟的秒数
System.out.println(mm);

比较运算

  • 运算符: > < >= <= == !=
  • 运算结果是boolean类型

比较运算案例:

int age = 12;
int maxAge = 16;
//检查一个人是否是小孩
boolean isKid = age <= maxAge;
System.out.println(isKid);//true
//检查一个人是否是成人
boolean isMan = age>=18;
System.out.println(isMan);
//如下代码在毫秒数为奇数时候输出true
long ms = System.currentTimeMillis();
boolean b = ms%2==1;
System.out.println(ms); 
System.out.println(b); 

逻辑运算

  1. 运算符 &&与 ||或 !非
  2. 布尔类型参与运算,返回boolean类型结果
  3. 运算规则:
    • && 两个条件都成立(true)返回true
    • || 两个条件有一个是成立(true)返回true
    • ! 相反的计算,true变false,false变true

逻辑运算应用

  1. 判断一个字符是否为英文大写字符
  2. 检查一个人的年龄是否为儿童,如果是就输出儿童节快乐。
1. 判断一个字符是否为英文大写字符

思路: 字符本质是一个数字(字符的编码), 根据这个编码判断大小即可

代码:

char c = 'B';//66
// A  B  C       Z
// 65 66 67 .... 65+25 90
// 如果c的编码介于 65 ~ 90 之间则是
// 大写英文: 65 <= c && c <= 90
//boolean isChar = 65<=c && c<=90;
boolean isChar = 'A'<=c && c<='Z';
//               65<=66 && 66<=90
//                 true && true 
System.out.println(isChar);//true
2. 检查一个人的年龄是否为儿童,如果是就输出儿童节快乐。

案例:

Scanner in = new Scanner(System.in);
System.out.print("输入你的年龄:");
int age = in.nextInt();
//检查年龄是否为儿童
boolean isChilden = age <= 16;
//如果age小于等于16 则isChilden是true
System.out.println(isChilden);
// if 如果, 分支流程控制语句
// if(判断条件) 判断条件是true就执行
// {}里面的代码,false就不执行了
if(isChilden){//合理定义变量提高可读性
    System.out.println("节日快乐");
}

短路逻辑运算

生活中常见的逻辑判断都是短路逻辑,Java的逻辑运算也是短路逻辑判断。

短路运算原理:

这里写图片描述

案例:

/*
 * 测试短路现象
 */
int i = 100; 
int j = 200;
// (表达式1)&&(表达式2) 短路运算规则:
// 第一个(表达式1)为false的情况下,直接
// 得到整体计算结果 false, (表达式2)不
// 再计算了。相反(表达式1)为true时候
// (表达式2) 还是要计算的!
//如何测试短路
//false && (XXX)
boolean b1 = (i>j)&&(++i > 9);
System.out.println(b1);//false 
System.out.println(i);//100 发生短路
//经典题目:选择执行结果
//A.编译错误 B.运行异常 C.100 D.101

//测试 || 运算的短路现象
// (表达式1)||(表达式2) 短路规则:
// (表达式1)的运算结果为true的时候,
// (表达式2)不计算,直接得到结果true
// 反之(表达式1)计算结果为false的时候
// (表达式2) 还需要计算。

//编写案例:
// true || (表达式2)
boolean b2 = (j>2)||(j++ > 9);
System.out.println(b2);
//200说明:发生短路 (表达式2)没有执行
System.out.println(j);//200 

 赋值运算 =

类似于数学赋值运算,但是不同的是赋值表达式是有值的,并且赋值表达式的值是最后赋值的结果。

案例:

/*
 * 赋值运算演示
 */
int num = 18, index;
System.out.println(index = num%5);

int a, b, c, d;
//            100
a = b = c = (d = 100)+5;
System.out.println(a); 

符合赋值运算

为了简便实现变量自我增加(减少)等运算,Java提供了符合赋值运算

运算符有: += -= *= /= %= …

其运算规则为:

假设 int x = 10;

x += 5  等价于  x = (int)(x+5);
x -= 5  等价于  x = (int)(x-5);
x *= 5  等价于  x = (int)(x*5);
x /= 5  等价于  x = (int)(x/5);
x %= 5  等价于  x = (int)(x%5);

注意:

  1. 如上运算是包含强制转换过程的!
  2. 如上运算中除法也会发生整除!

案例:

/*
 * 符合赋值运算
 * 扩展赋值运算
 */
int x = 10;
x+=5;//在x的值上增加5
//基本等价于 x = x+5;
//x = x+5;
System.out.println(x);//15

x = 10;
x += 5.6;//完全等价于 x=(int)(x+5.6); 
System.out.println(x); //15

byte n = 4;
//n = n+4;
n+=4;// n = (byte)(n+4);
System.out.println(n); 

double dx = 5.6;
dx*=120.0/100;
// dx = (double)(dx*(120/100))
// dx = dx*120/100;
System.out.println(dx)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值