名词解释

  • 运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。
    - 算术运算符
    - 赋值运算符
    - 比较运算符(关系运算符)
    - 逻辑运算符
    - *位运算符
    - 三元运算符

算术运算符


eg:

class AriTest{public static void main(String[] args){//除号:int num1 = 12;int num2 = 5;int result1 = num1 / num2;System.out.println(result1);//2int result2 = num1 / num2 * num2;System.out.println(result2);//10double result3 = num1 / num2;System.out.println(result3);//num1 / num2先运算的结果已经是2。只是把2赋值给result3.double result4 = num1 / num2 + 0.0;//2.0。先算除得2,然后算加得2.0。double result5 = num1 / (num2 + 0.0);//2.4。先算括号内的加,转换为double类得2.0;然后算除,转换为double类,得2.4。double result6 = (double)num1 / num2;//2.4。先算num1转换double型,得12.0;然后算除,得2.4 。double result7 = (double)(num1 / num2);//2.0。先运算括号内的int型除,得2;然后转换为double型,得2.0。System.out.println(result4);System.out.println(result5);System.out.println(result6);System.out.println(result7);//%:取模(余)运算//结果与被模数的符号有关。//开发中,经常使用%来判断能否被除尽。int m1 = 12;int n1 = 5;System.out.println("m1 % n1 =" + m1 % n1);int m2 = -12;int n2 = 5;System.out.println("m2 % n2 =" + m2 % n2);int m3 = 12;int n3 = -5;System.out.println("m3 % n3 =" + m3 % n3);int m4 = -12;int n4 = -5;System.out.println("m4 % n4 =" + m4 % n4);//前++:先自增1,然后运算。//后++:先运算,然后自增1。//变量自增1 。int a1 = 10;int b1 = ++a1;System.out.println("a1 =" + a1 +",b1 =" + b1);//a1=11,b1=11int a2 = 10;int b2 = a2++;System.out.println("a2 =" + a2 +",b2 =" + b2);//a2=11,b2=10int a3 = 10;a3++;//a3先自增1。++a3也一样。int b3 = a3;System.out.println("a3 =" + a3 +",b3 =" + b3);//a3=11,b2=10//注意点short s1 = 10;//s1 = (short)(s1 + 1);=s1++s1++;//自增1不会改变本身数据类型。System.out.println(s1);byte bb1 = 127;bb1++;System.out.println(bb1);//-128//前--:先自减1,后运算。//后--:先运算,后自减1。int a4 = 10;int b4 = a4--;System.out.println("a4 =" + a4 +",b4 =" + b4);//a3=11,b2=10}
}

练习
随意给出一个整数,打印显示它的个位数,十位数,百位数的值。
格式如下:
数字xxx的情况如下:
个位数:
十位数:
百位数:
例如:
数字153的情况如下:
个位数:3
十位数:5
百位数:1

class  AriExer{public static void main(String[] args) {int num = 187;int ge = num % 10;int shi = (num / 10 ) % 10;int bai = num / 100;System.out.println("数字187的情况如下:");System.out.println("个位数:" + ge);System.out.println("十位数:" + shi);System.out.println("百位数:" + bai);}
}

赋值运算符

