首页 > 编程语言 >3.Java 运算符(算术运算符、赋值运算符、逻辑运算符、关系运算符、三元运算符、标识符、键盘输入、进制、原码反码补码、位运算符、运算符优先级)

3.Java 运算符(算术运算符、赋值运算符、逻辑运算符、关系运算符、三元运算符、标识符、键盘输入、进制、原码反码补码、位运算符、运算符优先级)

时间:2024-10-25 15:46:48浏览次数:3  
标签:11111111 Java 00000000 补码 System 运算符 原码 out

一、算术运算符

1、基本介绍
运算符说明
+正号
-负号
运算符说明
+
-
*
/
%取模(取余)
运算符说明示例结果
++自增(前),先运算后取值a = 2; b = ++a;a = 3; b = 3;
++自增(后),先取值后运算a = 2; b = a++;a = 3; b = 2;
自减(前),先运算后取值a = 2; b = --a;a = 1; b = 1;
自减(后),先取值后运算a = 2; b = a–;a = 1; b = 2;
运算符说明示例结果
+字符串相加“Hello” + “World”“HelloWorld”
2、注意事项

除号(/)

  • 整数相除,只保留整数部分,舍弃小数部分

取模(%)

  • a % b 等价于 a - a / b * b(结果的符号同 a)

自增(++)

  1. a = b++ 等价于 a = b

  2. a = ++b 等价于 a = (b + 1)

自减(–)

  1. a = b-- 等价于 a = b

  2. a = --b 等价于 a = (b - 1)


二、赋值运算符

1、基本介绍
  • 基本赋值运算符
运算符说明示例
=简单的赋值运算符-
  • 复合赋值运算符
运算符说明示例
+=加和赋值操作符C += A 等价于 C = C + A
-=减和喊值操作符C -= A 等价于 C = C - A
*=乘和赋值操作符C *= A 等价于 C = C * A
/=除和赋值操作符C /= A 等价于 C = C / A
%=取模和赋值操作符C %= A 等价于 C = C % A
运算符说明示例
<<=左移位赋值运算符C <<= 2 等价于 C = C << 2
>>=右移位赋值运算符C >>= 2 等价于 C = C >> 2
&=按位与赋值运算符C &= 2 等价于 C = C & 2
|=按位或赋值运算符C |= 2 等价于 C = C | 2
^=按位异或赋值运算符C ^= 2 等价于 C = C ^ 2
2、注意事项
  • 复合赋值运算符会进行类型转换,byte b = 1; b += 1; 等价于 b = (byte) (b + 1);

三、逻辑运算符

1、基本介绍
运算符说明
&逻辑与,全为 true 时,结果为 true,否则为 false
|逻辑或,全为 false 时,结果为 false,否则为 true
&&短路与,全为 true 时,结果为 true,否则为 false
||短路或,全为 false 时,结果为 false,否则为 true
!逻辑非,a 为 true 时,结果为 false,a 为 false 时,结果为 true
^逻辑异或,a 与 b 相同时,结果为 false,a 与 b 不同时,结果为 true
2、注意事项

& 对比 &&

  1. a & b,计算 a 与 b

  2. a && b,如果 a 为 false,则不计算 b

| 对比 ||

  1. a | b,计算 a 与 b

  2. a || b,如果 a 为 true,则不计算 b

3、示例实操
ab-a & ba | ba && ba || b!aa^b
truetrue-truetruetruetruefalsefalse
truefalse-falsetruefalsetruefalsetrue
falsetrue-falsetruefalsetruetruetrue
falsefalse-falsefalsefalsefalsetruefalse

四、关系运算符

运算符说明
==等于
!=不等于
>大于
<小于
>=大于等于
<=小于等于
运算符说明示例结果
instanceof检查是否是指定类的对象“ABC” instanceof Stringtrue

五、三元运算符

【条件表达式】 ? 【表达式 1】 : 【表达式 2】
  1. 条件表达式为 true 时,执行表达式 1

  2. 条件表达式为 false 时,执行表达式 2

  • 口诀:一真二假

六、标识符

1、概述
  • Java 对各种变量、方法、类等命名时使用的字符序列称为标识符
2、命名规则
(1)基本介绍
  1. 标识符的组成:26 个英文字母(大小写)、数字 0 - 9、下划线(_)、美元符号($)

  2. 数字不可以开头

  3. 不可以使用关键字和保留字,但能包含关键字和保留字

  4. 严格区分大小写

  5. 不能包含空格

(2)关键字
  • 保留字在现有 Java 版本尚未使用,但以后版本可能会作为关键字使用,命名标识符时要避免使用这些保留字
byValue、cast、future、generic、inner、operator、outer、rest、var、goto、const
(3)关键字
  • 关键字被 Java 赋予了特殊含义,其中,关键字的所有字母都为小写
  1. 用于定义数据类型的关键字
