JAVA第二课(运算符)

位运算符:

(1)>> (a >>b)相当于a / (2的b次幂)注意取整,右移后,原来高位是什么,就用什么来补充空下的高位

(2)<< (a << b) 相当于 a * (2的b次幂):

(3)>>> 3>>>1 = 1 ;-> 3/2 = 1 ;与>>不同的是,右移后,不管原来高位是什么,都用0来补充空下的高位,PS:无<<<

PS:移位运算符,默认是模32的运算,除非左边的操作数是long,那么这种情况下是模34位运算,所以1<<35 的答案 和1<<3|8 的结果是一

样的,都是8;

(4)&:与运算:(6 & 3) = 2

6的二进制  110 ,实际上在内存中的存储是  0000—0000 0000—0000 0000—0000 0000—0110

3的二进制  011, 实际上在内存中的存储是  0000—0000 0000—0000 0000—0000 0000—0011

简写:

110

&011

-----

010(同真则真原则)

2的二进制就是 010 ,所以(6 & 3) = 2;

(5)| :或运算 (6 | 3) = 7

6的二进制  110 ,实际上在内存中的存储是  0000—0000 0000—0000 0000—0000 0000—0110

3的二进制  011, 实际上在内存中的存储是  0000—0000 0000—0000 0000—0000 0000—0011

简写:

110

|011

-----

111 (有真则真原则)

7 的二进制就是 0000—0000 0000—0000 0000—0000 0000—0111

(6)^ 异或运算:(6 ^ 3) = 5  (6 ^ 3 ^ 3 )  = 6(PS:一个数异或同一个数两次,结果是数本身)

6的二进制  110 ,实际上在内存中的存储是  0000—0000 0000—0000 0000—0000 0000—0110

3的二进制  011, 实际上在内存中的存储是  0000—0000 0000—0000 0000—0000 0000—0011

简写:

110

^011 (不同则真)

-----

101

5的二进制 0000—0000 0000—0000 0000—0000 0000—0101

故,^ 可运用于加密,如很多二进制数 ^ 3(未知数) 后二进制数值,发生变化,如果想得到原来的二进制数(解密),再 ^ 3,即可。

但是真正的加密,是经过复杂算法的。

(7)~ (反码): 01001 ~ 后 10110,即1变0 , 0变1

(~6) = -7

-6 = -7 + 1;

(~8) = -9:-8 = -9 + 1;

(~16) = -17:-16 = -17 + 1;

(~a)先把a变为-a,-a - 1 = (~a);

题目:用高效的方法算出 2*8=?

2的二进制 0010

8的二进制 1000

0010

*1000

-----

0000

0000

0000

0010

-----------

0010000

16的二进制就是 10000,所以效率慢,2*8 -> 2<<3

|000000000000000000000000000000000010| 左移 -> 000|000000000000000000000000000000010   |

用0补低位 -> |000000000000000000000000000000010000|

逻辑运算符:

&

特点:同真则真,其余为假,a&b ,a和b都参与运算

|

特点:有真则真,其余为假,a|b ,a和b都参与运算

^:异或:不同则真,其余为假,假设a = 3;( 2<a ^ a<5) 结果:false; a = 3 (a<2 ^ a<1)true

&& (短路):和&运算结果是一样,只是运算过程不一样,从左往右判断,有一个为假,剩下的不再参与运算

|| (短路) 和|运算结果是一样,只是运算过程不一样,从左往右判断,有一个为true,剩下的不再参与运算,结果必为true

!   !true 则false ,!false则true,!!true 则true

三元运算符?:

(表达式1)?(表达式2):(表达式3)

(表达式1为true)执行表达式2,否则执行表达式3

时间: 2024-10-07 10:08:06

JAVA第二课(运算符)的相关文章

(疯狂java)第二课

(本文章只是为了好玩,没有别的意思,有理解错误之处,恳请提醒,谢谢) 三.数据类型和运算符 想了一下今天看的内容好像依然大脑停留在用C语言去理解java,感觉有点奇怪,为啥本章叫数据类型和运算符,上来就碰到了注释,可见李刚老师对这个玩意还是很重视的,似乎感觉到这老几曾经被残忍的折磨过.在我看来代码的注释就好像,美女穿比基尼一样,多了少了都会受不了(当然有些朋友忍受能力强,特别是少的时候).一般代码的注释,目的就是让读代码的人,能快速的沥青比较复杂的逻辑,还有目的是比如我想写个文件,那么我想让人家

java第二课,java基础2

