本文是《凯哥陪你学系列之java基础篇》

感谢:

感谢网友:志远162。在上一篇中对错误指出。

在上篇中模运算正负号和分子保持一致而不是分母。希望大家记住

本篇主要内容:

1:比较运算

2:逻辑运算

3:位运算

4:三元运算

1: 比较运算:

比较运算符:等于,不等于,大于,大于等于,小于,小于等于。

在java中比较两个数等于使用的是双等号。比如 3==2

注意:比较运算符运算的结果是true或是false。

其中 instanceof这个先不用管。这个以后学习中需要的

2 逻辑运算符

Java中逻辑运算

逻辑运算符的作用:

用于连接两个boolean类型的表达式。

比如在数学中我们 2

但是 如果写出 x>2,x<5 这两个表达式和 2

所以就出现了逻辑运算符。

那么用java表达 x>2 其 x<5怎么表达?

(x>2 & x<5)这样就OK了。

代码演示:

class LogicDemo{

public static void main (String [] args){

int a = 3;

int b = 6;

System.out.println(a>2&a<5);

System.out.println(b>2&b<5);

}

}

运行结果:

分析原因:

System.out.println(a>2&a<5);为什么是true?

因为: a=3.而3>2.&符号左边是true 。又因为 3<5 .&符号右边是true.

所以&符号左右两边都是true。所以就是true.

System.out.println(b>2&b<5);为什么是false?

因为: b=6.而6>2.&符号左边是true 。而右边 6<5是false.

所以&符号左右两边就是 true和false。而输出的是false.

所以我们可以总结出&符号的特点

总结与(&):

&:与 或是叫 且。而且的意思

总结与(&):

&:与 或是叫 且。而且的意思

文字表达:

true & true = true;

true & false = false;

false & true = false;

false & false = false;

规律:

&符号:两边只要有一边是false结果必为false.

只有两边都是true,结果才是true。

总结与(|)

l:与、或者。就是或者的意思

文字表达:

true & true = true;

true & false = true;

false & true = true;

false & false = true;

规律:

|符号:两边只要有一边是true结果必为tr.ue

只有两边都是false,结果才是false。

与和或使用场景

当要取中间值或是数据(也就是区间值)的时候使用 & 。

比如 想要3 和4 那么就是 2

当要取不是区间值,使用或

比如 想要不是 3和4 那么就是 x<2 | x>5。取小于2或者是大于5的数

总结异或(^)

异或:

true & true = false;

true & false = true;

false & true = true;

false & false = true;

^和|的区别:

或是 两边都是真的时候结果依然为真

但是异或,两边都是真的时候 结果却为false.

总结非运算(!)

非运算取相反的值。

!ture = false;

!false = true;

短路逻辑运算:(面试题)

&& 双与其特点和单个&特点相同的。

但是只要有一边为假就不比较另一边了。

比如:int i = 1;

i>2 && i<5;

这个运算过程就是,先比较 1>2 结果是false.当使用&& 的时候就不在比较右边了。

但是如果使用& 还需要比较右边。所以&& 起到短路效果。

|| 和 |的效果是一样。但是||起到短路效果的。

为什么会出现 &&或是是||?

因为这个从效率上来讲比单&效率高。

&&和&区别:

&& 只能做逻辑运算符,起到短路效果。

& 不仅是逻辑运算符还是位运算符。

&:无论左边结果是什么,右边都参与运算。

&&:当左边是false时候,右边就不参与运算了。

||和|

|:无论左边结果是什么,右边都参与运算

||:如果左边是真,右边不参与运算。

|:还是位运算的

位运算符

Java中位运算符:

与运算:

6&3.

因为位运算直接对应的是二进制。

而我们知道6和3是int类型。而int类型在内存中是4个字节。32位二进制。

所以,6&3在内存中:

简写:

分析为什么 6&3 结果是十进制的2

0:false

1:true

而我们有知道&运算的特点。只要有一个为false结果必为false.

所以运算的结果就是二进制的010 对应的十进制就是2

同理 6|3 = 7

异或运算:

根据异或特点:两边相同即为假,两边不同才为真。

所以 6^3 = 5

6^3^3=6

所以,异或特点:

当一个数异或两一个数两次后,结果还是这个数本身。

异或作用:

作为加密的一种方式。

比如数字6 先用3异或一次后得到新的二进制。然后在网络上传输。等接受方拿到异或后的新二进制在和3进行异或后,就得到原来的数据6了。