class、interface、enum
byte、int、long、float、doublechar、boolean、void
  1. 用于定义数据类型值的关键字
true、false、null
  1. 用于定义流程控制的关键字
if、else
switch、case、default
while、do
for、break、continue
return
  1. 用于定义访问权限修饰符的关键字
private、protected、public
  1. 用于定义类、函数、变量修饰符的关键字
abstract、final、static、synchronized
  1. 用于定义类与类之间关系的关键字
extends、implements
  1. 用于定义创建实例、引用实例、判断实例的关键字
new、this、super、instanceof
  1. 用于异常处理的关键字
try、catch、finally
throw、throws
  1. 用于包的关键字
package、import
  1. 其他修饰符关键字
native、strictfp、transient、volatile、assert
3、命名规范
  1. 包命:多单词组成时,所有字母都小写

  2. 类名、接口名:多单词组成时,所有单词的首字母大写

  3. 变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始首字母大写

  4. 常量名:所有字母都大写,多单词组成时,每个单词用下划线(_)连接


七、键盘输入

1、基本介绍
  • 使用键盘输入
  1. 导入 Scanner 类
import java.util.Scanner;
  1. 创建 Scanner 对象
Scanner myScanner = new Scanner(System.in);
  1. 调用方法,获取键盘输入
String str = myScanner.next();
2、常用方法
方法说明
nextInt获取用户输入的整数
nextDouble获取用户输入的小数
next获取用户输入的字符串
3、基本使用
  • ScannerDemo 类
package com.sunke.scanner;

import java.util.Scanner;

public class ScannerDemo {
    public static void main(String[] args) {
        Scanner myScanner = new Scanner(System.in);
        System.out.print("请输入内容:");
        String str = myScanner.next();
        System.out.println("你输入的内容是:" + str);
    }
}
  • 输出结果
请输入内容:HelloWorld
你输入的内容是:HelloWorld

八、进制

1、基本介绍
进制范围说明
二进制0 ~ 1,满 2 进 1以 0b / 0B 开头
八进制0 ~ 8,满 8 进 1以 0 开头
十进制0 ~ 9,满 10 进 1-
十六进制0 ~ 9 及 A ~ F(此处 A ~ F 不区分大小写),满 16 进 1以 0x / 0X 开头
十进制(DEC)十六进制(HEX)八进制(OCT)二进制(BIN)
1111
22210
33311
444100
555101
666110
777111
88101000
99111001
10A121010
11B131011
12C141100
13D151101
14E161110
15F171111
2、进制的转换
(1)转十进制

二进制转十进制

  • 从最低位(右边)开始,将每个位上的数乘以 2 的 【位数 - 1】 次方,然后求和
0b1010 -> (1 * 2^3) + (0 * 2^2) + (1 * 2^1) + (0 * 2^0) -> 10

八进制转十进制

  • 从最低位(右边)开始,将每个位上的数乘以 8 的 【位数 - 1】 次方,然后求和
0144 -> (1 * 8^2) + (4 * 8^1) + (4 * 8^0) -> 100

十六进制转十进制

  • 从最低位(右边)开始,将每个位上的数乘以 16 的 【位数 - 1】 次方,然后求和
0x64 -> (6 * 16^1) + (4 * 16^0) -> 100
(2)转二进制

八进制转二进制

  • 将每位上的数转换为一个三位的二进制数
0237 -> 02(010)3(011)7(111) -> 0x10011111

十进制转二进制

  • 将该十进制数不断除以 2,直到商 0 为止,然后将每步得到的余数倒序拼接得到二进制数
34 -> 0b100010

34 / 2 = 17 ...... 0
17 / 2 = 8 ...... 1
8 / 2 = 4 ...... 0
4 / 2 = 2 ...... 0
2 / 2 = 1 ...... 0
1 / 2 = 0 ...... 1

十六进制转二进制

  • 将每个位上的数转换为一个四位的二进制数
0x15 -> 0x1(0001)5(0101) -> 0b10101
(3)转八进制

二进制转八进制

  • 从最低位(右边)开始,每三位一组转成对应的八进制数
0b11010101 -> 0b11(3)010(2)101(5) -> 0325

十进制转八进制

  • 将该十进制数不断除以 8,直到商 0 为止,然后将每步得到的余数倒序拼接得到八进制数
34 -> 042

34 / 8 = 4 ...... 2
4 / 8 = 0 ...... 4

十六进制转八进制

  1. 十六进制 -> 二进制 -> 八进制

  2. 十六进制 -> 十进制 -> 八进制

(4)转十六进制

二进制转十六进制

  • 从最低位(右边)开始,每四位一组转成对应的十六进制数