  • 符号:=
    - 当“=”两侧数据类型不一致时,可以使用自动类型转换或使用强制类型转换原则进行处理。
    - 支持连续赋值。
  • 扩展赋值运算符: +=, -=, *=, /=, %=
    eg:
class SetValueTest {public static void main(String[] args) {//赋值符号:=int i1 = 10;int j1 = 10;//连续赋值int i2,j2;i2 = j2 = 10;int i3 = 10,j3 = 20;//*************************int num1 = 10;num1 += 2;//num1 = num1 + 2System.out.println(num1);int num2 = 12;num2 %= 5;//num2 = num2 % 5System.out.println(num2);short s1 = 10;//s1 = s1 + 2;编译失败s1 += 2;System.out.println(s1);//不改变变量本身数据类型。//开发中希望变量实现+2的操作,有几种方法?(前提:int num = 10;)//方式一:num = num + 2;//方式二:num += 2;(更优)//开发中希望变量实现+1的操作,有几种方法?(前提:int num = 10;)//方式一:num = num + 1;//方式二:num += 1;//方式三:num++;(推荐)}
}

练习:

思考1:1编译错误。2可行。
思考2:

int i = 1;
i *= 0.1;//不改变变量类型,所以i=0。
System.out.println(i);
i++;//i=1
System.out.println(i);

思考3:

int m = 2;
int n = 3;
n *= m++;//前++,所以先运算再自增1。m=3,n=6。
System.out.println("m=" + m);
System.out.println("n=" + n);

思考4:

int a = 10;
a += (a++) + (++a);
//相当于a = a + (a++) + (++a)
//相当于a = 10 + 10(先运算后自增) + 12(第二项a++使a值为11,第三项在11上在自增1。)
System.out.println(a);//32

拓展思考4:

int a1,a2,a3,a4,a5;
a1 = a2 = a3 = a4 = a5 = 10;
a1 += a1++;//a1 = a1 + a1++ ——> a1 = 10 + 10
System.out.println("a1=" + a1);//20
a2 += ++a2;//a2 = a2 + ++a2 ——> a2 = 10 + 11
System.out.println("a2=" + a2);//21
a3 += (a3++ + ++a3);//a3 = a3 + (a3++ + ++a3) ——> a3 = 10 + (10 + 12)
System.out.println("a3=" + a3);//32
a4 = a4++ + a4;// a4 = 10 + 11
System.out.println("a4=" + a4);//21
a5 = ++a5 + a5;// a5 = 11 + 11
System.out.println("a5=" + a5);//22
//注意这样编译是错的
//a5 = ++(a5++);

比较运算符


比较运算符的结果都是boolean型,也就是要么是true,要么是false。

class CompareTest{public static void main(String[] args){int i = 10;int j = 20;System.out.println(i == j);//falseSystem.out.println(i = j);//先将j赋值给i,再输出i。boolean b1 = true;boolean b2 = false;System.out.println(b2 == b1);//falseSystem.out.println(b2 = b1);//true}
}

逻辑运算符


与:a、b都为true,结果才是true。
或:a、b中有一个为true,结果就是true。
非:取反。a为true,!a为false。
异或:a、b相同为true;反之为false。

  • 逻辑运算符操作的都是布尔类型的变量。

eg:

class LogicTest {public static void main(String[] args) {//区分& 与 &&;//相同点1:&与&& 运算结果相同//相同点2:当符号左边是true时,二者都会执行符号右边的运算。//不同点:当符号左边为false时,&继续执行符号右边运算,&&不在执行符号右边运算。//开发中推荐使用&&。boolean b1 = true;b1 = false;int num1 = 10;if(b1 & (num1++ > 0)){System.out.println("我现在在北京");}else{System.out.println("我现在在南京");}System.out.println("num1 =" + num1);boolean b2 = true;b2 = false;int num2 = 10;if(b2 && (num2++ > 0)){System.out.println("我现在在北京");}else{System.out.println("我现在在南京");}System.out.println("num2 =" + num2);//区分: |与||//相同点1:|与|| 运算结果相同//相同点2:当符号左边是false时,二者都会执行符号右边的运算。//不同点:当符号左边为true时,|继续执行符号右边运算,||不在执行符号右边运算。//开发中推荐使用||。boolean b3 = false;b3 = true;int num3 = 10;if(b3 | (num3++ > 0)){System.out.println("我现在在北京");}else{System.out.println("我现在在南京");}System.out.println("num3 =" + num3);boolean b4 = false;b4 = true;int num4 = 10;if(b4 || (num4++ > 0)){System.out.println("我现在在北京");}else{System.out.println("我现在在南京");}System.out.println("num4 =" + num4);}
}

判断练习:
[1]
int x = 1;
int y=1;
if(x++2 & ++y2){
x =7;
}
System.out.println(“x=”+x+",y="+y);

[2]
int x = 1,y = 1;
if(x++2 && ++y2){
x =7;
}
System.out.println(“x=”+x+",y="+y);

[3]
int x = 1,y = 1;
if(x++ == 1 | ++y ==1){
x =7;
}
System.out.println(“x=”+x+",y="+y);

[4]
int x = 1,y = 1;
if(x++ == 1 || ++y==1){
x =7;
}
System.out.println(“x=”+x+",y="+y);

[5]
class Test {
public static void main (String [] args) {
boolean x=true;
boolean y=false;
short z=42;
//if(y == true)
if((z++42)&&(y=true))z++;
if((x=false) || (++z45)) z++;
System. out.println(“z=”+z);
}
}

答案
1.x=2,y=2
2.x=2,y=1
3.x=7,y=2
4.x=7,y=1
5.z=46

位运算符


注意:位运算符操作的都是整型的数据,是直接对二进制进行的运算。逻辑运算符是对布尔型操作。

左移、右移


<<:在一定范围内,每向左移1位,相当于*2(也适用于负数)。
>>:在一定范围内,每向右移1位,相当于/2(也适用于负数)。

eg:最高效的方式计算2*8?
2 << 3 或 8 << 2

eg左移、右移:

class BitTest {public static void main(String[] args) {int i = 21;System.out.println("i << 2 :" + (i << 2));//84System.out.println("i << 27:" + (i << 26));//1409286144System.out.println("i << 27:" + (i << 27));//-1476395008。最高位(符号位)是1。int j = -21;System.out.println("j << 2 :" + (j << 2));//-84System.out.println("j >> 27:" + (j >> 2));//-6}
}

与、或、异或、取反



计算时,可以把 0 看做 false,1看做 true。

小技巧
如上图可以发现:m = ( m ^ n ) ^ n ; n = ( m ^ n ) ^ m。

eg:

class BitTest {public static void main(String[] args) {int i = 21;System.out.println("i << 2 :" + (i << 2));//84System.out.println("i << 27:" + (i << 26));//1409286144System.out.println("i << 27:" + (i << 27));//-1476395008。最高位(符号位)是1。int j = -21;System.out.println("j << 2 :" + (j << 2));//-84System.out.println("j >> 27:" + (j >> 2));//-6int m = 12;int   n = 5;System.out.println("m & n:" + (m & n));//4System.out.println("m | n:" + (m | n));//13System.out.println("m ^ n:" + (m ^ n));//9//练习:交换两个变量的值int num1 = 10;int num2 = 20;System.out.println("num1=:" + num1 +",num2=" + num2);//方式一:定义临时变量//推荐方式。//int temp = num1;//num1 = num2;//num2 = temp;//方式二://好处:不用定义临时变量//弊端:1.相加可能超出存储范围。2.有局限性:只限数值型。//num1 = num1 + num2;//num2 = num1 - num2;//num1 = num1 - num2;//方式三:使用位运算符//有局限性:只限数值型。//num1 = num1 ^ num2;//num2 = num1 ^ num2;//num1 = num1 ^ num2;System.out.println("num1=:" + num1 +",num2=" + num2);}
}

三元运算符


说明:

