JAVA基础3/17-基本语法_运算符

  • 一、运算符分类
    • 算数运算符
      • 练习
    • 赋值运算符
    • 比较运算符
    • 逻辑运算符
    • 位运算符(了解)
      • 练习
    • 三元运算符
  • 二、运算符的优先级
  • 三、拓展

一、运算符分类

  • 算数运算符
  • 赋值运算符
  • 比较运算符(关系运算符)
  • 逻辑运算符
  • 位运算符
  • 三元运算符

算数运算符

  • +正号
  • -负号
  • +加
  • -减
  • *乘
  • /初
  • % 取模
  • ++ 自增:前++,先自增1,在运算,自增操作不会改变原本的数据类型。
  • ++ 自增:后++,先运算,后自增1,自增操作不会改变原本的数据类型。
  • – 自减:前–,先自减1,在运算,自减操作不会改变原本的数据类型。
  • – 自减:后–,先运算,在自减1,自减操作不会改变原本的数据类型。
  • +连接符
public class AriTest{public static void main(String[] args){//正、负、加、减、乘,不需要操作//除int a = 12;int b = 5;int result = a / b ;System.out.println(result);//2double result2 = a/b;System.out.println(result2);//2.0double result3 = a/(b+0.0);System.out.println(result3);//2.4double result4 = (double)a/b;System.out.println(result4);//2.4double result5 = (double)(a/b);System.out.println(result5);//2.0System.out.println("```````````````````````````````");//取余int m1 = 12;int m2 = 5;System.out.println(m1 % m2);//2int m11 = -12;int m22 = 5;System.out.println(m11 % m22);//-2int m111 = 12;int m222 = -5;System.out.println(m111 % m222);//2int m1111 = -12;int m2222 = -5;System.out.println(m1111 % m2222);//-2//总结,结果的符号与被模数的符号相同//前++int q1 = 10;int q2 = ++q1;System.out.println("q1 = " + q1 + ",q2 = " + q2);// 11   11//后++int h1 = 10;int h2 = h1++;System.out.println("h1 = " + h1 + ",h2 = " + h2);// 11   10//注意点:short s1 = 10;//s1 = s1 + 1;编译错误,不符合自动提升规则s1 = (short)(s1 +1);s1++;//正确,自增操作不会改变原本的数据类型。//小的问题byte b1 = 127;b1++;System.out.println(b1);//等于-128,原因是二进制截取后八位//--同理}
}

练习

练习:随意给一个整数,打印显示个位数、十位数、百位数

public class AriExer{public static void main(String[] args){int data = 267;int i0 = data%10;int i1 = data %100 /10;int i2 = data / 100;System.out.println("个位数:"+i0);System.out.println("十位数:"+i1);System.out.println("百位数:"+i2);}
}

赋值运算符

符号:=
扩展符号:+=、-=、*=、/=、%=
扩展符号不会改变变量本身的数据类型。

public class SetValues{public static void main(String[] args){//赋值运算int i = 10;//连续赋值int i1 = 1;int i2 = 2;i1 = i2 = 10;System.out.println(i1);System.out.println(i2);//另类写法int a = 10, b = 20;//+=int ss = 10;ss += 20;System.out.println(ss);//注意:short sah = 20;sah += 2;//发现可以编译通过,所以说扩展符号不会改变变量本身的数据类型System.out.println(sah);byte b1 = 127;b1 += 1;System.out.println(b1);// -128}
}

比较运算符

运算符 运算
== 相等于
!= 不等于
< 小于
> 大于
<= 小于等于
>= 大于等于
instanceof 检查是否是类的对象

结果都是boolean类型

public class CompareTest{public static void main(String[] args){int i = 10;int j = 20;System.out.println(i == j);//falseSystem.out.println(i = j);//20boolean b1 = true;boolean b2 = false;System.out.println(b1 == b2);System.out.println(b1 = b2);}
}

逻辑运算符

运算符号 示意 运算符号 示意
& 逻辑与 && 短路与
逻辑或 丨丨 短路或
! 逻辑非 ^ 逻辑异或

只能适用于boolean类型的变量
结论:

  • 逻辑与,只要有一个false,就是false。
  • 逻辑或,只要有一个true,就是true。
  • 逻辑非:取反
  • 异或:两个值不一样true,一个样就是false
public class LogicTest{public static void main(String[] args){//逻辑与 &    &&/**相同点1:& &&运行结果都是相同的。相同点2:运算符左边都是true时,都会执行右边的内容。不同点:运算符左边是false是,&会执行右边,&&不会执行右边。推荐使用&&**/int m1 = 10;boolean b1 = false;if(b1 & (m1++ >0)){System.out.println("我在济南");}else{System.out.println("我在杭州");}System.out.println("m1 = " + m1);//11int m2 = 10;boolean b2 = false;if(b2 && (m2++ >0)){System.out.println("我在济南");}else{System.out.println("我在杭州");}System.out.println("m2 = " + m2);//10//逻辑或 |  ||/**相同点1:|  ||运算结果是相同的。相同点2:当运算符左边是false时,右边都会执行。不同点:当运算符左边是true是,|会执行右边,||不会执行右边。推荐使用||**/int m3 = 10;boolean b3 = true;if(b3 | (m3++ >0)){System.out.println("我在济南");}else{System.out.println("我在杭州");}System.out.println("m3 = " + m3);int m4 = 10;boolean b4 = true;if(b4 || (m4++ >0)){System.out.println("我在济南");}else{System.out.println("我在杭州");}System.out.println("m4 = " + m4);}
}

位运算符(了解)

运算符 运算 含义
<< 左移 空位补0,被移除的高位丢弃,空位补0
>> 右移 被移位的最高位是0,右移后补0;最高位是1,空位补1
>>> 无符号右移 被移位二进制最高位无论是1还是0,控缺位都补0
& 与运算 二进制位进行&运算
或运算 二进制位进行|运算
^ 异或运算 二进制位进行^运算
~ 取反运算 二进制位进行取反运算

结论:
位运算符操作的都是整形的数据
<< :在一定范围内,每向左移动一位,相当与 * 2;
>> : 在一定范围内,每向右移动一位,相当与 / 2;

public class BitTest{public static void main(String[] args){System.out.println("21<<2:"+(21<<2));//84System.out.println("21<<3:"+(21<<3));//168System.out.println("21<<26:"+(21<<26));System.out.println("21<<27:"+(21<<27));//负的}
}

面试题:高效的计算2 * 8;2<<3或8<<1

练习

交换两个变量的值

int n = 10;
int m = 20;
/*
位运算符题目
*/
public class BitExer{public static void main(String[] args){int n = 10;int m = 20;System.out.println("n = " + n + ",m = " + m);//方式1,临时存储//推荐使用方法一int temp = n;n = m;m = temp;System.out.println("n = " + n + ",m = " + m);//方式二,弊端:可能两数相加超出int值范围,局限性:只能用于数值类型n = n + m;m = n - m;n = n - m;System.out.println("n = " + n + ",m = " + m);//方式三,位运算符n = n ^ m;m = n ^ m;n = n ^ m;System.out.println("n = " + n + ",m = " + m);}
}

三元运算符

  • 格式:(条件表达式)?表达式1:表达式2

    • 条件表达式为true:执行表达式1
    • 条件表达式为false:执行表达式2
  • 条件表达式的结果要是boolean类型;
  • 表达式1和表达式2必须是一样的类型。
  • 三元运算符可以嵌套使用
public class SanYuanTest{public static void main(String[] args){String a = 5<2?"1":"2";System.out.println(a);}
}
  • 凡是可以使用三元运算符的地方,都可以改写成if-else;反之不成立。
    如果程序既可以使用三元运算符,又可以使用if-else,那么优先选择三元运算符,简介、执行高效。

二、运算符的优先级

先运算的加小括号()

三、拓展

1、& 和 && 的异同点。

  • 相同点1:程序输出的结果都是一样的。
  • 相同点2:当表达式左边结果都是true时,表达式右边都会执行。
  • 不同点:当表达式左边的结果都是false时,&的右边会执行,&&的右边不会执行。

2、程序输出。

3、定义三个int类型变量并赋值,使用三元运算符或者if-else获取这个三个数中的较大数的实现。

public class LxTest{public static void main(String[] args){int n = 10;int m = 19;int s = 12;int max = (n>m)?((n>s)?n:s):((m>s)?m:s);System.out.println("较大的数为:"+ max);}
}

4、编写程序,声明2个double行变量并赋值,判断第一个数大于10.0,且第二个数小于20.0,打印两数之和。否则打印两数的乘积。

public class LxTest2{public static void main(String[] args){double d1 = 5.3;double d2 = 10.3;if(d1>10.0 && d2 < 20.0){System.out.println("两数之和:"+(d1 +  d2));}else{System.out.println("两数之积:"+(d1 *  d2));}}
}

5、交换两个值的代码的实现

public class LxTest3{public static void main(String[] args){int a = 10;int b = 20;//方式1int temp = a;a = b;b = temp;System.out.println("a="+a+",b="+b);//方式2a = a + b;b = a - b;a = a - b;System.out.println("a="+a+",b="+b);//方式3a = a ^ b;b = a ^ b;a = a ^ b;System.out.println("a="+a+",b="+b);}
}

END

JAVA基础(3/17)-基本语法_运算符相关推荐