0b11010101 -> 0b1101(D)0101(5) -> 0xD5

八进制转十六进制

  1. 八进制 -> 二进制 -> 十六进制

  2. 八进制 -> 十进制 -> 十六进制

十进制转十六进制

  • 将该十进制数不断除以 16,直到商 0 为止,然后将每步得到的余数倒序拼接得到十六进制数
34 -> 0x22

34 / 16 = 2 ...... 2
2 / 16 = 2 ...... 2
3、Java 进制转换
(1)基本介绍
  1. 数值转字符串
方法说明
String toBinaryString(int i)将数值转换为二进制字符串
String toOctalString(int i)将数值转换为八进制字符串
String toHexString(int i)将数值转换为十六进制字符串
String toString(int i, int radix)将数值转换为指定进制字符串
  1. 字符串转数值
方法说明
int parseInt(String s, int radix)将指定进制的字符串转换为数值
Integer valueOf(String s, int radix)将指定进制的字符串转换为数值
(2)基本使用
  • DecChange 类
package com.sunke.dec;

public class DecChange {
    public static void main(String[] args) {
        System.out.println(Integer.toBinaryString(100));
        System.out.println(Integer.toOctalString(100));
        System.out.println(Integer.toHexString(100));

        System.out.println("------------");

        System.out.println(Integer.toString(100, 2));
        System.out.println(Integer.toString(100, 4));
        System.out.println(Integer.toString(100, 16));

        System.out.println("------------");

        System.out.println(Integer.parseInt("1100100", 2));
        System.out.println(Integer.parseInt("144", 8));
        System.out.println(Integer.parseInt("64", 16));

        System.out.println("------------");

        System.out.println(Integer.valueOf("1100100", 2));
        System.out.println(Integer.valueOf("144", 8));
        System.out.println(Integer.valueOf("64", 16));
    }
}
  • 输出结果
1100100
144
64
------------
1100100
1210
64
------------
100
100
100
------------
100
100
100

九、原码、反码、补码

  1. 二进制的最高位是符号位:0 表示正数,1 表示负数

  2. 正数和 0 的原码、反码、补码一致(三码合一)

  3. 负数的反码 = 原码符号位不变,其他位取反(0 转换成 1,1 转换成 0)

  4. 负数的补码 = 反码 + 1,负数的反码 = 补码 - 1

  5. 计算机以补码的方式运算

  6. 查看运算结果时看原码


十、位运算符

1、基本介绍
运算符说明
&按位与,两位全为 1,结果为 1,否则为 0
|按位或,两位有一位为 1,结果为 1,否则为 0
^按位异或,两位一位为 0,一位为 1,结果为 1,否则为 0
~按位取反,0 转换成 1,1 转换成 0
>>算术右移,低位溢出,符号位不变,并用符号位填补溢出的高位
<<算术左移,符号位不变,低位填补 0
>>>逻辑右移(无符号右移),低位溢出,高位填补 0
2、注意事项
  1. A >> B,等价于 A / 2^B

  2. A << B,等价于 A * 2^B

  • 不存在逻辑左移运算符(<<<)
3、基本使用
package com.sunke.bit;

public class BitOperationDemo {
    public static void main(String[] args) {
        // 1、得到 2 的补码(正数,三码合一):00000000 00000000 00000000 00000010
        // 2、得到 3 的补码(正数,三码合一):00000000 00000000 00000000 00000011
        // 3、进行 2 & 3 操作:00000000 00000000 00000000 00000010
        // 4、得到结果(补码)的原码(正数,三码合一):00000000 00000000 00000000 00000010 -> 2
        System.out.println(2 & 3);

        // 1、得到 -2 的补码(负数)
        //      (1)得到 -2 的原码:10000000 00000000 00000000 00000010
        //      (2)得到 -2 的反码:11111111 11111111 11111111 11111101
        //      (3)得到 -2 的补码:11111111 11111111 11111111 11111110
        // 2、进行 ~-2 操作:00000000 00000000 00000000 00000001
        // 3、得到结果(补码)的原码(正数,三码合一):00000000 00000000 00000000 00000001 -> 1
        System.out.println(~-2);

        // 1、得到 2 的补码(正数,三码合一):00000000 00000000 00000000 00000010
        // 2、进行 ~2 操作:11111111 11111111 11111111 11111101
        // 3、得到结果(补码)的原码(负数)
        //      (1)得到结果(补码)的反码:11111111 11111111 11111111 11111100
        //      (2)得到结果(补码)的原码:10000000 00000000 00000000 00000011 -> -3
        System.out.println(~2);

        // 1、得到 2 的补码(正数,三码合一):00000000 00000000 00000000 00000010
        // 2、进行 2 >> 2 操作:00000000 00000000 00000000 00000000
        // 3、得到结果(补码)的原码(0,三码合一):00000000 00000000 00000000 00000000 -> 0
        System.out.println(2 >> 2);

        // 1、得到 -2 的补码(负数)
        //      (1)得到 -2 的原码:10000000 00000000 00000000 00000010
        //      (2)得到 -2 的反码:11111111 11111111 11111111 11111101
        //      (3)得到 -2 的补码:11111111 11111111 11111111 11111110
        // 2、进行 -2 >> 2 操作:11111111 11111111 11111111 11111111
        // 3、得到结果(补码)的原码(负数)
        //      (1)得到结果(补码)的反码:11111111 11111111 11111111 11111110
        //      (2)得到结果(补码)的原码:10000000 00000000 00000000 00000001 -> -1
        System.out.println(-2 >> 2);
    }
}
  • 输出结果