  • 条件表达式的结果为boolean类型。
  • 根据条件表达式真或假,决定执行表达式1,还是表达式2。
    - 如果表达式为true,则执行表达式1.
    - 如果表达式为false,则执行表达式2.
  • 表达式1和表达式2要求是一致的。
  • 三元运算符可以嵌套使用。
  • 凡是可以使用三元运算符的地方,都可以改写为if-else。反之不成立。
  • 如果程序既可以使用三元运算符,又可以使用if-else,优先选择三元。因为三元简介效率高。

eg:

class  SanYuanTest{public static void main(String[] args) {//获取两个整数的较大值int m = 12;int n = 5;int max = (m > n)? m : n;System.out.println(max);double num = (m > n)? 2:1.0;System.out.println(num);//int num2 = (m > n)? 2 : "n大"; 编译错误:表达式1和表达式2不一致//System.out.println(num2);//****************//嵌套使用n = 12;String maxStr = (m > n)? "m大" : ((m == n)? "m和n相等" : "n大");System.out.println(maxStr);//获取三个数的最大值int n1 = 12;int n2 = 30;int n3 = -43;int max1 = (n1 > n2)? n1 : n2;int max2 = (max1 > n3)? max1 : n3;//int max2 = (n1 > n2)? ((n1 > n3)? n1 : n3) : ((n2 > n3)? n2 : n3);//int max2 = (((n1 > n2)? n1 : n2) > n3)? ((n1 > n2)? n1 : n2) : n3;System.out.println("三个数中的最大值为:" + max2);//改写成if-elseif(m > n){System.out.println(m);}else{System.out.println(n);}}
}

运算符优先级运算符有不同的优先级,所谓

  • 优先级就是表达式运算中的运算顺序。如下表,上一行运算符总优先于下一行。
  • 只有单目运算符、三元运算符、赋值运算符是从右向左运算的。

    本章完结!

小白自学笔记——JAVA基础 2.6运算符相关推荐

  1. 小白自学笔记——JAVA基础 0.1Java语言概述

