java表达式陷阱[通俗易懂]

java表达式陷阱

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

以下是一些常见的面试java问题的表达,我将造成直接的形式附加目光。

问题1:
 int a = 10;
        int b = a + (a = 5) + a + (a = 10);
        System.out.println(b);//b = 30


问题2:

   int i = 1;
        i = (i=i+(i+(i=2)+i)+i)+3;
        System.out.println(i);//i = 11


问题3:

 int a = 1;
        int b = 2;
        System.out.println((a = 3) + (b = 4) + a*b);//19


问题4:

System.out.println(-11 % -7);//-4     注:模运算中,第一个操作数提供结果值的符号。第一个和第二个操作数的绝对值取模后作为结果值的绝对值

问题5:

 int i = 1;
        System.out.println(i+++i+++i+++i++);//10    注:1+2+3+4 = 10

问题6:

  int i = 1;
        System.out.println(i++ + ++i+i++ + ++i);//12    注:1+3+3+5 = 12

问题7:

 int i = 1;
        int j = i+++(i=1)+i+++(i=1)+i++;
        System.out.println(j);//j = 5        注:j = 1+1+1+1+1

问题8:

 int a = 10;
        int b = 10;
        double c = 10.0;
        System.out.println(a == b);//true
        System.out.println(a == c);//true

问题9:

System.out.println(3.0*10 == 30.0);//true
        System.out.println(3.141*10 == 31.41);//true
        System.out.println(3.14*10 == 31.4);//false        注:3.14*10 = 31.400000000000002
        System.out.println(3.1415*10 == 31.415);//false        注:3.1415*10 = 31.415000000000003

问题10:

java会将范围在-128~+127(byte的范围)的数放在一个静态数组中缓存,所以仅仅要在此范围内的装箱指向的都是这个数组中的对象,而在此范围外的则需new
        Integer a = 128;
        Integer b = 128;
        Integer c = 127;
        Integer d = 127;
        System.out.println(a == b);//false
        System.out.println(c == d);//true

问题11:

  byte a = 1;
//        byte a = 128//报错。注意byte的范围为-128~127
        byte b = 1;
        a = (byte) (a+1);
        b++;
        System.out.println(a==b);//true

问题12:

System.out.println(true | false & false);//true        注:与运算比或运算优先级高

问题13:

 int a = 10;//0000 0000 0000 0000 0000 0000 0000 1010
        System.out.println(a<<1);//10*2=20
        System.out.println(a<<2);//10*2^2=10*4=40
        System.out.println(a<<32);//10        左移32位(int的大小)之后。回归原来的值
        System.out.println(a<<32L);//10        不会转型。右側操作数只提供左移位数
        long b = 10L;
        System.out.println(b<<1);//20
        System.out.println(b<<2);//40
        System.out.println(b<<64);//10         long为8字节,64位。所以须要左移64位才干循环一圈回到原点
        System.out.println(b<<64L);//10
        byte c = 1;
        System.out.println(c<<1);//2
        System.out.println(c<<2);//4
        System.out.println(c<<8);//256        这里须要注意。c为byte类型,移位操作的操作数最小要求是int类型。byte会转为int
        System.out.println(c<<32);//1        能够把c当成int型


问题14:

  int a = 10;
        a = a<<10;
        a = a<<22;
        int b = 10;
        b = b<<32;
        System.out.println(a);//0        注:第一步左移10位,第二步移动的a并不是原始的a,而是a左移10位之后的a,这次左移22位之后把非零位移到边界之外了,补零之后值变为0
        System.out.println(b);//10        回归原始的10

问题15:

 int a = 10;
        double b = 9.5;
        System.out.println(a>b ? a : b);//10.0        结果会转成double型
        System.out.println(a>b ? 1 : false);   //2         尽管boolean不能转成int,可是自己主动装箱之后能够转成object

问题16:

int a = 1;
        a+=a+=a++;
        System.out.println(a);//3

问题17:

int a = 1;
        a += 3L;//不报错
//        a = a+3L;//报错,高类型转低类型
        System.out.println(a);
        
        int b = 1;
        b += 3.5;            //复杂的算术表达式,自己主动型高意愿变低型
        System.out.println(b);//结果4代替4.5

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/116700.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • C/C++学习路线

    C/C++学习路线随着互联网及互联网+深入蓬勃的发展,经过40余年的时间洗礼,C/C++俨然已成为一门贵族语言,出色的性能使之成为高级语言中的性能王者。而在今天,它又扮演着什么样重要的角色呢?请往下看:后端服务器,移

    2022年8月1日
    6
  • axure 发布后隐藏顶部菜单 或展开顶部菜单[通俗易懂]

    axure 发布后隐藏顶部菜单 或展开顶部菜单[通俗易懂]这样可以实现菜单栏最小化,而且在你鼠标不移动到左上角时,小箭头会隐藏,效果就可以了。axure9.0版本在发布后HTML页面打开时总是在顶部弹出菜单既不美观也影响效果。本人axure小白,摸索半天后发现也不能完全关闭或者不显示(除非代码修改);解决方案就是在请求地址后面拼接。…

    2022年8月19日
    12
  • UML——对象图「建议收藏」

    UML——对象图「建议收藏」UML——对象图

    2022年4月24日
    38
  • COleVariant和VARIANT转换为CString类型

    COleVariant和VARIANT转换为CString类型COleVariant是数据库常用到的数据类型。它可以是字串,整型值,日期等。知道怎样将它转换为CString很有用处。        设有CString A; COleVariant B; 来看看怎样将COleVariant转换为CString:        switch(B.vt){            case VT_BSTR:  A=B.bstrVal; bre

    2022年7月18日
    16
  • BUZZER_人为什么要见世面

    BUZZER_人为什么要见世面官方说法:Google刚刚公布了一个产品——GoogleBuzz。Buzz是最新的社会媒体。这也巩固了Gmail的社会地位。Google的产品管理人员也就是Google的副经理BradleyHorowitz介绍了Buzz。Buzz的主要功能集中于人们所偏爱的实时共享和交流经验等功能。这两大主题是Buzz的核心理念。当你进入Gmail就会有页面带领你了解Buzz。在收件箱的右边会有一个“Buz…

    2022年10月16日
    0
  • vue 路由嵌套_vue多级路由嵌套

    vue 路由嵌套_vue多级路由嵌套嵌套路由有时候在路由中,主要的部分是相同的,但是下面可能是不同的。比如访问首页,里面有新闻类的/home/news,还有信息类的/home/message。这时候就需要使用到嵌套路由。项目结构如下:

    2022年7月29日
    19

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号