反码:

其实就是取反后的二进制码

6的反码(~6): 是-7

理解:

反码就是取反后在加1.

左移:

3>>2:含义 3左移两位:

在内存中处理过程:

3在内存中完整的表示方式:

说明:两边的||表示在内存中临界边。

左移两位

得到新的二进制就是1100 转成十进制就是12

那么3<<3 = 24

分析原因:

因为这里操作的是二进制。所以左移一位就是2的1次方。左移3位就是2(3)

所以 :

总结:

左移N位其实就是该数乘以2的N次幂

所以 <

右移:

6>>1 =

6在内存中二进制:

右移一位:

右移一位后,最高位就空出一位。注意这里不能直接用0补。

如果是整数,使用0补,如果是负数使用1补。

也就是:原数据最高位是什么,右移后,最高位和原数据最高位相同。

对应二进制变成110对应的十进制就是3.

6>>2=1

找规律:

右移N位,其实就是该数除以2的N次幂

无符号右移:>>>

无符号右移与右移区别:

无符号右移,无论原数据最高位是什么,右移完成后最高位都用0补。

注意:

左移和右移,都操作的是二进制数据。

位运算练习:

练习1:

最优效率的方式算出2乘以8等于几?

内存中运算过程

分析得到 8=2(3).8等于2的3次方

所以 2*8 = 2*2(3)

2在内存中二进制表现:

2(3):2的3次方其实就是2左移3位。即时:2<<3

2的二进制左移三位后:

后面不够用0补全。

结果

有效的就是10000对应的十进制就是16。

所以代码:

练习2:

对两个整数变量的值进行互换(注意:不需要第三方变量)

分析:

正常的,使用第三方变量互换原理。

题目明确不能使用第三方变量。

方式1:

int a = 3,b = 5;

分析:

a =  a+b; //此时a = 8

b =  a-b;//此时b = 8-5 = 3

a =  a – b;//因为在上一步 b = 3 所以此时 a = 8-3 = 5.

这样输出的 a = 5,b=3.a 和 b就互换了。

虽然使用这种方式也可实现a与b的互换。但是如果a和b都比较大

那么 a+b就有可能超出int范围。这样就会出现类型强制转换或是精度丢失的错误。

方案二:

使用异或运算。

从上面讲解我们知道 一个数异或另一个数两次之后,结果还是这个数的本身。

所以:

分析原因:

a = a^b;    //这个没什么说的 此时a = a^b了

b = a^b;    //这个时候因为上一步 a= a^b了。此时 b = ((a^b)^b)。其实 b = a

a = a^b;    //有第一步 a = a^b ,有第二步 b = a。所以此时 a =( (a^b)^a).其实就是 a =b

将a b数据带入:

三元运算符

三元运算符(三目运算):三个元素参与运算的符号。

代码:

练习:

需求:比较两个整数,输出其中交大的

代码:

/**

三元运算符练习:

需求:

比较两个整数,输出其中交大的

**/

class OperatTest{

public static void main (String [] args){

int a = 5;

int b = 3;

System.out.println("a,b中较大的值为:"+ (a>b?a:b));

}

}

输出结果为:

练习二:

需求:求三个整数中较大的。

代码(部分):

//求三个整数中较大的。

int o =3,p =6,q = 1;

int temp = (o>p?o:p);

int max = temp>q?temp:q;

System.out.println("三个数中较大的值为:"+ max);

结果:

ps:欢迎关注凯哥微信公众号:凯哥Java

