java基本数据类型与位运算

     2022-04-12     250

关键词:

Java基本数据类型与位运算

>>赋值运算符

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

>> 字节、字、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。

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

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来存储。

>> 注意与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 世界 = "我的世界";这样的语句是可以通过的。

>>逻辑运算符

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

>>位运算符

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

>>位移动运算符

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

>>实例验证

 

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进制为20
		System.out.println(5 << 2);// 运行结果是20

		// 2、右移( >> ) 高位补符号位
		// 0000 0000 0000 0000 0000 0000 0000 0101 然后右移2位,高位补0:
		// 0000 0000 0000 0000 0000 0000 0000 0001
		System.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);// 结果是0
		System.out.println(-5 >> 3);// 结果是-1
		System.out.println(-5 >>> 3);// 结果是536870911

		// 4、位与( & )
		// 位与:第一个操作数的的第n位于第二个操作数的第n位如果都是1,那么结果的第n为也为1,否则为0
		System.out.println(5 & 3);// 结果为1
		System.out.println(4 & 1);// 结果为0

		// 5、位或( | )
		// 第一个操作数的的第n位于第二个操作数的第n位 只要有一个是1,那么结果的第n为也为1,否则为0
		System.out.println(5 | 3);// 结果为7

		// 6、位异或( ^ )
		// 第一个操作数的的第n位于第二个操作数的第n位 相反,那么结果的第n为也为1,否则为0
		 System.out.println(5 ^ 3);//结果为6 

		// 7、位非( ~ )
		// 操作数的第n位为1,那么结果的第n位为0,反之。
		System.out.println(~5);// 结果为-6 
	} 

  

参考 java位运算

第一章数据储存1.1位与位存储

...环境处理真假值的运算称之为布尔运算,布尔运算有三个基本运算:与AND、或OR、异或XOR。它们与加减乘除运算一样,属于两目运算。运算符两边分别有一个值类型为布尔型的输入值,最后输出一个布尔值。  NOT运算也是布尔... 查看详情

java——java基础

目录一、helloworld程序二、运行Java文件三、Java程序的基本结构以及命名规范四、基本数据类型1、基本数据类型2、数据类型在内存中的大小3、基本数据类型详解4、类型自动提升与强制转型五、整型运算符1、基本运算2、移位运算... 查看详情

03-java学习-基本数据类型-运算符-键盘接收用户输入

java的八大基本数据类型: 类型转换的基本原则: java整数的默认类型是int,小数的默认类型是double 运算符:算术运算符、连接、赋值、关系、逻辑、三目运算符等…… 键盘接收用户输入:java.util.Scanner类... 查看详情

java基本数据类型&位运算

1.Java基本数据类型类型字节数范围byte1-128~127short2-32768~32767int4-231~231-1long8-263~263-1float4 double8 bolean1 char2  查看详情

java的基本数据类型与运算符

基本数据类型 基本数据类型  1byte(字节)=8bit(位)整型。byte(8位)short(16位)int(32位)long(64位)浮点型。float(单精度。32位)double(双精度。64位)    在数值后面添加F表示float类型,不加表示double类型    如... 查看详情

java八大基本数据类型与运算符(代码片段)

java八大基本数据类型与运算符✏️变量和类型✏️整型变量(重点)✏️长整型变量✏️双精度浮点型变量(重点)✏️单精度浮点型变量✏️字符类型变量✏️字节类型变量✏️短整型变量✏️布尔类型变量✏️字符串类型变量(重... 查看详情

java八大基本数据类型与运算符(代码片段)

java八大基本数据类型与运算符✏️变量和类型✏️整型变量(重点)✏️长整型变量✏️双精度浮点型变量(重点)✏️单精度浮点型变量✏️字符类型变量✏️字节类型变量✏️短整型变量✏️布尔类型变量✏️字符串类型变量(重... 查看详情

java语言程序设计教程的目录

...常量和变量2.1.1标识符和关键字2.1.2数据类型2.1.3基本数据类型2.1.4基本数据类型的转换2.1.5字符串类型2.2运算符与表达式2.2.1算术运算符与算术表达式2.2.2关系运算符与关系表达式2.2.3逻辑运算符与逻辑表... 查看详情

java基础之数据类型/基本运算符

...的集合、流、反射等等。今天我会从最基础的数据类型和基本运算符开始说起:虽然说java的底层是由c去实现的,不过ja 查看详情

java逻辑运算符与位运算符

逻辑运算符:&,&&,|,||;&:逻辑与,条1件&条2件,当有一个条件为false,则整体为false;&&:逻辑与,条1件&&条2件,当第一个条件为false,则整体为false;否则,检验第二个条件。程序要先判断条件1... 查看详情

java数据类型

Java的两大数据类型:基本数据类型(八种基本类型)引用数据类型基本数据类型:都有对应的包装类PS.1.一般地整型变量默认为int类型;2. 浮点数的默认类型为double类型;3. char数据类型可以储存任何字符;例子:charletter=... 查看详情

java入门篇3---基本数据类型的运算

一、整数1.运算java的整数运算遵从基本的四则运算,不再赘述下面说一下整数的除法得到的结果永远是精确的,也就是除不尽就给你取整,我记得python2的int类型会保留小数,python3之后也只保留整数另外取余也是使用%,除法如果... 查看详情

java基本数据类型之间的运算规则(代码片段)

前言:这里只讨论七种基本数据类型变量间的运算,不包含boolean类型的。1.自动类型提升:结论:当容量小的数据类型的变量与容量大的数据类型的变量做运算时,结果自动提升为容量大的。说明:此时的容量... 查看详情

java基本数据类型转换

类型转换Java语言是一种强类型的语言。强类型的语言有以下几个要求:变量或常量必须有类型:要求声明变量或常量时必须声明类型,而且只能在声明以后才能使用。赋值时类型必须一致:值的类型必须和变量或常量的类型完全一... 查看详情

java基本类型,数据转换及运算符

一、Demo.javapublicclassDemo{//定义一个类 publicstaticvoidmain(String[]args){//主方法,一切程序的起点  /*在屏幕上打印输出*/  System.out.println("HelloWorld!"); }}? publicclass定义:类名称必须和文件名称保持一 查看详情

关于变量,java基本数据类型,运算符类型,如何从控制台接收输入的数据的看法

...1.变量是在程序运行中其值可以改变的量,java程序的一个基本存储单元 2.变量的使用变量类型+变量名二,JAVA基本数据类型1.数值型a.整点类型(byte、short、int、long)             ... 查看详情

java数据类型与运算符

Java基本数据类型Java的两大数据类型:内置数据类型引用数据类型内置数据类型Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。byte:byte数据类型是8位、有符号的,以... 查看详情

java中哪些基本数据类型支持加减乘除四则运算

参考技术Ajava就八大基本数据类型byte,short,int,long,float,double,char,boolean,你每个写个实例数据就知道哪些支持了int,floatdouble,short,long...... 参考技术B除boolean这样的,别的数值型都支持,只是看对小数的处理、值范围大小~~~~~~ 查看详情