Java新手零基础教程!(●‘◡‘●)运算符类型讲解

news2024/11/16 0:02:15

Java 算术运算符

Java教程 - Java算术运算符

在数学表达式中使用算术运算符。

所有算术运算符

下表列出了算术运算符:

运算符结果
+加法
-减法
*乘法
/除法
%余数
++自增
+=加法分配
-=减法分配
*=乘法分配
/=除法分配
%=模量分配
--自减

算术运算符的操作数必须是数字类型。您不能在 boolean 类型上使用算术运算符,但可以在 char 类型上使用它们。

基本算术运算是加法,减法,乘法和除法。他们的行为正如你所期望的。减运算符也有一个一元形式,它取消它的单个操作数。

下面的快速演示显示了如何在Java中进行简单的计算基本算术运算符。

 
public class Main {

  public static void main(String args[]) {

    System.out.println("Integer Arithmetic");
    int a = 1 + 1;
    int b = a * 3;
    int c = b / 4;
    int d = c - a;
    int e = -d;
    System.out.println("a = " + a);
    System.out.println("b = " + b);
    System.out.println("c = " + c);
    System.out.println("d = " + d);
    System.out.println("e = " + e);
    
    int x = 42;
    System.out.println("x mod 10 = " + x % 10);
    double y = 42.25;

    System.out.println("y mod 10 = " + y % 10);
  }
}

运行此程序时,将看到以下输出:

模运算符返回除法运算的余数。模运算符可以应用于浮点类型以及整数类型。

Java复合分配操作符

语句如下

a = a + 4;

可以重写为

a += 4;

两个语句执行相同的操作:它们将 a 的值增加4。

任何形式的声明

var = var op expression;

可以重写为

var op= expression;

这里是一个示例程序,显示了几个 op= 操作符赋值:

 
public class Main {

  public static void main(String args[]) {
    int a = 1;
    int b = 2;
    int c = 3;

    a += 1;
    b *= 2;
    c += a * b;
    c %= 3;
    System.out.println("a = " + a);
    System.out.println("b = " + b);
    System.out.println("c = " + c);

  }
}

此程序的输出如下所示:

Java增量和减量运算符

++  - 是Java的递增和递减运算符。增量运算符 ++ 会将其操作数增加1。递减运算符 - 将其操作数减1。

增量和减量运算符之间的不同:

例如,这个语句:

x = x + 1;

可以这样通过使用增量运算符重写:

x++;

这句话:

x = x - 1;

相当于

x--;

递增和递减运算符是唯一的,因为它们可以以后缀形式和前缀形式出现。在后缀形式中,它们遵循操作数,例如 i++ 。在前缀形式中,它们在操作数之前,例如, - i 

当增量和/或减量运算符是部分时,这两种形式之间的差异出现的较大表达式。在前缀形式中,操作数在表达式中使用值之前递增或递减。在后缀形式中,在表达式中使用该值,然后修改操作数。

下表总结了前后递增和递减操作之间的差异:

x的初始值表达y的最终值x的最终值
5y = x ++56
5y = ++ x66
5y = x--54
5y = --x44

例如:

x = 42; 
y = ++x;

设置为43,因为增量在x分配给y之前发生。 因此,线

y = ++x;

是相当于这两个语句:

x = x + 1; 
y = x;

然而,当这样写时,

x = 42; 
y = x++;

在执行增量运算符之前获取x的值,因此值的y为42。

在这两种情况下,x设置为43。线

y = x++;

是相当于这两个语句:

y = x; 
x = x + 1;

以下程序演示了增量运算符。

 
public class Main {

  public static void main(String args[]) {
    int a = 1;
    int b = 2;
    int c = ++b;
    int d = a++;

    System.out.println("a = " + a);
    System.out.println("b = " + b);
    System.out.println("c = " + c);
    System.out.println("d = " + d);

  }
}

该程序的输出如下:

Java 布尔运算符 

Java教程 - Java布尔运算符

