一、Java运算符

  • 运算符的简介

所有的程序开发,都是对数字的进行处理。而对数字的处理,一定会存在所谓的操作模式,而这些操作模式就被称为运算符。

  • 算术运算符

    对于算术运算符,我们主要掌握++,--的运用就可以了,因为前面的+,-,*,/,%(取余),我们日常生活经常接触,基本都能掌握住。

    而对于++,--,我们可以通过程序以及编译运行结果来得出结论

public class Calculation
{
public static void main(String[] args){
int X = 10;
System.out.println("X="+X);//打印10
++X;
System.out.println("++X="+X);//打印11
int Y = 20;
System.out.println("Y="+Y);//打印20
++Y;
System.out.println("++Y="+Y);//打印21
int Z = ++X+Y--;
//X先自加(X==12),然后Z = 12+21 = 33
//最后算完Z,Y再进行自减(Y==20)
System.out.println("Z="+Z);
System.out.println("X="+X);
System.out.println("Y="+Y);
}
} E:\Java_Project\04_1\Calculation>java Calculation
X=10
++X=11
Y=20
++Y=21
Z=33
X=12
Y=20
    • 结论:
    • “++”,“--”在变量前,先进行变量自加/减,后续再进行运算
    • “++”,“--”在变量后,先整个算术进行运算,算术结束运算后,再另行变量的自加/减
  • 三目运算符

    首先介绍一下三目运算符的格式

      int  Z=X>Y?X:Y;

      定义一个整型变量Z,X若大于Y,把X值赋予变量Z,否则把Y赋予Z。

    实例运用:

public class Calculation
{
public static void main(String[] args){
int X=,Y=;
int Z = X>Y?X:Y;
System.out.println(Z);
}
}

    其实还可以这样玩的(但是极其不建议):

public class Calculation
{
public static void main(String[] args){
int X=,Y=,Z=;
int max = X>Y?(X>Z?X:Z):(Y>Z?Y:Z);
System.out.println(max);
}
}

    套娃虽好玩,但是极其不建议。

    而我们的三目运算,可以很好地解决简单的if语句的编写!!

  • 逻辑运算符与位运算

逻辑运算与为运算有很多相似的符号,平时使用也很容易混淆,所以这里我们来对比分析之间的异同

逻辑运算符 位运算符
&逻辑与 &与运算
|逻辑或 |或运算
^异或 ^异或运算
!非 ~取反运算
&&与 >>、<<带符号左右移
||或 >>>不带符号右移
&(逻辑与)和&(与运算)的示例
public class Calculation {
public static void main(String[] args) {
Boolean a=3>2; //结果为true
Boolean b=4>5; //结果为false
Boolean c=a&b;
System.out.println(c);
}
} //c=true&false ,有一个false,所以结果为false
public class Calculation
{
public static void main(String[] args){
int x = 4, y = 5;//进行位运算要化成二进制进行计算
System.out.println(x&y);//4→0100
//5→0101
//与运算后,全1出1,其他出0,所以结果0100,即输出(4)
}
}
|(逻辑或)和|(或运算的示例)
public class Calculation{
public static void main(String[] args) {
Boolean a=3>2; //结果为true
Boolean b=4>5; //结果为false
Boolean c=a|b;
System.out.println(c);
}
} //c=true|false ,有一个true,所以结果为true
public class Calculation
{
public static void main(String[] args){
int x = 4, y = 5;//进行位运算要化成二进制进行计算
System.out.println(x|y);//4→0100
//5→0101
//或运算后,有1出1,全0出0,所以结果0101,即(5)
}
}
^(异或)和^(异或运算)的示例
public class Calculation{
public static void main(String[] args) {
Boolean a=3>2; //结果为true
Boolean b=4>5; //结果为false
Boolean c=a^b;
System.out.println(c);
}
} //c=true^false, 不相同,所以结果为false
public class Calculation
{
public static void main(String[] args){
int x = 4, y = 5;//进行位运算要化成二进制进行计算
System.out.println(x^y);//4→0100
//5→0101
//异或运算后,相同出0,不同出1,所以结果0001,即(1)
}
}
!(非)和~(取反运算)的示例
public class Calculation{
public static void main(String[] args) {
Boolean b=4>5; //结果为false
Boolean c=!b;
System.out.println(c);
}
} //b的结果为false,c的结果为true
public class Calculation
{
public static void main(String[] args){
int x = 4, y = 5;//进行位运算要化成二进制进行计算
System.out.println(~x);//4→0100,取反0变1,1变0,即1011,(11)
System.out.println(~y);//5→0101,取反0变1,1变0,即1010,(10)
}
}
&&(与)和>>、<<(带符号左右移)的示例
public class ketanglianxi {
public static void main(String[] args) {
int a=3;
boolean b=4>5; //b的结果为false
Boolean c=b&&(++a)>3; // &&右边的(++a)>3并没运算!
System.out.println(c); //c的结果为false,与示例1的运算结果相同
System.out.println(a); //b的结果为3!
}
} //注意因为&&左边已经有一个false所以&&右边的表达式不会计算,这样会使运算效率增加
public class Calculation
{
public static void main(String[] args){
int x = 4, y = -5;//进行位运算要化成二进制进行计算
int k = x>>2;
int z = y<<1;
System.out.println(k);//4→0100,带符号右移两位,即0001,(1)
System.out.println(z);//5→0101,带符号左移一位,即1010,(-10)
System.out.println(x);
System.out.println(y);
/*注意:因为位移运算后,值会得到释放,所以我们不能直接进行输出*/
}
}