    我学习的是宋红康老师的视频,首先是课程大纲. 课程大纲 课程体系 第1章 Java语言概述 第2章 基本语法 第3章 数组 第4章 面向对象编程(上) 第5章 面向对象编程(中) 第6章 面向对象编程 ...

  2. 小白自学笔记——JAVA基础 1.1常用的DOS文件

    今天开始自学JAVA第一课.看的是B站上宋红康老师的视频. 一 学习常用的DOS命令 在搜索栏输入'cmd'打开 eg1:打开D盘文件 [输入] D: eg2:列出当前文件夹下的所有文件 [输入] d ...

  3. 小白自学笔记——JAVA基础 1.3写第一个程序

    这次程序的编写使用文本文档,用CMD运行. 第一个程序 新建一个文本文框,命名为HelloWorld.java.(注意打开后缀) 用记事本打开文件 输入程序: class HelloChina{ pu ...

  4. 小白自学笔记——JAVA基础 2.5进制

    计算机中不同进制的使用说明 所有数字在计算机底层都以二进制形式存在. 对于整数,有四种表示方式: - 二进制(binary):0,1 ,满2进1.以0b或0B开头. - 十进制(decimal):0- ...

  5. 小白自学笔记——JAVA基础 2.2变量

    变量概述 概念: - 内存中的一个存储区域 - 该区域的数据可以在同一类型范围内不断变化 - 变量是程序中最基本的存储单元,包含变量类型.变量名和存储值 作用 - 用于在内存中保存数据 变量的使用 j ...

  6. 小白自学笔记——JAVA基础 2.9循环结构

    循环结构 在某些条件满足的情况下,反复执行特定代码的功能. 循环语句分类 for 循环 while 循环 do-while 循环 FOR循环结构 for (①初始化部分;②循环条件部分;④迭代部分){ ...

  7. 小白自学笔记——JAVA基础 2.8分支结构

    名词解释 流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块. 其流程控制方式采用结构化程序设计中规定的三种基本流程结构,即: 顺序结构 程序从上到下逐行地执 ...

  8. 小白自学笔记——JAVA基础 3.1 一维数组

    名词解释 数组(Array),是多个相同类型数据按一定顺序排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一管理. 数组的常见概念 数组名 下标(或索引) 元素 数组的长度 数组的特点 ...

  9. 小白自学笔记——JAVA基础 1.2JAVA语言环境搭建

    我使用的是JAVA8版本. 名词解释 JDK--Java Development Kit(JAVA开发工具包) JRE--Java Runtime Environment(JAVA运行环境) JDK. ...

最新文章

  1. 基于图形剪切的图像分割
  2. Java并发编程实战系列10之避免活跃性危险
  3. ip guard保证java代码安全_IP-guard加密新增四大功能 让一“密“防百疏
  4. Spring rmi
  5. java元婴期(19)----java进阶(spring(3)----AOP相关概念实现方式)
  6. 一文带你深入理解JVM内存模型
  7. Python之区块链入门,揭秘比特币
  8. 砂.随笔.二十五.如果你是氧气
  9. 保证一个用户已选取的记录不被其他用户选取
  10. CSAPP:第十一章 网络编程
  11. 客户机和服务器在s7通信中各有什么作用,哪些通信口可以进行 Modbus TCP 通讯,作为 Modbus 服务器的 SIMATIC S7 CPU 可以...
  12. C#中的正则表达式引擎
  13. 中小学生Python课应该学什么
  14. “我要彻底放弃 Debian 操作系统!”
  15. java基础入门之数组循环初始化
  16. 在centos上安装mysql
  17. python根据方程的y求x_用Python解方程
  18. Python SPSS教程
  19. 面试想不带简历,老罗可以,你不行!
  20. 小强源码分析系列-Spring Boot2-源码分析1---调试环境搭建

热门文章

  1. html移动端弹窗,移动端弹窗时,弹窗可以滚动body禁止滚动。
  2. 三年级计算机课说课稿,小学信息技术说课稿
  3. 8:Java Conllections FrameWork-Java API 实战
  4. vivo再出百元机新品 面向印度市场 搭载联发科A22处理器
  5. 电通鬼十则(shifted)
  6. 十一届蓝桥杯省赛(B组 )----数青蛙
  7. java拉风的验证码(移动到正确位置才可以登录)
  8. JAVA基础WEB阶段第八天——MYSQL数据库(二)电商后台产品综合案例之练习各条命令
  9. R语言 解决不能安装包的问题install.packages() cannot open url
  10. 姐长期奔放,找不到矜持的方向