1.赋值运算符

赋值使用操作符“=”。它的意思是“取右边的值(即右值),把它复制给左边(即左值)”。右值可以是任何 常数、变量或者表达式 (只要它能 生成 一个值就行)。但左值必须是一个明确的,已命名的变量。也就是说,必须有一个物理空间可以存储等号右边的值。
分类 基本数据类型 与 类数据类型 的不同
1、 对基本数据类型的赋值是很简单的。基本数据存储了实际的数值,而并非指向一个对象的引用,所以在为其赋值的时候,是直接将一个地方的内容复制到了另一个地方。
2、 但是在为对象“赋值”的时候,情况却放生了变化。对一个对象进行操作,我们真正操作的是对对象的引用。----这种特殊的现象通常称作“别名现象”,是Java操作对象的一种基本方式。
----摘抄自《Thinking In Java》P39

2. 字节、字、bit、byte的关系

1 Byte = 8 Bits
1 KB = 1024 Bytes
1 MB = 1024 KB
1 GB = 1024 MB
bps 是 bits per second 的简称。一般数据机及网络通讯的传输速率都是以「bps」为单位。如56Kbps、100.0Mbps 等等。
Bps即是Byte per second 的简称。而电脑一般都以Bps 显示速度,如1Mbps 大约等同 128 KBps。

3.基本数据类型占据的空间大小

byte 占位8个比特,或者说一个字节.由于是有符号的,所以最小时为-128,最大值为+127.
short 占位16比特,两字节.最小值2^15,最大值2^15 -1.
int 占位32比特,4字节.最小值 2^31,最大值2^31 -1
long 占位64比特,8字节.最小值2^63,最大值2^63-1
float 占位32比特,4字节.最小正非零值2^-149,最大正非零值(2-2^-23)·2^127.
double 占64比特,8字节.最小正非零值为2^-1074,最大正非零值为(2-2^-52)·2^1023
char 占位16比特,2字节.主要是为了支持unicode,所以java中的char是双字节,而非C++中的一个字节
boolean 网上说法比较多,不过根据字节码的内容来看,如果是单个boolean变量,则使用int来存储,如果是boolean数组,则用byte来存储。

4. 注意与C/C++的不同

int 在C和C++的占用2个字节,在java中4个字节。
在C++中,char是基础数据类型,8位,1个字节。byte不是基础数据 类型,一般是typedef unsigned char byte;这样子的,也就是说,byte其实是unsigned char类型,那么也是8位,1个字节。不同的是,char可以表示的范围是-128-127,而byte可以表示的范围是0-255。
在java中,char和byte都是基础数据类型,其中的byte和C++中的char类型是一样的,8位,1个字节,-128-127。但是,char类型,是16位,2个字节,'\u0000'-'\uFFFF',可以表示0~65535的无符号数。
为什么java里的char是2个字节?
因为java内部都是用unicode的,所以java其实是支持中文变量名的,比如string 世界 = "我的世界";这样的语句是可以通过的。

5.逻辑运算符

逻辑运算符用于连接布尔型表达式。、
逻辑运算符包括"&","&&","|","||"。
&:表示普通与,所有的判断条件都要依次执行;
&&:若干个条件,如果前面的条件返回false,那么后面不再判断,就是false;
|:表示普通或,所有的判断条件都要依次执行;
||:若干个条件,如果前面的条件返回true,那么后面不再判断,就是true;

6.位运算符

位运算符主要针对二进制,
它包括了:按位与(&)、非(~)、按位或(|)、按位异或(^)。
从表面上看似乎有点像逻辑运算符,但逻辑运算符是针对两个关系运算符来进行逻辑运算,而位运算符主要针对两个二进制数的位进行逻辑运算。
&:当两边操作数对应的位同时是1时,结果为1,否则为0。如1100&1010=1000   
|:当两边操作数对应的位只要有一个是1,结果为1,否则为0。如1100|1010=1110   
~:操作数的位,0变1,1变0,这个是单目运算符  
^:当两边操作数对应的位值不同时,结果为1,否则为0。如1100^1010=0110

7.位移动运算符

位移动运算符主要有三种:
<<(左移):
在没有溢出的前提下,对于正数和负数,左移一位都相当于乘以2的1次方,左移n位就相当于乘以2的n次方
>>(带符号右移):右移高位补符号位
右移一位相当于除2,右移n位相当于除以2的n次方。
>>>(无符号右移):右移高位补0,
无符号右移运算符只对32位和64位的值有意义

8.实例验证