布尔逻辑运算符操作布尔操作数。

逻辑运算符列表

下表列出了所有Java布尔逻辑运算符。

运算符结果
&逻辑AND
|逻辑或
^逻辑异或(异或)
||短路OR
&&短路AND
!逻辑一元NOT
&=AND分配
|=OR分配
^=XOR分配
==等于
!=不等于
? :三元if-then-else

True table

下表显示了每个逻辑操作的效果:

ABA | BA& BA ^ B!A
FalseFalseFalseFalseFalseTrue
TrueFalseTrueFalseTrueFalse
FalseTrueTrueFalseTrueTrue
TrueTrueTrueTrueFalseFalse

以下程序演示了布尔逻辑运算符。

 
public class Main {
  public static void main(String args[]) {
    boolean a = true;
    boolean b = false;
    boolean c = a | b;
    boolean d = a & b;
    boolean e = a ^ b;
    boolean f = (!a & b) | (a & !b);
    boolean g = !a;
    System.out.println(" a = " + a);
    System.out.println(" b = " + b);
    System.out.println(" a|b = " + c);
    System.out.println(" a&b = " + d);
    System.out.println(" a^b = " + e);
    System.out.println("!a&b|a&!b = " + f);
    System.out.println(" !a = " + g);

  }
}
]]>

输出:

例子

以下程序演示了按位逻辑运算符:

 
public class Main {
  public static void main(String args[]) {
    int a = 1;
    int b = 2;
    int c = a | b;
    int d = a & b;
    int e = a ^ b;
    int f = (~a & b) | (a & ~b);
    int g = ~a & 0x0f;

    System.out.println(" a = " + a);
    System.out.println(" b = " + b);
    System.out.println(" a|b = " + c);
    System.out.println(" a&b = " + d);
    System.out.println(" a^b = " + e);
    System.out.println("~a&b|a&~b = " + f);
    System.out.println(" ~a = " + g);

  }
}

这里是这个程序的输出:

Java逻辑运算符快捷方式

当一个操作数为 true 时, OR 运算符为真,无论第二个操作数是什么。当一个操作数为 false 时, AND 运算符将导致false,操作数是。如果使用 || && ,Java将不会评估右侧操作数结果可以由左操作数单独确定。

下面的代码显示了如何使用短路逻辑运算符确保除法运算在评估之前有效:

 
public class Main {
  public static void main(String[] args) {
    int denom = 0;
    int num = 3;
    if (denom != 0 && num / denom > 10) {
      System.out.println("Here");
    } else {
      System.out.println("There");
    }
  }
}

输出:

如果我们想要改变逻辑运算符的快捷行为,我们可以使用& 和|。

例2

以下代码使用单个& 确保增量操作将会应用于 e 是否 c 等于1。

 
public class Main {
  public static void main(String[] args) {
    int c = 0;
    int e = 99;
    int d = 0;
    if (c == 1 & e++ < 100)
      d = 100;

    System.out.println("e is " + e);
    System.out.println("d is " + d);
  }
}

输出:

Java 关系运算符 

Java教程 - Java关系运算符

Java关系运算符确定两个操作数之间的关系。

关系运算符列表

Java中的关系运算符是:

运算符结果
==等于
!=不等于
>大于
<小于
>=大于或等于
<=小于或等于

例如,以下代码段完全有效。它比较两个int值并将结果分配给布尔值c。

 
public class Main {
  public static void main(String[] argv) {
    int a = 4;
    int b = 1;
    boolean c = a < b;

    System.out.println("c is " + c);
  }
}

a <b(为假)的结果存储在c中。

例子

关系运算符的结果是一个布尔值。在下面的代码中, System.out.println 输出关系运算符的结果。

public class Main {
  public static void main(String args[]) {
    // outcome of a relational operator is a boolean value
    System.out.println("10 > 9 is " + (10 > 9));
  }
}

此程序生成的输出如下所示:

Java 三元运算符 