2
1
-3
0
-1

十一、运算符优先级

优先级运算符运算顺序
1()、[]、{}-
2!、+(正号)、-(负号)、~、++、–左 <-- 右
3*、/、%左 --> 右
4+(加号)、-(减号)左 --> 右
5<<、>>、>>>左 --> 右
6<、<=、>、>=、instanceof左 --> 右
7==、!=左 --> 右
8&左 --> 右
9^左 --> 右
10|左 --> 右
11&&左 --> 右
12||左 --> 右
13?:左 --> 右
14=、+=、-=、*=、/=、%=、<<=、>>=、&=、|=、^=左 <-- 右

标签:11111111,Java,00000000,补码,System,运算符,原码,out
From: https://blog.csdn.net/weixin_52173250/article/details/143231361

相关文章

  • java计算机毕业设计杂志销售系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景随着信息技术的飞速发展,传统的杂志销售模式面临着巨大的变革需求。当前,杂志行业虽然具有独特的内容优势,如专业性强、深度报道等,但在互联网的冲击......
  • java中变量的命名规范是?
    一、在Java中,变量的命名规范有助于提高代码的可读性和可维护性。以下是一些主要的命名规范:小驼峰命名法(camelCase)变量名的第一个单词首字母小写,后续单词的首字母大写。例如:firstName,totalAmount,isAvailable避免使用单字母命名除非在非常简单的情况下(如循环计数器),......
  • Java中循环结构中的for循环和练习案例
    文章目录前言循环结构for循环练习1(输出)练习2(求和)练习3(求偶数和)练习4(求水仙花数)练习5(求水仙花数且统计个数)练习6(求回文数)前言我是一名来自延边大学人工智能专业的热爱街舞的大四学生,目前在学习Java,我会根据我的学习路线给大家分享学习经验,这章我们学习Java中的控制结......
  • java计算机毕业设计足球青训俱乐部管理后台系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景随着社会经济的不断发展,足球运动在大众中的普及程度日益提高,足球青训俱乐部的数量和规模也不断增长。在这种发展趋势下,传统的管理方式已难以应对......
  • java计算机毕业设计邮递路线规划系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容邮递路线规划系统研究相关内容一、研究背景在当今社会,随着互联网技术的飞速发展,电子商务蓬勃兴起,这使得人们对快递服务的依赖程度日益加深。人们的消费习惯......
  • java基础
    接口和抽象类有什么共同点和区别?共同点:实例化:接口和抽象类都不能直接实例化,只能被实现(接口)或继承(抽象类)后才能创建具体的对象。抽象方法:接口和抽象类都可以包含抽象方法。抽象方法没有方法体,必须在子类或实现类中实现。区别:设计目的:接口主要用于对类的行为进行约束,你实现......
  • 基于javaweb的茶园茶农文化交流平台
    开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:Maven3.3.9浏览器:谷歌浏览器后台路径地址:localhost:8080/项目名称/admin/dist/index.html前台路径地址:localhost:80......
  • JavaSE-继承(包含Object类)
    目录继承(包含Object类)何为继承优点代码复用易于维护和扩展缺点紧密耦合缺乏灵活性常用的方法Object类Object类中的常用方法:方法重写规则方法重写规则方法重写与方法重载的区别示例代码super关键字的用法示例代码final关键字的用法示例代码继承(包含Object类)何为继承在面向对象编......
  • 免费送源码:Java+ssm+MySQL 路面停车场管理系统的设计与实现 计算机毕业设计原创定制
    摘 要科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流,人类发展的历史正进入一个新时代。在现实运用中,应用软件的工作规则和开发步骤,采用Java技术建设路......
  • 【Java】Spring工具类
    1packagecom.example.demo1.utils.spring;23importorg.springframework.aop.framework.AopContext;4importorg.springframework.beans.BeansException;5importorg.springframework.beans.factory.NoSuchBeanDefinitionException;6importorg.sprin......