关键字: 在java中被赋予了特殊含义的单词,具有特殊用途. 标识符: 由字母,数字,下划线(_),美元符($)组成,不能以数字开头,不能是java中的关键字,保留字,区分大小写,见名之意. 变量: 从本质上来讲,变量其实是内存中的一小块区域, 表示存储空间,用于存储常量数据, 先声明再赋值再使用 语法:变量类型 变量名=变量值: 命名规范与标识符一样. 变量名第一个首字母小写,其他单词首字母大写. 常量: *只允许赋值一次,在程序运行过程中不允许个更改 *语法: final  常量名=值 *程

Java第二课:整数、浮点数

浮点数 带小数点的数.浮点这个词的本意就是指小数点是浮动的,是计算机内部表达非整数(包含分数和无理数)的一种方式.另一种方式叫做定点数,不过在Java中不会遇到定点数.人们借用浮点数这个词来表达所有带小数点的数. 当浮点数和整数放到一起运算时,Java会将整数转换成浮点数,然后进行浮点数的运算. 通常用double来表示浮点数的类型 浮点数计算是有误差的,当我们需要用精确的计算时,还是要用整数. 整数类型不能表达有小数部分的数.计算机里会有纯粹的整数这种奇怪的东西,是因为整数的运算比较快,而且占

使用eclipse学习java第二课

第一节: 异常: try{被监测的代码} catch(抛出的异常类型,例如:Exception.IOException等){}; 被检测的代码:如果是系统自己抛出的异常则不需要throw,如果是自己定义的异常则需要throw异常,catch才能抓到. 自定义异常: 也就是可以自己定义异常的类,这些类必须继承自java定义的异常类,像Exception.IOException等,然后可以在自己定义的衍生类里面定义方法均可. java的异常类有两个构造函数:(这两个构造函数不是必须在类里实现的!)

Java 第二课:helloworld

Java的诞生原因: C++程序需要很多的设备内存,这样将增加硬件的成本,不利于市场竞争 Java的优势: 专门为内存有限的消费类电子设备进行设计,使其执行环境以及程序体积都很小, 想法:C++程序体积的大小,是否与堆栈段和代码段的大小有关,运行时的大小是否与内存分配有关? public class CTest { public static void main(String[] args) { System.out.println("Hello,world"); } }

java 第二课 标识符

Java 标识符为字母.数字.下划线.dollar符 变量不能以数字开头 包名小写 类.接口首字母大写 方法首字母小写 全局变量首字母小写 局部变量首字母大写 常量大写,单词间用下划线隔开 Java中goto.const虽为关键字,但是没有使用 public static void main(String[] args){ } 或 public static void main(String args[]){ } main方法必须用public修饰,否则编译不报错,但是运行不了 Java对大小写

10月25日,java第二课

变量根据作用域范围分为局部变量,成员变量Java数据类型分为基本类型(单纯数据类型,具体数字,字符或布尔值)应用类型(复杂的,指向存储在内存的"堆"中数据的指针引用地址)Java标志符由字母.数字.下划线或美元符组成,以字母.下划线或美元符开头,严格区分大小写.Java不可使用关键字和保留字,但能包含关键字和保留字关键字都为小写,变量是数据的基本存储形式,因Java是一种强类型语言,变量必须先声明后使用.声明变量 数据类型(空格)变量名=初始值: int a=;//常量赋值后不能改变

新手自学java第二课

这一篇琢磨了很久才搞懂,还是得多记,毕竟笨鸟多飞 什么是编译和解释 编译型就是将编写好的代码完整的翻译好使得操作系统能够识别并按照代码工作 解释型就是编写好的代码未经编译,操作系统需要运行时才进行临时编译 java是编写完成对代码经过编译,操作系统在识别并工作时再临时编译一次 注释 单行注释:// 多行注释:/* 文档注释:/** 要将书写注释作为一种习惯. 数据类型 数据类型分为八大基本数据类型和引用数据类型 八大基本数据类型 整数 int 用的最多的就是int,int占4个字节,(8位=1字

python-第二课-运算符与基本数据类型

第二课-运算符与基本数据类型 复习: pypy是所有的python编辑器中最快的,原因是,它把机器码拿给编译器,直接把机器码直接拿给底层操作. 环境变量配置过程: 计算机-属性-高级系统设置-环境变量-Path,在后面加分号,把新的路径加进来.再想加别的,依旧可以使用这种放法,加分号,把新的路径加进来.分号的作用就是区分不同的路径,进行分割. 一般的情况下我们使用文件的形式来写代码,在linux下要加上头文件#/usr/bin/... 在Python2中加入# -*- coding:utf-8