Java教程 - Java三元运算符

?运算符是三元运算符。

Java三元运算符基本上是简单的if语句的简写形式。

语法

具有以下一般形式:

expression1 ? expression2 : expression3

expression1 可以是计算为 boolean 值的任何表达式。如果 expression1  true ,那么将评估 expression2 。否则,将评估 expression3 

计算的表达式是操作的结果。需要 expression2  expression3 来返回相同的类型,这可以是无效的。

下面是运算符的示例:

 
public class Main {
  public static void main(String[] argv) {
    int denom = 10;
    int num = 4;
    double ratio;

    ratio = denom == 0 ? 0 : num / denom;
    System.out.println("ratio = " + ratio);
  }
}

输出:

例子

这是另一个演示运算符的程序。它使用它来获取变量的绝对值。

 
public class Main {
  public static void main(String args[]) {
    int i, k;
    i = 10;
    k = i < 0 ? -i : i; 
    System.out.print("Absolute value of ");
    System.out.println(i + " is " + k);

    i = -10;
    k = i < 0 ? -i : i; 
    System.out.print("Absolute value of ");
    System.out.println(i + " is " + k);

  }
}

程序生成的输出如下所示:

Java 按位运算符 

Java教程 - Java按位运算符

按位操作符作用于其操作数的各个位。Java按位运算符可以应用于整数types: long,int,short,char,byte 

按位运算符列表

下表列出了所有Java按位运算符。

运算符结果
~按位一元NOT
&按位AND
|按位或
^按位异或
>>向右移动
>>>右移零填充
<<向左移动
&=按位AND分配
|=按位OR分配
^=按位异OR分配
>>=右移赋值
>>>=右移零填充分配
<<=向左移位

按位运算符分配将赋值与按位运算组合。以下两个语句是等效的:

a = a >> 4; 
a >>= 4;  

以下两个语句是等效的:

a = a | b; 
a |= b;

以下程序演示了按位运算符分配:

 
public class Main {
  public static void main(String args[]) {
    int a = 1;
    int b = 2;
    int c = 3;
    a |= 2;
    b >>= 2;
    c <<= 2;
    a ^= c;
    System.out.println("a = " + a);
    System.out.println("b = " + b);
    System.out.println("c = " + c);

  }
}

此程序的输出如下所示:

Java左移运算符

左移位算子,<<移位所有位中的一个值到左边一个指定的数字的时间。

它有这种一般形式:

value << num

以下代码移位字节类型变量。

 
public class Main {
  public static void main(String args[]) {
    byte a = 64, b;
    int i;
    i = a << 2;
    b = (byte) (a << 2);
    System.out.println("Original value of a: " + a);
    System.out.println("i and b: " + i + " " + b);
  }
}

此程序生成的输出如下所示:

例子

每个左移具有使原始值加倍的效果。以下程序说明了这一点:

 
public class Main {
  public static void main(String args[]) {
    int num = 0xFFFFFFF;

    for (int i = 0; i < 4; i++) {
      num = num << 1;
      System.out.println(num);

    }
  }
}

程序生成以下输出:

Java右移运算符

右移位运算符>> 将值中的所有位向右移a指定次数。

其一般形式如下所示:

value >> num

num 指定要向右移位的位置数。

以下代码段将值 32 向右移两个位置:

 public class Main {
  public static void main(String[] argv) {

    int a = 32;
    a = a >> 2;
    System.out.println("a is " + a);

  }
}

输出:

Java无符号右移

Java无符号,右移运算符,>>> ,始终将零转移到高阶位。

其一般形式如下所示:

value >>> num

num 指定要向右移位的位置数。

以下代码显示如何使用无符号右移。

public class Main {
  public static void main(String[] argv) {
    int a = -1;
    a = a >>> 24;

    System.out.println("a is " + a);
  }
}

