首页 > 编程语言 >Java运算符

Java运算符

时间:2023-12-04 23:32:09浏览次数:39  
标签:Java args System 运算符 println main public out

前言

星期一,怎么突然学起来了运算符?是不是有点奇怪,当然不是突然想起来学的,而是特意来复习一遍(在代码中看到一个很高级的写法,嘿嘿!有用到位运算,厉害厉害~)

运算符

本来想直接写运算符的,但是想先简单讲一下什么是位运算。

# 比如简单的加法
int a = 35;
int b = 47;
int c = a + b;

当然在计算机中都是以二进制来进行运算,所以上面我们所给的 int 变量会在机器内部先转换为二进制在进行相加。如下面代码:

35:  0 0 1 0 0 0 1 1
47:  0 0 1 0 1 1 1 1
————————————————————
82:  0 1 0 1 0 0 1 0

有点厉害欸!那就接着正题”运算符“先来个表格熟悉一下!

符号

名称

运算规则

&

按位与(与)

两个位都为1时,结果才为1

|

按位或(或)

两个位都为0时,结果才为0

^

异或

两个位相同为0,相异为1

~

取反

0变1,1变0

>>

右移

各二进位全部右移若干位,对无符号数,高位补0,有符号数,各编译器处理方法不一样,有的补符号位(算术右移)有的补0(逻辑右移)

<<

左移

各二进位全部左移若干位,高位丢弃,低位补0

这看起来多少有点离谱,哈哈哈~反正我第一次学的时候,半天不会算,现在也不一定会,但是我有工具,算的嘎嘎快了!接下来粗略解释一下,不然真的一脸懵。

按位与&

public class HelloWorld {
    public static void main(String []args) {
		System.out.println("按位与&");
		System.out.println(0&0); #结果0
		System.out.println(0&1); #结果0
		System.out.println(1&0); #结果0
		System.out.println(1&1); #结果1
    }
}

旁边是结果,是不是有点理解【两个位都为1时,结果才为1】没错就是这样的。这个在线工具真的很好!推荐给你们菜鸟工具。比如5&3

public class HelloWorld {
    public static void main(String []args) {
       System.out.println(5&3); #结果1
    }
}

不同懂为什么是1吗?别急,你要明白在计算机中都是以二进制来进行运算,所以我们转换一下

public class HelloWorld {
    public static void main(String []args) {
		# 输出11 在前面补充0,补满八位,意思就是0000 0011这个就是3
		System.out.println(Integer.toBinaryString(3));
		
		# 输出101 在前面补充0,补满八位,意思就是0000 0101这个就是5
		System.out.println(Integer.toBinaryString(5));
    }
}

按位或|

public class HelloWorld {
    public static void main(String []args) {
		System.out.println(0|0);#结果0
		System.out.println(0|1);#结果1
		System.out.println(1|0);#结果1
		System.out.println(1|1);#结果1
		
		System.out.println(5|3);#结果7

    }
}

这个7不懂嘛?那就不懂算了(生气)

异或^

public class HelloWorld {
    public static void main(String []args) {
		System.out.println(0^0);#0
		System.out.println(0^1);#1
		System.out.println(1^0);#1
		System.out.println(1^1);#0
		
		System.out.println(5^3);#6

    }
}

取反~

~1=0  ~0=1

右移>>和左移<<

public class HelloWorld {
    public static void main(String []args) {
		System.out.println(8<<2); #32
		System.out.println(8>>2); #2
    }
}

标签:Java,args,System,运算符,println,main,public,out
From: https://blog.51cto.com/u_15426660/8682353

相关文章

  • Java登陆第十七天——正则表达式
    在java.util.regex包下,提供了正则表达式对字符串进行约束规范匹配正则表达式必须依靠Pattern类和Matcher类。PatternPattern类的主要作用是编写正则规范。常用方法如下:方法类型描述publicstaticPatterncompile(Stringregex)静态方法传入正则表达式规则,并返回......
  • Java基础故障处理工具
    适用场景:生产环境由于可视化工具侵入系统,带来资源占用、安全问题或者规模较小未部署可视化监控平台,此时要使用基础命令行工具;给一个系统定位问题的时候,知识、经验是关键基础,数据是依据,工具是运用知识处理数据的手段。这里说的数据包括但不限于异常堆栈、虚拟机运行日志、垃圾......
  • java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1
    java.lang.IllegalStateException:ExpectedBEGIN_OBJECTbutwasSTRINGatline1column2path$packagecom.example.core.mydemo.scooterOrderSms;importcom.alibaba.fastjson.JSON;importcom.example.core.mydemo.json2.GsonUtils;importcom.google.gson.Gso......
  • 应用报错:java.lang.OutOfMemoryError: unable to create new native thread
    上个月生产环境忽然出现部分交易处理缓慢甚至超时,查看对应应用日志发现一直在刷报错日志,报错信息如下java.lang.OutOfMemoryError:unabletocreatenewnativethread从报错上来看是说不能创建本地线程了,应用都是容器部署的,开始我怀疑是容器内存不够了导致内存泄露,但经过查看容器......
  • Day19 Java 流程控制01:用户交互Scanner
    Java流程控制01:用户交互ScannerScanner对象之前我们学的基本语法中我们并没有实现程序和人的交互,但是Java给我们提供了这样一个工具类:Scanner类,可以通过它来获取用户的输入基本语法:Scannerscanner=newScanner(System.in);通过Scanner类的next()与nextLine()方......
  • Java 内存分析工具 Arthas 介绍与示例讲解
    目录一、概述二、Arthas安装三、Arthas主要组成结构四、Arthas通信主要流程五、Arthas快速入门讲解1)启动Arthas2)基础命令介绍3)jvm相关1、dashboard(实时数据面板)2、Thread(线程相关堆栈信息)3、jvm(查看当前JVM的信息)4、memory(查看JVM的内存信息)5、sysprop(查看/修改属性)6、s......
  • LeetCode-Java:55.跳跃游戏
    题目给你一个非负整数数组nums,你最初位于数组的第一个下标。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标,如果可以,返回true;否则,返回false。示例1:输入:nums=[2,3,1,1,4]输出:true解释:可以先跳1步,从下标0到达下标1,然后......
  • 黑马java基础简记
    day02——数据类型、运算符需要我们注意的是,随便写一个整数或者小数的字面量,它也是有默认数据类型的-比如23,它默认就为int类型;如果加上后缀L,则为long类型;-比如23.8,它默认为double类型;如果加上后缀F,则为float类型; //如果希望随便写一个整型字面量是long类型的,需要在其后......
  • Java学习之路(十二)
    Java学习之路(十二)1、时间日期类1.1、Date类(应用)计算机中时间原点1970年1月1日00:00:00时间换算单位1秒=1000毫秒Date类概述Date代表了一个特定的时间,精确到毫秒Date类构造方法方法名说明publicDate()分配一个Date对象,并初始化,以便它代表它被分......
  • Java变量
     1.Java命名规则包名:全部小写,多单词.隔开aaa.bbb.ccccom.baidu.类名和接口:每个单词首字母大写大驼峰AaaBbbCcc变量名函数名小驼峰:换单词大写aaaBbbCccnextInt(){}左括号前不换行变量声明格式:数据类型变量名=初始值;=1.表示赋值,将右边的内容存入到左边......