java--数据类型和运算符备忘知识点
来源:互联网 发布:n反斜杠百分之d c语言 编辑:程序博客网 时间:2024/06/05 05:29
摘自《疯狂Java讲义》
整形取值范围相关
byte:内存占8位,表示范围 -128(-2^7)~127(2^7 - 1)
short:内存占16位,表示范围 -32768(-2^15)~ 32767(2^15 - 1)
int:内存占32位,表示范围(-2^32)~(2^32 - 1)
long:内存占64位,表示范围(-2^64)~ (2^64 - 1)
问题:拿byte举例,为什么表示范围是(-2^7)~(2^7 - 1)呢?
由于java是用二进制补码来表示一个数,例如一个byte的值为5,则其二进制表示为00000101,值为-5时,二进制表示为11111011,又因为byte占8位,所以从00000000~01111111是从0到127,但是从11111111到10000000为什么是-128到-1呢,为什么不是-127到-1呢,有两种方式可以判断这个原因,第一种方式,我们观察正数的情形,00000000-011111111有128个数,大小从0~127,而负数情形10000000~11111111共128个数,从-128~-1,他们的差别实在正数情况下需要一个表示0的数。第二种方式,计算法,算两个边界,补码10000000的值是-128,为11111111值是-1(计算方法:正式的补码为原码,负数的补码为其绝度值取反加一)
直接给出一个整数值默认就是int类型
如果将一个较小的整数(在byte和short范围内)赋值给一个byte和short变量,系统会自动把这个值当成byte或short处理,而如果把一个较大的数(超过int范围),java不会自动把这个整数当成long类型处理,若希望系统把他当成一个整形long类型处理,需要在值后跟L或者l
浮点型
java语言的浮点型默认double,如果希望java把一个浮点型当做float表示需要在值为加f
特殊浮点型:正无穷大Double.POSITIVE_INFINITY,Float.POSITIVE_INFINITY
,负无穷大Double.NEGATIVE_INFINITY,Float.NEGATIVE_INFINITY
和非数Double.NaN,Float.NaN
注意:
- 所有的正无穷大数值都是相等的,所有的负无穷大数值都是相等的,为NaN不与任何数值相等,甚至和NaN都不相等
- 只有浮点数除以0才可以得到正无穷大和负无穷大,因为java语言自动把和浮点运算的0(正数)当成0.0处理,如果一个整数除以0,则得到一个异常Exception in thread “main” java.lang.ArithmeticException: / by zero
新表示法
当程序中的数值位数过多时,可以在数值中间加“_”来分辨位数
eg:
public class AAA { public static void main(String[] args){ int i = 1_000_000_000; i = i/10; System.out.print("============"+i); }}
表达式类型的自动提升
- 当一个表达式中包含多种类型,整个算数表达式的类型将自动提升,提升规则,所有byte、short、char提升为int
- 整个算数表达式的值提升为与表达式中包含的最大级别类型
常量池
常量池指的是在编译期被确定,并被保存在已编译的.class文件中的一些数据(包括类、方法、接口中的常量、字符串直接常量)
除法的特例
如果除法的两个操作数都为整型,则除数不能为0,否则将抛出上述异常。但如果操作数有一个为浮点型,或者两个都是浮点型除数可以为0,或者0.0得到的是正无穷大或负无穷大
eg:
public class AAA { public static void main(String[] args){ double i = 1; i = i/0; System.out.print("=====" + i); }}
输出结果为=====Infinity
移位运算
- 对于(byte、short、char)都是先转化为int,在一位运算
- 对于int类型额整数移位,a>>b 当b>32,系统现将b对32求余,得到的结果才是真正的移位位数,对于long也是如此,将对64求余
- 进行位运算不会改变操作数本身,只是得到一个新的运算结果,而原来的操作数本身不会改变。
eg:
public class AAA { public static void main(String[] args){ int i= 1; System.out.print("移位="+(i<<1)); System.out.print("i="+i); }}
扩展后的复制运算
a = a + 1; a+=1看似是相同的操作,其实,他们只是结果相同,但是运行机制并不相同,网上资料显示,建议第二种方式
==操作符
如果比较的是值类型,尽管他们的数据类型不同,只要值相同,也会返回true 97==’a’
逻辑运算
短路 && 、||
不短路&、|
- java--数据类型和运算符备忘知识点
- 变量数据类型和运算符等知识点
- Java数据类型和运算符
- Java数据类型和运算符
- Java数据类型和运算符
- java数据类型和运算符
- java数据类型和运算符
- Java数据类型和运算符
- java数据类型和运算符
- Java数据类型和运算符:
- 数据类型和运算符 java
- Java数据类型和运算符
- java数据类型和运算符
- Java数据类型和运算符
- java数据类型和运算符
- java基础知识点(一)--注释,进制,数据类型,运算符,优先级,排序和查找
- java运算符的一些小知识点和数据类型的补充
- C++基本数据类型和运算符知识点汇总
- 编码方式
- Android 自定义View 条形图
- 修改Hadoop配置文件
- <center>oc内存管理机制<:center>
- 坚持#第125天~坚守梦想!
- java--数据类型和运算符备忘知识点
- linux中文件上传
- 安卓技术文章积累
- LeetCode OJ(110. Balanced Binary Tree)
- matlab常用指令
- 不用+、-、×、÷对两个整数求和
- 各Spring-Boot-Starters介绍
- 本科生、硕士生毕业设计指导
- List indexof的返回值