zoukankan      html  css  js  c++  java
  • 表达式中的陷阱(分析)

    运算符:java中预定义的进行某种特殊运算符号
    // + — && <<
    表达式
    1.表达式是一种运算符和操作数合成在一 起组成的式子
    运算符需要的操作数数量不相同,a+b a*b a++ ?:
    运算符需要的操作数类型别不相同 a+b A+1 1+1
    2.表达式都有一个结果

    习题:

    (一)、

    int a = 10;

    int b = a+(a=5)+a+(a=10);

    分析:

      10+(a=5)+a+(a=10)     a=10
      10+5+a+(a=10)      a=5
      10+5+5+(a=10)     a=10
      10+5+5+10
    最后:30

    (二)、

    int i = 1;

    i =  ( i = i + ( i + ( i = 2 ) + i ) = i ) +  3 +i

    system.out.println(i);

    分析 :
      i = (i=i+(i+(i=2)+i)+i)+3+i
      i=i+(i+(i=2)+i)+i
      i+(i+(i=2)+i)+i
      1+(i+(i=2)+i)+i i=1
      i+(i=2)+i
      1+(i=2)+i i=2
      1+2+2
      1 + 5 +2 i=8
    最后:i=19

    算数运算:
    算数去处的运行原理
      int a = 1, b=2,c=3
      //a+b+c
      //a+b+c*d
      //a+b*c
      System.out.println(a+b+c*d); 先运算 a+b 然后再运算c*d,再两数相加

    题:

      int a = 1 ;
      int b= 2;
      System.out.println((a=3)+(b=4)+a*b);
    最后:19
      分析 : 先运行3+4 然后a,b,的值改变了,赋值
      3+4 + 3*4
    最后:19

    自增自减运算 ++ --
    int i=1
    System.out.println(i+++i+++i+++i++)


      分析 :i++ + i++ + i++ + i++ i=1
      1 + i++ + i++ + i++ i=2
      1 + 2 + i++ + i++ i=3
      1 + 2 + 3 + i++ i=4
      1 + 2 + 3 + 4 i=4

    最后:10
      int i=1
    System.out.println(i+++++i+i+++++i)
      i++ + ++i + i++ + ++i i=1
      1 + 3 + 3 + 5 12


    ///自动装箱封装类对象判定
    integer a = 1 //integer a = 127 //integer a = 128
    integer b = 1 //integer a = 127 //integer a = 128
    //java自动装箱功能
    //1.首先判断当前值的范围是不是在byte的表示范围内 -128 ~ +127
    2.如果在此范围内,jvm会在内在中创建一个数组,该数组中有256个数
    据是从,-128+127
    //自动装箱的对象,保存在一个静态数组中
    Integer[] nums = new Integer[256];
    Integer a = 1;
    Integer b = 1;
    Integer c = 1;
    //3.如果不在此范围内,每次均new Integer();
    注意:计算机的基本操作单位是byte,不是int ,因为使用量太大,所有做成了
    一个静态(内存消化?)


    综合题:
    byte b =1;
    byte c= 1;
    b= b+1; //int赋值到byte报错
    c++;
    system.out.println(b==c);

    byte b=1;
    byte c=1;
    // b=b+1; //不通过
    c++;
    System.out.println(b==c);
    byte b=1;
    //1.jvm在进行定义的变量初始化时,首先检测右侧的数据自身的数据类型与
    /*左侧的常量的数据类型之间是否存在有可转化的可能性
    2.检测具有可转换性,检测左边的数据类型的范围-128+127
    3.检测左侧数据的值是否在范围内
    4.如果在范围内,自动将左侧的数据转型成左侧的类型
    5.如果不在范围内,报错。
    *
    * */

    三目运算:

    int a = 10;
    double d = 9.5;
    启动开发者:int a>d ? a:d
    jvm: double a>d ? a:d
    system.out.println(a>d ? a:d)
    三目运算是一个表达式,作为一个表达式,应该有一个结果
    这个结果应该有一种唯一确定的数据类型

    欢迎关注小编的公众号,更多学习视频、模板、工具(wind激活工具)!!!

  • 相关阅读:
    上机练习
    myeclipse 快捷键
    关于java classpath问题
    windows installer 出错问题解决
    hibernate 问题
    axis2 部署webservice
    webservice开发
    关于web前端开发
    软件工程工具
    计网笔记
  • 原文地址:https://www.cnblogs.com/1906396809liufg/p/10985086.html
Copyright © 2011-2022 走看看