  1. Java基础教程,第三讲,运算符 变量定义 数据类型转换

    2019独角兽企业重金招聘Python工程师标准>>> 学完此次课程,我能做什么? 学完此次课程我们可以学会Java的运算符,以及数据类型的自动转换和强制转换. 学习此次课程,需要多 ...

  2. 菜鸟学习笔记:Java基础篇2(变量、运算符、流程控制语句、方法)

    菜鸟学习笔记:Java基础篇2 变量 基本概念 变量作用域 final关键字 运算符 算术运算符 比较运算符 逻辑运算符 位运算符 赋值运算符 条件运算符 运算符优先级 Java三种流程控制语句 顺序 ...

  3. java基础03(基本语法)

    学习笔记--Java基础 JAVA基本语法01 关键字 保留字 标识符 变量 Java基本语法02 基本数据类型之间的运算规则 String类型变量的使用 Java基本语法03-进制转换(了解) JA ...

  4. java基础入门课后习题答案_《Java基础入门》课后习题及答案

    <Java基础入门>课后习题及答案Java基础入门,课后习题,答案 博学谷--让IT教学更简单,让IT学习更有效 第6章JavaAPI 一.填空题 1.在Java中定义了两个类来封装对字符 ...

  5. 夯实Java基础系列17:一文搞懂Java多线程使用方式、实现原理以及常见面试题

    本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...

  6. Java基础类库四则运算_00JAVA语法基础_四则运算 01

    packageSizeyunsuan;/*** 30道100以内四则运算 * **/ public classRandom {public static int getRandom( int n, i ...

  7. java:数字转string 报空指针_《java基础》我踩过三元运算符的坑

    简单介绍 三元运算符(又称三目运算符)大家肯定肯定都使用过,我就简单介绍一下,不在赘述. 三元元素的格式:[条件控制语句] ? [表达式1] : [表达式2]. 优点: 一些简单的逻辑判断三元运算符可 ...

  8. Java基础笔记(入门,语法基础,流程控制,数组)

    Java语言入门 发展历程 三大技术体系 JavaSE 标准版 JavaEE 企业版 JavaME 嵌入式版 Java语言特点 简单性 健壮性 面向对象 分布式 多线程 动态性 可移植性(跨平台) J ...

  9. Java基础——2、基本语法(下)—程序流程控制

    接上一章 类型转换.进制.运算符 目录 5.if-else语法 5.1 练习题 6.Scanner键盘获取数据 6.获取随机数--Math.random() 7.switch-case语法 8.for ...

  10. Python基本语法_运算符详解

    目录 目录 前言 软件环境 身份运算符 算术运算符 比较运算符 位移运算符 自变运算符 位运算符 逻辑运算符 成员关系运算符 Python真值表 最后 前言 在前面的博文介绍了Python的数据结构之 ...

最新文章

  1. filewriter判断是否关闭_警示丨小伙用打火机检测煤气罐是否泄漏,瞬间被火焰吞噬!...
  2. Linux 下打core并调试core
  3. 需求用例分析之二:级别设置
  4. Android开发之高斯模糊效果三行代码搞定附带CSDN源码请导入module
  5. 使用图形芯片加速电子自动化设计应用程序
  6. 九张 Gif 图回顾 Web 设计的 25 年历史
  7. Python 爬取了 121.3 万条大众点评,告诉你哪里的小龙虾才是一绝!
  8. eas库存状态调整单不能反审核_把握 商品 周转,做好 动态 库存 管理
  9. vs下qt的信号与槽实现
  10. Greenplum 集群部署
  11. django关闭debug后,报400错误
  12. data.unity3d 文件过大解决方法
  13. html5底部导航图标制作,如何做好UI底部导航栏图标设计
  14. python:defaultdict 对象
  15. Dm8+jpa整合liquibase框架
  16. Jupyter notebook无法执行代码
  17. 华夏芯闪耀登场第四届“芯动北京“论坛
  18. 买拍参考贴中羽主力拍统计
  19. 2012年MacBook更换SSD固态硬盘和16G内存条
  20. XD组件如何导出交互到html,教程|Adobe XD制作高端交互效果

热门文章

  1. xpath定位相邻元素方法
  2. liunx下安装tomcat7.0.82
  3. 交警高德强联手 助威吉林马拉松
  4. 应用Mongoose开发MongoDB(1)数据库连接
  5. Jupyter Notebook 作图显示中文
  6. Kudu:支持快速分析的新型Hadoop存储系统
  7. 一个Java程序员对2011年的回顾
  8. C语言解释器的实现--让脚本跑起来(六)
  9. 微软Hyper-V虚拟化技术全面体验
  10. 观察者模式Java内存管理进阶篇——如何避免内存泄漏