JAVA基础(3/17)-基本语法_运算符
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)-基本语法_运算符相关推荐
- Java基础教程,第三讲,运算符 变量定义 数据类型转换
2019独角兽企业重金招聘Python工程师标准>>> 学完此次课程,我能做什么? 学完此次课程我们可以学会Java的运算符,以及数据类型的自动转换和强制转换. 学习此次课程,需要多 ...
- 菜鸟学习笔记:Java基础篇2(变量、运算符、流程控制语句、方法)
菜鸟学习笔记:Java基础篇2 变量 基本概念 变量作用域 final关键字 运算符 算术运算符 比较运算符 逻辑运算符 位运算符 赋值运算符 条件运算符 运算符优先级 Java三种流程控制语句 顺序 ...
- java基础03(基本语法)
学习笔记--Java基础 JAVA基本语法01 关键字 保留字 标识符 变量 Java基本语法02 基本数据类型之间的运算规则 String类型变量的使用 Java基本语法03-进制转换(了解) JA ...
- java基础入门课后习题答案_《Java基础入门》课后习题及答案
<Java基础入门>课后习题及答案Java基础入门,课后习题,答案 博学谷--让IT教学更简单,让IT学习更有效 第6章JavaAPI 一.填空题 1.在Java中定义了两个类来封装对字符 ...
- 夯实Java基础系列17:一文搞懂Java多线程使用方式、实现原理以及常见面试题
本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...
- Java基础类库四则运算_00JAVA语法基础_四则运算 01
packageSizeyunsuan;/*** 30道100以内四则运算 * **/ public classRandom {public static int getRandom( int n, i ...
- java:数字转string 报空指针_《java基础》我踩过三元运算符的坑
简单介绍 三元运算符(又称三目运算符)大家肯定肯定都使用过,我就简单介绍一下,不在赘述. 三元元素的格式:[条件控制语句] ? [表达式1] : [表达式2]. 优点: 一些简单的逻辑判断三元运算符可 ...
- Java基础笔记(入门,语法基础,流程控制,数组)
Java语言入门 发展历程 三大技术体系 JavaSE 标准版 JavaEE 企业版 JavaME 嵌入式版 Java语言特点 简单性 健壮性 面向对象 分布式 多线程 动态性 可移植性(跨平台) J ...
- Java基础——2、基本语法(下)—程序流程控制
接上一章 类型转换.进制.运算符 目录 5.if-else语法 5.1 练习题 6.Scanner键盘获取数据 6.获取随机数--Math.random() 7.switch-case语法 8.for ...
- Python基本语法_运算符详解
目录 目录 前言 软件环境 身份运算符 算术运算符 比较运算符 位移运算符 自变运算符 位运算符 逻辑运算符 成员关系运算符 Python真值表 最后 前言 在前面的博文介绍了Python的数据结构之 ...
最新文章
- filewriter判断是否关闭_警示丨小伙用打火机检测煤气罐是否泄漏,瞬间被火焰吞噬!...
- Linux 下打core并调试core
- 需求用例分析之二:级别设置
- Android开发之高斯模糊效果三行代码搞定附带CSDN源码请导入module
- 使用图形芯片加速电子自动化设计应用程序
- 九张 Gif 图回顾 Web 设计的 25 年历史
- Python 爬取了 121.3 万条大众点评,告诉你哪里的小龙虾才是一绝!
- eas库存状态调整单不能反审核_把握 商品 周转,做好 动态 库存 管理
- vs下qt的信号与槽实现
- Greenplum 集群部署
- django关闭debug后,报400错误
- data.unity3d 文件过大解决方法
- html5底部导航图标制作,如何做好UI底部导航栏图标设计
- python:defaultdict 对象
- Dm8+jpa整合liquibase框架
- Jupyter notebook无法执行代码
- 华夏芯闪耀登场第四届“芯动北京“论坛
- 买拍参考贴中羽主力拍统计
- 2012年MacBook更换SSD固态硬盘和16G内存条
- XD组件如何导出交互到html,教程|Adobe XD制作高端交互效果