鱼C论坛

 找回密码
 立即注册
查看: 2742|回复: 0

[学习笔记] 0基础学习Java ——第四天

[复制链接]
发表于 2017-7-8 18:29:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 回忆一遥远 于 2017-8-16 07:37 编辑

指数计数法
例:
  1. public class Exponents {
  2.     public static void main(String[] args){
  3.         // 小写的 e 和大写的 E 都可以
  4.         float expFloat = 1.39e-43f;
  5.         expFloat = 1.39E-43f;
  6.         System.out.println(expFloat);
  7.         double expDouble = 47e47d;
  8.         double expDouble2 = 47e47;
  9.         System.out.println(expDouble);
  10.     }
  11. }
复制代码


输出:
  1. 1.39E-43
  2. 4.7E48
复制代码


e”代表自然对数的基数,约等于 2.718 (在 Math.E 给出了更精确的 double 型的值)。
然而,在设计 FORTRAN 语言的时候,设计师们把 e 代表“10的幂次”。这种惯例在 C、C++ 以及 Java 中被保留了下来。

如果编译器能够正确地识别类型,就不必在数值后附加字符。
例如:
  1. long n = 200;
复制代码


对于
  1. float f = 1e-43f;
复制代码

编译器通常会把指数作为 double 处理,所以如果尾部没有 f ,编译器就会提示使用类型转换将 double 转换成 float。





按位操作符

按位操作符用来操作整数基本数据类型中地单个“比特”(bit),即二进制位。
按位操作符会对两个参数中对应地位执行布尔代数运算,并生成一个结果。

按位操作符来源于 C 语言面向底层地操作,这种操作经常需要设置硬件寄存器中的二进制位。Java 的设计初衷是嵌入式机顶盒内,所以这种面向底层的操作仍被保留下来。但是并不常用。

操作符有:
“与”操作符 (&)
“或”操作符(|)
“异或”操作符(^)
“非”操作符(~)


&=、|=、^= 都是合法的, “~”不能与“=”联用。






移位操作符
移位操作符的运算对象也是二进制的“位”。移位操作符只能处理整形(整数类型)
左移操作符(<<)                    : 按照操作符右侧指定的位数将操作符左边的操作数向左移动,低位补0。
“有符号”左移操作符(>>)   : 按照操作符右侧指定的位数将操作符左边的操作数向右移动,高位使用符号扩展(若符号为正,高位插0;若为负,插1)。
“无符号”左移操作符(>>>):它使用“0扩展”,无论正负,高位都插0。

对 char、byte、short 类型的数值进行移位处理时,在移位之前会被转化成 int 类型,并且结果也是一个 int 类型的值。

“移位”可以和“等号”组合使用(<<=、>>=、>>>=)

截断:
  1. public class URShift {
  2.     public static void main(String[] args){
  3.         int i = -1;
  4.         System.out.println(Integer.toBinaryString(i));
  5.         i >>>= 10;
  6.         System.out.println(Integer.toBinaryString(i));
  7.         long l = -1;
  8.         System.out.println(Long.toBinaryString(l));
  9.         l >>>= 10;
  10.         System.out.println(Long.toBinaryString(l));
  11.         short s = -1;
  12.         System.out.println(Integer.toBinaryString(s));
  13.         s >>>= 10;
  14.         System.out.println(Integer.toBinaryString(s));
  15.         byte b = -1;
  16.         System.out.println(Integer.toBinaryString(b));
  17.         b >>>= 10;
  18.         System.out.println(Integer.toBinaryString(b));
  19.         b = -1;
  20.         System.out.println(Integer.toBinaryString(b));
  21.         System.out.println(Integer.toBinaryString(b>>>10));
  22.     }
  23. }
复制代码

结果:
  1. 11111111111111111111111111111111
  2. 1111111111111111111111
  3. 1111111111111111111111111111111111111111111111111111111111111111
  4. 111111111111111111111111111111111111111111111111111111
  5. 11111111111111111111111111111111
  6. 11111111111111111111111111111111
  7. 11111111111111111111111111111111
  8. 11111111111111111111111111111111
  9. 11111111111111111111111111111111
  10. 1111111111111111111111
复制代码








字符串操作符 + / +=
例子:
  1. public class StringOperators {
  2.     public static void main(String[] args){
  3.         int x = 0, y = 1, z = 2;
  4.         String s = "x, y, z ";
  5.         System.out.println(s + x + y + z);
  6.         System.out.println(x + " " + s);
  7.         s += "(summed) =";
  8.         System.out.println(s + (x + y + z));
  9.         System.out.println("" + x);
  10.     }
  11. }
复制代码

结果:
  1. x, y, z 012
  2. 0 x, y, z
  3. x, y, z (summed) =3
  4. 0
复制代码







类型转换操作符
强制执行类型转换时,把要得到的数据类型放在圆括号中,放在要进行类型转换的值的左边。
比如
  1. b = (int)i;
复制代码







截尾和舍入

如果把一个浮点数转换成整型,Java 时如何处理的?
比如把19.9转换成int,结果时30还是20?
实例:
  1. public class CastinNumbers {
  2.     public static void main(String[] args){
  3.         double above = 0.7, below = 0.4;
  4.         float fabove = 0.7f, fbelow = 0.4f;
  5.         System.out.println("(int)above: " + (int)above);
  6.         System.out.println("(int)below: " + (int)below);
  7.         System.out.println("(int)fabove: " + (int)fabove);
  8.         System.out.println("(int)fbelow: " + (int)fbelow);
  9.     }
  10. }
复制代码

输出:
  1. (int)above: 0
  2. (int)below: 0
  3. (int)fabove: 0
  4. (int)fbelow: 0
复制代码


由上面的实例可知, Java 时截尾处理的。
若要舍入的结果,需要使用 java.lang.Math 中的 round() 用法:
round() 是 java.lang 的一部分,不需要额外导入。





Java 中取消了 sizeof

评分

参与人数 1荣誉 +5 鱼币 +5 收起 理由
小甲鱼 + 5 + 5 支持楼主!

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 21:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表