public static void main(String[] args) {// 1、左移( << )// 0000 0000 0000 0000 0000 0000 0000 0101 然后左移2位后,低位补0://// 0000 0000 0000 0000 0000 0000 0001 0100 换算成10进制为20System.out.println(5 << 2);// 运行结果是20// 2、右移( >> ) 高位补符号位// 0000 0000 0000 0000 0000 0000 0000 0101 然后右移2位,高位补0:// 0000 0000 0000 0000 0000 0000 0000 0001System.out.println(5 >> 2);// 运行结果是1// 3、无符号右移( >>> ) 高位补0// 例如 -5换算成二进制后为:0101 取反加1为1011// 1111 1111 1111 1111 1111 1111 1111 1011// 我们分别对5进行右移3位、 -5进行右移3位和无符号右移3位:System.out.println(5 >> 3);// 结果是0System.out.println(-5 >> 3);// 结果是-1System.out.println(-5 >>> 3);// 结果是536870911// 4、位与( & )// 位与:第一个操作数的的第n位于第二个操作数的第n位如果都是1,那么结果的第n为也为1,否则为0System.out.println(5 & 3);// 结果为1System.out.println(4 & 1);// 结果为0// 5、位或( | )// 第一个操作数的的第n位于第二个操作数的第n位 只要有一个是1,那么结果的第n为也为1,否则为0System.out.println(5 | 3);// 结果为7// 6、位异或( ^ )// 第一个操作数的的第n位于第二个操作数的第n位 相反,那么结果的第n为也为1,否则为0System.out.println(5 ^ 3);//结果为6// 7、位非( ~ )// 操作数的第n位为1,那么结果的第n位为0,反之。System.out.println(~5);// 结果为-6}

【Java基础】Java基本数据类型与位运算相关推荐

  1. 7、Java四种进制及位运算介绍

    7.Java四种进制及位运算介绍 四种进制: 二进制:0,1 以0b或0B开头 十进制:0-9 八进制:0-7 以数字0开头 十六进制:0-9 及A(10)-F(15) ,以0x或0X开头,此处A-F ...

  2. Java基础----Java编程语言概述

    Java基础----Java编程语言概述 文章目录 Java基础----Java编程语言概述 Java编程语言概述 1-1 软件开发介绍 1.1软件开发介绍 1.2 常用命令 1-2 计算机编程语言介 ...

  3. Java基础-Java中常用的锁机制与使用

    Java基础-Java中常用的锁机制与使用 锁lock或互斥mutex是一种同步机制,主要用于在存在多线程的环境中强制对资源进行访问限制.锁的主要作用为强制实施互斥排他以及并发控制策略.锁一般需要硬件 ...

  4. Java基础-Java中的堆内存和离堆内存机制

    Java基础-Java中的堆内存和离堆内存机制 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 转载于:https://www.cnblogs.com/yinzhengjie/p/9 ...

  5. Java基础-JAVA中常见的数据结构介绍

    Java基础-JAVA中常见的数据结构介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是数据结构 答:数据结构是指数据存储的组织方式.大致上分为线性表.栈(Stack) ...

  6. Java基础-Java中的内存分配与回收机制

    Java基础-Java中的内存分配与回收机制 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一. 二. 转载于:https://www.cnblogs.com/yinzhengji ...

  7. Java基础——Java多继承的三种实现方式

    Java基础--Java"多继承"的三种实现方式 Java语言本身只支持单继承(每个类只能有一个父类),但单继承的局限性很大,因此,可以通过以下的方式实现"多继承&quo ...

  8. Python_Task01:变量、运算符、数据类型及位运算

    变量.运算符.数据类型及位运算 学习教程 变量.运算符.数据类型 1. 注释 2. 运算符 3. 变量和赋值 4. 数据类型与转换 5. print() 函数 思考题 练习题 位运算 1.原码.反码和 ...

  9. [重学Java基础][Java IO流][Exter.2]IO流中几种不同的读写方法的区别

    [重学Java基础][Java IO流][Exter.2]IO流中几种不同的读写方法的区别 Read 读入方法 read(): 一般是这种形式 public int read() 1.从流数据中读取的 ...

  10. JAVA基础--JAVA SE(知识点总结 Ⅴ )

    前面内容请见: JAVA基础–JAVA SE(知识点总结 Ⅰ ) JAVA基础–JAVA SE(知识点总结 Ⅱ ) JAVA基础–JAVA SE(知识点总结 Ⅲ ) JAVA基础–JAVA SE(知识 ...

最新文章

  1. autojs遍历当前页面所有控件_HTML5表单和表单控件的使用
  2. JS制作常见通知信息(适用于手机通知信息和电脑通知信息)
  3. css flexbox模型_代码简介:CSS Flexbox有点像旅行
  4. SublimeText3 插件的使用和本身的配置
  5. Bailian4117 简单的整数划分问题【整数划分+记忆化递归】
  6. 软件测试——第三次作业
  7. BroadcastReceiver的学习和使用实例
  8. 609. 在系统中查找重复文件
  9. SPSS26版本软件超详细安装指导+内附安装资源
  10. 逆向脱壳附加数据处理
  11. 华为HCIP(HCNP)笔记,还不快快收藏!
  12. mandriva urpm类命令
  13. Java编程:将具有父子关系的数据库表数据转换为树形结构,支持无限层级
  14. 福禄克FLUKE 9142/9143/9144/9170/9771/9173-A-P-256计量干井炉技术指标
  15. SAP SD VA01 在销售范围中,订单类型XX没有定义
  16. oracle 纵列 转 横列,oracle sql小结(主要讲横列转换的例子)decode 以及case
  17. 10公斤快递怎么用计算机,10公斤快递
  18. “脱离应用开发者的数据库,不会成功”,黄东旭万字长文剖析数据库发展新趋势...
  19. 哪里可以学Java?
  20. 计算机开机定屏,电脑主板开机画面定屏解决方法

热门文章

  1. 关于Zigbee的常识
  2. 操作系统五: 非连续内存分配
  3. 浙江文成“红领巾”向交警敬礼:上下学感谢有你
  4. Linux单网卡多个IP(或者多个网卡多个IP)设置
  5. 量子计算机,开启中国速度
  6. Mybatis3源码分析(05)-加载Configuration-加载MappedStatement
  7. Android重写菜单增加系统自带返回键
  8. MutationObserver 监听DOM树变化
  9. laravel使用的模板引擎 blade
  10. Spring与Hibernate两种组合方式