鱼C论坛

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

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

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

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

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

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

指数计数法
例:
public class Exponents {
    public static void main(String[] args){
        // 小写的 e 和大写的 E 都可以
        float expFloat = 1.39e-43f;
        expFloat = 1.39E-43f;
        System.out.println(expFloat);
        double expDouble = 47e47d;
        double expDouble2 = 47e47;
        System.out.println(expDouble);
    }
}

输出:
1.39E-43
4.7E48

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

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

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





按位操作符

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

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

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


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






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

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

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

截断:
public class URShift {
    public static void main(String[] args){
        int i = -1;
        System.out.println(Integer.toBinaryString(i));
        i >>>= 10;
        System.out.println(Integer.toBinaryString(i));
        long l = -1;
        System.out.println(Long.toBinaryString(l));
        l >>>= 10;
        System.out.println(Long.toBinaryString(l));
        short s = -1;
        System.out.println(Integer.toBinaryString(s));
        s >>>= 10;
        System.out.println(Integer.toBinaryString(s));
        byte b = -1;
        System.out.println(Integer.toBinaryString(b));
        b >>>= 10;
        System.out.println(Integer.toBinaryString(b));
        b = -1;
        System.out.println(Integer.toBinaryString(b));
        System.out.println(Integer.toBinaryString(b>>>10));
    }
}
结果:
11111111111111111111111111111111
1111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111
11111111111111111111111111111111
11111111111111111111111111111111
11111111111111111111111111111111
11111111111111111111111111111111
1111111111111111111111







字符串操作符 + / +=
例子:
public class StringOperators {
    public static void main(String[] args){
        int x = 0, y = 1, z = 2;
        String s = "x, y, z ";
        System.out.println(s + x + y + z);
        System.out.println(x + " " + s);
        s += "(summed) =";
        System.out.println(s + (x + y + z));
        System.out.println("" + x);
    }
}
结果:
x, y, z 012
0 x, y, z 
x, y, z (summed) =3
0






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






截尾和舍入

如果把一个浮点数转换成整型,Java 时如何处理的?
比如把19.9转换成int,结果时30还是20?
实例:
public class CastinNumbers {
    public static void main(String[] args){
        double above = 0.7, below = 0.4;
        float fabove = 0.7f, fbelow = 0.4f;
        System.out.println("(int)above: " + (int)above);
        System.out.println("(int)below: " + (int)below);
        System.out.println("(int)fabove: " + (int)fabove);
        System.out.println("(int)fbelow: " + (int)fbelow);
    }
}
输出:
(int)above: 0
(int)below: 0
(int)fabove: 0
(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-11-14 13:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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