网站首页做几个关键词,上杭网站定制,wordpress调用第一张图片,企业展厅设计内容提纲1#xff1a;常见的位运算使用场景 提纲2#xff1a;整数类型运算时的类型溢出问题#xff0c;产生原因以及解决办法 提纲3#xff1a;浮点类型运算时的精度丢失问题#xff0c;产生原因以及解决办法
数值类型#xff08;6种#xff09;分为#xff1a;
整型常见的位运算使用场景 提纲2整数类型运算时的类型溢出问题产生原因以及解决办法 提纲3浮点类型运算时的精度丢失问题产生原因以及解决办法
数值类型6种分为
整型整数byte 字节型占1个字节 short 短整型占2个字节 int 整型 占4个字节默认
long 长整型占8个字节
浮点型小数float 单精度浮点数占4个字节 double 双精度浮点数占8个字节默认
运算方式
1.算术运算符 - * / %
注意1数值类型使用算术运算符运算结果任然为数值
注意2整数之间使用“\”进行整除运算
注意3整数不能为“零”
注意4防止“类型溢出” 整数类型运算时的类型溢出问题产生原因以及解决办法 产生原因 固定范围Java的整数类型有固定的范围。例如int类型的范围是-2^31到2^31-1包括负数因为Java使用二进制补码表示法。如果运算结果超出这个范围就会发生溢出。 算术运算任何可能产生超出范围结果的算术运算加法、减法、乘法都可能导致溢出。 类型转换将一个范围较大的整数类型强制转换为范围较小的整数类型时如果值超出目标类型的范围也会发生溢出。 解决办法 整数类型运算时遇到的类型溢出问题可以使用BigInteger来解决 浮点类型运算时的精度丢失问题产生原因以及解决办法 产生原因 是因为计算机内部是通过二进制形式来保存浮点数的无法精确的表示十进制的小数所以会产生精度丢失的问题。具体情况如下 十进制的小数在进行二进制转换时整数部分会除二取余小数部分会乘二取整在乘二取整的过程中会产生无限循环的情况所以就出现了精度丢失。 解决办法 浮点类型运算时遇到的精度丢失问题可以使用BigDecimal来解决 注意5浮点数运算时除数为零
System.out.println(-5.0/0); //结果为Infinity或-InfinitySystem.out.println(0.0/0); //结果为NaN
2.位运算
1 左移 右移位移运算左移变大右移变小
int number100;
System.out.println(number3);//向左移3位相当于n*2^3
System.out.println(number3);//向右移3位相当于n/2^3//在原有基础上计算1.5 倍的增长
int cap16;
int newCap1(int)(cap*1.5);//算术运算符
int newCap2cap(cap1);//位运算符
System.out.println(newCap1);
System.out.println(newCap2);
2)位运算运算
运算规则同时为1 结果为1 否则为0 常见的位运算使用场景: 1.判断奇偶数位运算可以用于判断一个整数是奇数还是偶数。一个整数与1进行位与运算如果结果为0则该整数为偶数如果结果为1则该整数为奇数 2.快速的计算位运算可以用于实现一些简单的乘法和除法运算。例如乘以2可以通过左移一位来实现除以2可以通过右移一位来实现。 3.哈希值的计算在哈希算法中位运算也经常被使用。例如Java的HashMap在实现其hash方法时就使用了右移运算符。 4.交换变量值位运算可以用于交换两个变量的值。你可以使用异或^运算和位与运算来实现这一点。 lass demo02 {public static void main(String[] args) {int a 5;int b 10;System.out.println(交换前:);System.out.println(a a);System.out.println(b b);// 使用异或运算交换a和b的值a a ^ b;b a ^ b;a a ^ b;System.out.println(交换后:);System.out.println(a a);System.out.println(b b);}}运行结果
交换前:
a 5
b 10
交换后:
a 10
b 5 5.整数绝对值位运算也可以用于计算整数的绝对值。通过异或^运算和右移运算我们可以得到一个整数的绝对值。 3.关系运算符 !
运算规则数值类型之间运算运算结果为boolean
4.逻辑运算符与 || 或 非
运算规则布尔类型之间运算结果为boolean
运算同时为true 结果为true 否则为false
||运算同时为false 结果为false 否则为true
运算false为true true为false
5.三元运算符条件表达式?表达式1:表达式2 int a7 ,b13 ,c91;//3个变量排序//最大值int max(ab) ? (ac ? a : c) :(bc ? b : c);//最小值int min(ab) ? (ac ? a : c) :(bc ? b : c);//中间值int mid(abc)-max-min;System.out.println(max);System.out.println(mid);System.out.println(min);