java 十 = 0_从零学java笔录-第10篇 数据类型(四)相关推荐

  1. java 正负号数值比较_从零学java笔录-第10篇 数据类型(四)

    从零学java笔录-第10篇 数据类型(四) 凯哥Java 凯哥java 本文是<凯哥陪你学系列之java基础篇> 感谢: 感谢网友:志远162.在上一篇中对错误指出. 在上篇中模运算正负 ...

  2. 最新出炉的Java十大应用领域,学Java好工作找不完

    现阶段很多人被表象迷惑,感觉Java开发人员并不好找工作,或者误以为市场饱和了.其实在我们的身边,不论是手机上还是网站上,随处可见Java的身影,除了人才缺口日益扩大,应用领域也是越来越广泛,今天随动 ...

  3. 零学Java(7)之数据类型,小AD竟然solo不过小朋友

    作者简介 本文章为转载,原作者名:编程界明世隐,仅用来学习 简介:CSDN博客专家,从事软件开发多年,精通Java.JavaScript,博主也是从零开始一步步把学习成长.深知学习和积累的重要性,喜欢 ...

  4. 从零学Java(17)之字符串连接,你要成为小学生之友吗?

    作者简介 作者名:编程界明世隐 简介:CSDN博客专家,从事软件开发多年,精通Java.JavaScript,博主也是从零开始一步步把学习成长.深知学习和积累的重要性,喜欢跟广大ADC一起打野升级,欢 ...

  5. 从零学Java(19)之 if else分支结构详解,小AD要搞对面心态!

    作者简介 作者名:编程界明世隐 简介:CSDN博客专家,从事软件开发多年,精通Java.JavaScript,博主也是从零开始一步步把学习成长.深知学习和积累的重要性,喜欢跟广大ADC一起打野升级,欢 ...

  6. 从零学Java(2)之搭建开发环境

    目录 从零学Java(8)之变量 从零学Java(7)之数据类型 从零学Java(6)之字面量和常量 从零学Java(5)之关键字和保留字 从零学Java(4)之编程规范 从零学Java(3)之第一个 ...

  7. 从零学Java(9)之修饰符,小AD竟打起了钱的主意!

    作者简介 作者名:编程界明世隐 简介:CSDN博客专家,从事软件开发多年,精通Java.JavaScript,博主也是从零开始一步步把学习成长.深知学习和积累的重要性,喜欢跟广大ADC一起打野升级,欢 ...

  8. 从零学Java(20)之switch case语句,小AD变身中路城管大队!

    作者简介 作者名:编程界明世隐 简介:CSDN博客专家,从事软件开发多年,精通Java.JavaScript,博主也是从零开始一步步把学习成长.深知学习和积累的重要性,喜欢跟广大ADC一起打野升级,欢 ...

  9. 从零学Java(12)之算术运算符(++、- -)

    作者简介 作者名:编程界明世隐 简介:CSDN博客专家,从事软件开发多年,精通Java.JavaScript,博主也是从零开始一步步把学习成长.深知学习和积累的重要性,喜欢跟广大ADC一起打野升级,欢 ...

最新文章

  1. Activiti工作流实战-2
  2. windows2003权限如何配置
  3. cookie mapping
  4. mybatis--MapperProxy事务
  5. python编程胡牌将是什么意思_python麻将和牌算法
  6. UI完美素材|(Watch展示篇)Mockups动态图提案模板
  7. Xcode 自动对齐 插件
  8. android studio 继承关系 快捷键,Android Studio快捷键
  9. Linux文件属性、权限设置
  10. GDAL源码剖析(七)之GDAL RasterIO使用说明(续)
  11. Linux系统性能监控工具nmon
  12. C盘pc的Android文件夹,清理系统盘C盘的无用文件
  13. 关于python程序格式的描述_关于Python程序格式框架的描述,以下选项中错误的是...
  14. 微信公众号里面使用定位
  15. 储备物资管理局计算机,国考报名税务过审居首 储备物资管理局最抢手
  16. 时间分割算法,Java将一段时间按星期来分割
  17. [LOJ#6617][THUPC2019]摆家具(矩阵乘法 + 子集和变换)
  18. 明翰英语教学系列之雅思阅读篇V0.9(持续更新)
  19. linux编译ntohl加什么库,C ++中的64位ntohl()?
  20. 清除计算机病毒更换内存芯片,电脑内存条中病毒了怎么处理?

热门文章

  1. 基本语法及基本概念概述(标识符、访问修饰符、变量、数组、枚举、注释、空行、继承、接口、(对象、类、方法、实例变量)、关键字表)
  2. 111 第一章操作系统概述总结思维导图+错题整理
  3. Qt / Moc 和信号 - 槽解析
  4. OpenLDAP / Ubuntu 18.04 下 docker 版安装
  5. 使用strcat_s函数的注意事项
  6. fastdfs 测试客户端_分布式文件服务 FastDFS (第一篇)
  7. ST表(模板)「 查询区间最值 」
  8. Zabbix housekeeper processes more than 75% busy
  9. JAVA 1.2(原生数据类型 Primitive Data Type)
  10. Ubuntu 下一个 vim 建立python 周围环境 构造