||(或)和>>>(不带符号右移)的示例

public class ketanglianxi {
public static void main(String[] args) {
Boolean a=3>2; //a的结果为true
int b=4;
Boolean c=a||(++b)>4; // ||右边的(++b)>4并没运算!
System.out.println(c); //c的结果为true,与示例2的运算结果相同
System.out.println(b); //b的结果为4!
}
} //注意因为||左边已经有一个true所以||右边的表达式不会计算,这样会使运算效率增加
public class Calculation
{
public static void main(String[] args){
int x = 0;//进行位运算要化成二进制进行计算
int k = x>>>1;
System.out.println(k);
System.out.println(x);
/*注意:因为位移运算后,值会得到释放,
所以我们不能直接进行输出。另外,此时的
X取值只能是(>=0)*/
}
}

感谢阿里云开发者社区,让我有整套系统的Java学习教程

同时,感谢博客园,让我有一个免费的博客,并让我做笔记学习!!

跟着阿里学JavaDay04——Java基础语法(二)的更多相关文章

  1. 跟着阿里学JavaDay06——Java基础语法(四)

    一.方法 方法执行到return语句后,这个方法的执行就结束了,方法可以有返回值,但可以不用这个返回值.方法首先要定义,然后才能调用. public class TestMethod{ public ...

  2. 跟着阿里学JavaDay07——Java基础语法(五)

    我们后面的笔记我,打算直接用程序,加注释进行记录.日后若本人有疑问,可进行网络查询加以整理回复 package com.cionda.JavaDemo.dept; public class JavaD ...

  3. 简明易懂,将细节隐藏,面向新手树立web开发概念——学完Java基础语法,超快速上手springboot+mybatiJavaWeb开发

    简明易懂,将细节隐藏,面向新手树立web开发概念 --学完Java基础语法,超快速上手JavaWeb开发 Web本质(先忽视各种协议) Web应用可以理解为浏览器和服务器之间的交互. 我们可以看一个简 ...

  4. 跟着阿里学JavaDay02——Java编程起步

    几乎所有语言的第一个程序都是"HelloWorld" 就像所有单片机初学者一样,点亮第一个LED灯开始 而起初我们编写/学习Java程序,都是通过记事本来编写的,这里推荐一个Edi ...

  5. 跟着阿里学JavaDay01——Java编程环境搭建

    一.下载并完成JDK的安装 我们要学习Java就需要下载JDK.因为JDK是Java的开发工具. JDK的获取可以通过官方网站下载:JDK下载地址(这里我们下载Java SE10的版本) JDK下载完 ...

  6. java基础语法(二)

    一.运算符 算数运算符 算数运算符用在数学表达式中,它们的作用和在数学中的作用一样. 操作符 描述 例子 + 两数相加 1+1=2 - 两数相减 2-1=1 * 两数相乘 1*1=1 / 两数相除 1 ...

  7. Java基础语法<二> 字符串String

    1. 代码点与代码单元 Java字符串由char序列组成.大多数的常用Unicode字符使用一个代码单元就可以表示,而辅助字符需要一对代码单元表示. length()方法将返回采用UTF-16编码表示 ...

  8. Java基础语法(二)之流程控制语句

    流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块 .控制语句分为三类:顺序,选择和循环. “顺序结构”代表”先执行a,再执行b”的逻辑.比如,先找个女朋友, ...

  9. Java基础语法(二)<运算符>

    运算符: 下面的都是相关的练习: 1.键盘录入一个三位整数数,请分别获取该三位数上每一位的数值 import java.util.Scanner; public class Test02 { publ ...

随机推荐

  1. JAVA设计模式之组合模式(composite)

    组合模式:树状结构专用模式 代码如下: package com.srr.dp.composite; import java.util.ArrayList; import java.util.List; ...

  2. 基于VUE实现的h5网页Web出库单入库单打印设计

    经过将近一个月的研发,初步实现了打印单据的自定义设计,样子还有点丑陋,但是功能基本都实现了,实现了以下功能: 1.表头表尾支持动态添加行.添加列.合并单元格(可多行多列合并). 2.表头表尾分别布局, ...

  3. 我的linux学习日记day3

    ifconfig  查看网卡信息 uname 查看系统内核.版本信息 cat /etc/redhat-release uptime 查看系统负载信息 top命令的第一行信息 free 查看内存信息 f ...

  4. webpack 中,module,chunk 和 bundle 的区别是什么?

    前两天为了优化公司的代码打包项目,恶补了很多 webpack4 的知识.要是放在几年前让我学习 webpack 我肯定是拒绝的,之前看过 webpack 的旧文档,比我们内部项目的文档还要简陋. 但是 ...

  5. ubuntu下图形程序自启动的几种方法

    版权声明:本文为本文为博主原创文章,转载请注明出处.如有问题,欢迎指正.博客地址:https://www.cnblogs.com/wsg1100/ @ 目录 0.前言 1.带桌面环境的自动启动 1.1 ...

  6. Excel 数据导入至Sqlserver 数据库中 ltrim() 、rtrim() 、replace() 函数 依次空格无效问题

    今天导一些数据从Excel中至Sqlserver 数据库中,在做数据合并去重的时候发现,有两条数据一模一样,竟然没有进行合并: 最后发现有一条后面有个“空格”,正是因为这个“空格”让我抓狂许久,因为它 ...

  7. 一个导致JVM物理内存消耗大的Bug

    概述 最近我们公司在帮一个客户查一个JVM的问题(JDK1.8.0_191-b12),发现一个系统老是被OS Kill掉,是内存泄露导致的.在查的过程中,阴差阳错地发现了JVM另外的一个Bug.这个B ...

  8. SVN:TortoiseSVN SendRpt.exe not found 完美解决

    今天来上班的时候,发现公司用的svn版本和我自己的不一致,其实可以使用但是还是神经质的更新了一下.结果每次右键都会出一个异常.下图所示. 期初以为是哪里配置错误,或者版本冲突,经过网上查找办法,完美解 ...

  9. 【Java】【JVM】Sychronized底层加锁原理详解

    我们首先先看看JMM模型,话不多说,上图: JMM对应的8大原子操作: read(读取):从主内存读取数据 load(载入):将主内存读取到的数据写入工作内存 use(使用):从工作内存读取数据来计算 ...

  10. C# 数据操作系列 - 15 SqlSugar 增删改查详解

    0. 前言 继上一篇,以及上上篇,我们对SqlSugar有了一个大概的认识,但是这并不完美,因为那些都是理论知识,无法描述我们工程开发中实际情况.而这一篇,将带领小伙伴们一起试着写一个能在工程中使用的 ...