Java 操作符-阿里云开发者社区

开发者社区> 沉默王二> 正文

Java 操作符

简介: Java 操作符
+关注继续查看

重新再来看(总感觉第一次看)《java编程思想》的话,还是有很多的收获,比如这篇Java 操作符。


一、算术操作符


①、Random


public static void main(String[] args) {
        for (int i = 0; i < 10; i++) {
            Random r = new Random(2008);
            System.out.println(r.nextInt(3)+ "-----------");
        }
    }


为什么会输出1,确实让人百感交集,至少到目前为止,我还是没有弄清楚为什么会等于1,不是等于2,或者是0。


【小测试】Random的使用问题这里有个话题可以参考,有人说的让人很懂的样子,但是我还是没懂,但明白了以下:


new Random()在没有传递指定种子的时候,默认种子为当前时间(毫微秒为单位)。

设置种子后,就意味着r对象有着固定的形态,其第一次的next是固定的,第二次的next也是固定的,我本来以为有什么规律可以发现,但没有找到。

当前时间(毫微秒)作为种子时,也就意味着生成的随机数将会尽可能的不同


   public Random() { this(++seedUniquifier + System.nanoTime()); }

   private static volatile long seedUniquifier = 8682522807148012L;


②、魔幻数字47


本来我以为47是个神奇的数字,但其意义和我所想的截然相反,就是指单纯的下面的意思


虽然程式作者写的时候自己能了解数值的意义,但对其他程式员而言,甚至制作者本人经过一段时间后,会难以了解这个数值的用途,只能苦笑讽刺“这个数值的意义虽然不懂,不过至少程式会动,真是个魔术般的数字”而得名。

二、自动递增和递减


事到如今,我依然憎恨自动递增和递减,我觉得这个太魔幻,尤其是前缀和后缀还不一样。我是极不情愿理解这样的含义,但这一次,我好像“懂”了。


   

int i=0;
        System.out.println(i++);
        System.out.println(i);
        System.out.println(++i);
        System.out.println(i);
        System.out.println(i--);
        System.out.println(i);
        System.out.println(--i);
        System.out.println(i);


第一次输出0,第二次1,第三次2,第四次2、、、


我从情感上讨厌这样的写法。


三、关系操作符


①、==


不过对于==操作符来说,如果是要比较基本类型,ok,如果是基本类型的装箱混比,那么转成基本类型再==,就不容易出现逻辑上错误。


     

int i = 1;
        Integer j = 1;
        Integer k = new Integer(1);
        Integer k1 = new Integer(1);
        System.out.println(i == j);
        System.out.println(i == k);
        System.out.println(j == k);
        System.out.println(k1 == k);


不关乎答案如何,我觉得这种比较真心受够了,真让人久久不能释怀。


②、短路


static boolean getB() {
        Random r = new Random();
        if (r.nextInt(5) < 4) {
            return false;
        }
        return true;
    }
    static boolean getA() {
        Random r = new Random();
        if (r.nextInt(5) < 2) {
            return false;
        }
        return true;
    }
    public static void main(String[] args) {
        for (int i = 0; i < 5; i++) {
            boolean c = getA() && getB();
            System.out.println(c);
        }
    }


假如说存在以上这样的一个程序,从概率上来讲,把getA() && getB()的形式换成getB() && getA()更能节省时间。


为什么会这样,因为后一种形式在几率上更容易形成短路,也就是说getB()形成false的情况更多,这个时候getA()执行的机会就会少。


四、截尾和舍入


double d = 10.99;
        float a = (float)d;
        System.out.println(a);
        int b = (int) a;
        int f = Math.round(a);
        System.out.println(b);
        System.out.println(f);


向下转型的时候会丢弃精度。


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
9497 0
使用OpenApi弹性释放和设置云服务器ECS释放
云服务器ECS的一个重要特性就是按需创建资源。您可以在业务高峰期按需弹性的自定义规则进行资源创建,在完成业务计算的时候释放资源。本篇将提供几个Tips帮助您更加容易和自动化的完成云服务器的释放和弹性设置。
12037 0
Java 操作符
版权声明:欢迎转载,请注明沉默王二原创。 https://blog.csdn.net/qing_gee/article/details/50319127 重新再来看(总感觉第一次看)《java编程思想》的话,还是有很多的收获,比如这篇Java 操作符。
502 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
13186 0
Java操作Excel文件基础--Java Excel API
        Java Excel API是一个成熟的、开源的Java API,主页地址:http://jexcelapi.sourceforge.net/,通过它开发人员可以动态地读取、写入或者修改Excel文件。
1002 0
Java操作Excel基础--POI之HSSF
做开发几年了,其中经历了一些酸甜苦辣,在这个过程中自己也在不断的调整自己,希望能按指定的目标前进,而不至于因为外界的各种阻力而偏移方向。同时,也经历过很多迷茫和困惑,甚至怀疑这样子的人生会是一个什么结果,但最终还是自己调节一下,继续奋斗。
668 0
+关注
沉默王二
微信搜索「沉默王二」,回复关键字「00」获取硬核计算机基础资料。
1084
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载