输出:

 ┗|`O′|┛看到这里了还不点个关注嘛(●'◡'●)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2081017.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

55.基于IIC协议的EEPROM驱动控制(2)

升腾A7pro的EEPROM芯片为24C64芯片&#xff0c;器件地址为1010_011。 &#xff08;1&#xff09;Visio整体设计视图&#xff08;IIC_SCL为250KHz&#xff0c;IIC_CLK为1MHz&#xff0c;addr_num为1&#xff0c;地址字节数为2字节&#xff0c;addr_num为0&#xff0c;地址字节数…

Windows Docker 部署 SolrCloud

一、简介 Solr 集群是一个基于 Lucene 的高性能全文搜索服务器集群&#xff0c;它通过集成 ZooKeeper 来实现分布式索引和搜索功能。Solr 集群具备以下特点&#xff1a; 分布式索引与搜索&#xff1a;Solr 能够将大索引分成多个小索引&#xff0c;分布在多个节点上&#xff0…

网络安全实训六(靶机实例DC-3)

1 信息收集 1.1 获取靶机IP 1.2 扫描靶机网站的目录 1.3 扫描端口和服务器信息 1.4 进入网站 1.5 在msf中给搜索joomla扫描器 1.6 设置参数查看joomla版本信息 1.7 按照版本号搜索漏洞 1.8 查看漏洞使用 2 渗透 2.1 查看是否存在SQL注入 2.2 获取到数据库信息 2.3 爆破列表 2…

Datawhale AI夏令营第五期学习!

学习日志 日期&#xff1a; 2024年8月27日 今日学习内容&#xff1a; 今天&#xff0c;我学习了如何在深度学习任务中使用卷积神经网络&#xff08;CNN&#xff09;进行图像分类的基本流程&#xff0c;并成功地在JupyterLab中运行了一个完整的项目。以下是我今天的学习和操作…

【html+css 绚丽Loading】000021 万象轮回珠

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享htmlcss 绚丽Loading&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495…

使用C#进行屏幕截图(screenCapturer)

1.具体是应用了Nuget包 ScreenCapturer 2.编写相关核心代码&#xff0c;实现截取电脑部分区域图片 ScreenCapturer.ScreenCapturerTool screenCapturer new(); if (screenCapturer.ShowDialog() DialogResult.OK) {Bitmap bmp (Bitmap)screenCapturer.Image;pictureBox1.Ba…

【不合理的递归区间】快排递归引发区间错误,除以0未定义

问题描述 力扣语法报错&#xff1a;含义是有可能会除以0&#xff0c;该行为未定义&#xff0c;但问题是我这里压根就没用到除法。 #include<stdlib.h> #include<time.h>class Solution { public:vector<int> sortArray(vector<int>& nums) {sra…

【JavaWeb】定时任务和批量插入数据库数据

定时任务 需要在项目启动类添加注解开启支持定时任务&#xff1a; 以下示例是定时任务插入数据的操作&#xff1a; package com.yupi.yupao.once.importuser;import com.yupi.yupao.mapper.UserMapper; import com.yupi.yupao.model.domain.User; import org.springframework…

软件测试——论坛系统测试用例

功能测试 其他测试 测试用例 用例编号 用例描述 优先级 预置条件 操作步骤 测试数据 预期结果 测试结果Bug ID软件版本测试员SNS_User_Register_001注册成功使用合法的数据成功注册一个新账号P11、已打开注册页面 2、准备一个未注册用户信息1、输入用户昵称 2、输入用户名 3、…

Unity(2022.3.41LTS) - 摄像机

目录 一、基本概念 二、重要属性 三、摄像机模式 四、脚本控制 五、渲染设置 六. 组件详细介绍 一、基本概念 作用&#xff1a;摄像机决定了玩家在游戏中能够看到的内容。它就像是玩家的眼睛&#xff0c;从特定的位置和角度观察场景&#xff0c;并将场景中的物体渲染到屏…

北冥坞“学件”系统

简介 学件由周志华教授在 2016 年提出 [1, 2]。在学件范式下&#xff0c;世界各地的开发者可分享模型至学件基座系统&#xff0c;系统通过有效查搜和复用学件帮助用户高效解决机器学习任务&#xff0c;而无需从零开始构建机器学习模型。 北冥坞是学件的第一个系统性开源实现&…

客户端字符集小于数据库字符集导致乱码

一、现象 使用plsql或者sqlplus客户端 查询某个表的数据库均显示乱码&#xff0c;如下图所示&#xff1a; 二、原因分析 1、查看数据库的字符集 2、查看客户端的字符集 3、比较 数据库的字符集AL16UTF18&#xff08;服务端&#xff09;是大于en_US.UTF-8&#xff08;客户端&…

【Linux】gcc(工具篇)

文章目录 背景知识gcc的使用预处理&#xff08;进行宏替换&#xff09;编译&#xff08;生成汇编&#xff09;汇编&#xff08;生成机器可识别代码&#xff09;连接&#xff08;生成可执行文件或库文件&#xff09; gcc选项函数库函数库一般分为静态库和动态库两种C/C静态库的安…

Python 程序设计基础教程

Python 程序设计基础教程 撰稿人&#xff1a;南星六月雪 第 一 章 变量与简单数据类型 1.1 变量 先来观察以下程序&#xff1a; world "Hello Python!" print(world)world "Hello Python,I love you!" print(world)运行这个程序&#xff0c;将看到两…

一个利用率超高的大数据实验室是如何练成的?

在当今这个数据爆炸的时代&#xff0c;大数据已成为推动各行各业创新与发展的核心动力。一个高效运转、利用率超高的大数据实验室&#xff0c;不仅是技术创新的摇篮&#xff0c;更是企业竞争力的重要体现。那么&#xff0c;如何构建并维持这样一个实验室呢&#xff1f;本文将探…

【机器学习】软输出和硬输出的基本概念和区别、如何选择软输出还是硬输出、联系函数的作用以及线性判别分析和逻辑回归的基本概念(含python代码)

引言 在机器学习中&#xff0c;“软输出”&#xff08;Soft Output&#xff09;和"硬输出"&#xff08;Hard Output&#xff09;是两种不同的预测输出形式&#xff0c;通常用于分类问题中 文章目录 引言一、软输出和硬输出1.1 硬输出&#xff08;Hard Output&#xf…

深入理解C语言指针原理——深入底层机制

概述 在C语言中&#xff0c;指针是处理内存的核心工具。为了更好地理解指针如何工作&#xff0c;我们需要深入了解指针与底层硬件和操作系统之间的交互方式。本文将探讨指针的底层实现、内存布局、以及它们如何影响程序的行为。 内存模型 虚拟内存 现代操作系统为每个进程提…

Java算法—排序篇之快速排序(Quick sort)

快速排序&#xff08;Quick sort&#xff09; 核心思路&#xff1a; 从数列中挑出一个元素&#xff0c;一般都是左边第一个数字&#xff0c;称为 “基准数”;创建两个指针&#xff0c;一个从前往后走&#xff0c;一个从后往前走。先执行后面的指针&#xff0c;找出第一个比基…

io进程----库

目录 一丶定义 二丶分类 1.静态库 2.动态库 三丶静态库制作 四丶动态库制作 总结&#xff1a; 一丶定义 当使用别人的函数时除了包含头文件以外还需要有库 头文件&#xff1a;函数声明、结构体等类型定义、头文件、宏定义、其他头文件等 库&#xff1a;把一些常…

Java 使用QQ邮箱的接收发送功能,入门级教程

进入qq邮箱主页面&#xff0c;点击账号 下滑找到POP3...如果没有开启&#xff0c;需要开启&#xff0c;开启后&#xff0c;点击管理服务 然后点击生成授权码 按照步骤执行完成后&#xff0c;会给你需要的授权码 1.拿到授权码后&#xff0c;导入相关依赖&#xff0c;和yml相关配…