JavaRush /Java 博客 /Random-ZH /Java中的数字运算

Java中的数字运算

已在 Random-ZH 群组中发布
你好!今天我们来看看一个非常重要的话题,即Java中的数字运算。数字在编程中无处不在。如果您深入研究学校课程,您会记得计算机上的所有信息都是以数字格式(零和一的组合)呈现的,也称为二进制代码。 Java 中的数字运算 - 2编程中有很多关于数字的操作,因此我们将通过示例来了解其中最重要的操作:)

算术运算

让我们从最简单的事情开始——算术运算。这些是众所周知的加法(+)、减法(-)、乘法(*)和除法(/)。
public class Main {

   public static void main(String[] args) {

       int x = 999;
       int y = 33;

       System.out.println(x+y);
       System.out.println(x-y);
       System.out.println(x*y);
       System.out.println(x/y);
   }
}
控制台输出:

1032
966
32967
30
这些你都已经用过了。您可以向它们添加一个操作%- 除法的余数。
public class Main {

   public static void main(String[] args) {

       int x = 33;
       int y = 33%2;
       System.out.println(y);
   }
}
控制台输出:

1
在这个例子中,我们将 33 除以 2。结果,我们得到 16,并且还剩下一个不能被 2 - 1 整除的额外“尾巴”。这个“尾巴”将是“除法余数”运算的结果。Java(以及数学)实现比较运算符。您可能在学校也认识他们:
  • 等于 (==
  • 更多的 (>
  • 较少的 (<
  • 大于或等于 ( >=)
  • 小于或等于 ( <=)
  • 不等于 ( !=)
这里值得注意的是许多初学者都会犯错误的一个重要点。运算“等于”写为==,并且没有一个符号=。Java 中的单位符号=是一个赋值运算符,其中一个变量被赋予一个数字、字符串或另一个变量的值。 Java 中的数字运算 - 3
public class Main {

   public static void main(String[] args) {

       int x = 33;
       int y = 999;
       System.out.println(x=y);// expect false to be printed to the console
   }
}
控制台输出:

999
哎呀!这显然不是我们所期望的结果。这是一种完全不同类型的数据:我们期望看到boolean,但得到的是数字。这是因为括号中我们进行的是赋值操作,而不是比较操作。 x=yy(999) 被分配给变量x,然后我们将其打印x到控制台。正确选项:
public class Main {

   public static void main(String[] args) {

       int x = 33;
       int y = 999;
       System.out.println(x==y);
   }
}
控制台输出:

false
现在我们已经正确比较了两个数字!:) 赋值操作 ( =) 的另一个特点是它可以“链式”完成:
public class Main {

   public static void main(String[] args) {

       int x = 999;
       int y = 33;
       int z = 256;

       x = y = z;
       System.out.println(x);
   }
}
控制台输出:

256
请记住:分配是从右到左进行的。该表达式 ( x = y = z) 将分步骤执行:
  • y = z,即 y = 256
  • x = y,即 x = 256

一元运算

它们被称为“unary”,源自单词“uno”——“一个”。他们之所以得到这个名字,是因为与以前的不同,他们是在一个号码上进行的,而不是在多个号码上进行的。这些包括:
  • 一元减。它反转数字的符号。

    public class Main {
    
       public static void main(String[] args) {
    
           int x = 999;
    
           // change the sign for the first time
           x = -x;
           System.out.println(x);
    
           // change the sign a second time
           x= -x;
           System.out.println(x);
       }
    }

    控制台输出:

    
    -999
    999

    我们使用了一元减号两次。结果我们的数字先是负数,然后又变成正数了!

  • 递增 ( ++) 和递减 ( --)

    一次操作++将数字加一,一次操作--将数字减少相同的单位。

    public class Main {
    
       public static void main(String[] args) {
    
           int x = 999;
           x++;
           System.out.println(x);
    
           x--;
           System.out.println(x);
       }
    }

    控制台输出:

    
    1000
    999
如果您听说过 C++ 语言,您可能会熟悉这种表示法。借助这样一个有趣的名字,它的创建者传达了他们的想法:“C++是C语言的扩展。” 记事本的一个流行改进版本称为 Notepad++ 很重要的一点。自增和自减操作有两种类型:后缀和前缀。 x++- 后缀表示法 ++x- 前缀表示法 如果将加号和减号放在数字之前或之后,根本区别是什么?让我们看一个例子:
public class Main {

   public static void main(String[] args) {

       int x = 999;
       int y = x++;
       System.out.println(y);
   }
}
控制台输出:

999
有什么不对!我们想要加x1 并为变量分配一个新值y。即y应该等于1000。但是我们得到了不同的结果——999。原来并x没有增加,增量操作不起作用?它是如何运作的。要验证这一点,请尝试在最后将 x 打印到控制台:)
public class Main {

   public static void main(String[] args) {

       int x = 999;
       int y = x++;
       System.out.println(y);
       System.out.println(x);
   }
}
控制台输出:

999
1000
事实上,这就是后缀操作被这样调用的原因:它在主表达式之后执行。也就是说,在我们的例子中: int y = x++; 首先它被执行 y = x(变量 y 将被赋予其原始值x),然后才被执行 x++ 。如果我们对此行为不满意怎么办?您需要使用前缀表示法:
public class Main {

   public static void main(String[] args) {

       int x = 999;
       int y = ++x;
       System.out.println(y);
   }
}
在这种情况下,它会首先起作用 ++x ,并且只有在那之后才起作用。 y = x; 这种差异值得立即记住,以免在实际程序中犯错误,其中所有行为都可能因此而颠倒:)

联合经营

另外,Java中还有所谓的组合操作。他们使用两种操作的组合:
  • 任务
  • 算术运算
这包括操作:
  • +=
  • -=
  • *=
  • /=
  • %=
让我们看一个例子:
public class Main {

   public static void main(String[] args) {

       int x = 999;
       int y = 33;

       x += y;
       System.out.println(x);
   }
}
控制台输出:

1032
x += y方法x = x + y。只是为了简洁起见,使用了连续的两个字符。这也适用于-=*=/=和的组合%=

逻辑运算

除了对数字的操作之外,Java 还对布尔变量 -true和进行操作false。这些操作是使用逻辑运算符执行的
  • !—“非”运算符。反转布尔变量的值

    public class Main {
    
       public static void main(String[] args) {
    
           boolean x = true;
           System.out.println(!x);
       }
    }

    控制台输出:

    
    false

  • &&— 运算符“AND”。true仅当两个操作数均为 时才返回值true

    public class Main {
    
       public static void main(String[] args) {
    
           System.out.println(100 > 10 && 100 > 200);
           System.out.println(100 > 50 && 100 >= 100);
       }
    }

    控制台输出:

    
    false
    true

    第一个运算的结果是false,因为其中一个条件为假,即 100 > 200。该运算符要求所有条件都为真(例如第二行)&&才能返回。true

  • ||—“或”运算符。true当至少一个操作数为 true 时返回。

    我们之前的示例的工作方式有所不同:

    public class Main {
    
       public static void main(String[] args) {
    
           System.out.println(100 > 10 || 100 > 200);
       }
    }

    控制台输出:

    
    true

    Выражение 100 > 200 по-прежнему ложно, но оператору “or” вполне достаточно, что первая часть (100 > 10) является истинной.

评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION