教你几个 Java 编程中的奇技淫巧(java编程入门官方教程)

  本篇文章为你整理了教你几个 Java 编程中的奇技淫巧(java编程入门官方教程)的详细内容,包含有java编程技术大全 java编程入门官方教程 java编程神器 java编程入门教程 教你几个 Java 编程中的奇技淫巧,希望能帮助你了解 教你几个 Java 编程中的奇技淫巧。

  枯燥的编程中总得有些乐趣,今天我们不谈论那些高深的技能,教你几个在编程中的奇技淫巧,说不定在某些时候还能炫耀一番呢。

  1、找到最大值和最小值

  不使用 if else switch 和三元运算符,在给定的三元组中找到最大值和最小值:比如给定 3,14,8,在不使用 if else switch 和三元运算符的情况下找到最大值和最小值。

  话不多说,我们先看代码

  

public static int findMax(int a, int b, int c) {

 

   int max = a;

   boolean b1 = (max b) ((max = b)

   b1 = (max c) ((max = c)

   return max;

   public static int findMin(int a, int b, int c) {

   int min = a;

   boolean b1 = (min b) ((min = b)

   b1 = (min c) ((min = c)

   return min;

  

 

  这里我们主要使用了 运算符的短路特性,短路特性是指当 前一个表达式为 true 的时候才会继续执行下一个表达式,当前一个表达式为 false 则不会执行下一个表达式。所以在这里只有当前一个表达式为 true 的时候,后面的赋值语句才会被执行到。

  我们运行一下结果如下

  上面的这种方式入参适合正数和负数,如果当我们的入参能确定为正数的时候,我们还可以使用下面的这种方式来实现

  

 public static int findPositiveMax(int a, int b, int c) {

 

   int max = 0;

   while (a 0 b 0 c 0) {

   a--;

   b--;

   c--;

   max++;

   return max;

   public static int findPositiveMin(int a, int b, int c) {

   int min = 0;

   while (a 0 b 0 c 0) {

   a--;

   b--;

   c--;

   min++;

   return min;

  

 

  上面的这种写法相信大家都能看懂,阿粉就不过的解释了,同样的这里也利用了 和 运算的短路特性,不过要注意这种形式只能在都是正数的情况下才可以。

  2、不使用临时变量交换变量

  swap(x, y) 操作大家都知道,就是交互 x 和 y 的值,比如 x = 3, y = 4; 在经过 swap 操作过后,x = 4,y = 3;我们这里的问题时如何在不使用临时变量的情况下,只有一行代码来实现这个方法。

  首先大家肯定知道这里我们要使用异或运算^,没错,话不多说我们看代码

  

public static void swapByXor(int x, int y) {

 

   System.out.println(x + ":" + y);

   x = x ^ y ^ (y = x);

   System.out.println(x + ":" + y);

  

 

  运行过后,可以看到,x 和 y 的值已经被交换了, 这里我们要知道两个知识点,那就是 n ^ n = 0; n ^ 0 = n,另外a ^ b 和 b ^ a 是等价的。

  当然除了上面的异或之外,我们还可以通过下面这种方法来实现

  

public static void swapByAddAndSub(int x, int y) {

 

   System.out.println(x + ":" + y);

   x = x + y - (y = x);

   System.out.println(x + ":" + y);

   public static void swapByMulAndDiv(int x, int y) {

   System.out.println(x + ":" + y);

   x = (x * y) / (y = x);

   System.out.println(x + ":" + y);

  

 

  这两种方式都是同样的逻辑,先求和在减去其中一个值和先求积再除以一个值,就可以得到两个替换后的值。

  3、两个数相乘

  接下来我们再看一个,求两个数的积,但是不能用乘号*。在看代码之前,我们先分析一下,比如说我们要求积 3 * 5 可以将 3 * 5 看成 3 * 4 + 3,也就是 (3 * 3 + 3) + 3,看到这个可能有的小伙伴已经知道我们要怎么计算了,没错,那就是我们可以用递归。

  

public static int mulWithoutMul(int x, int y) {

 

   if (y == 0)

   return 0;

   if (y 0)

   return (x + mulWithoutMul(x, y - 1));

   return -mulWithoutMul(x, -y);

  

 

  通过上面的递归,我们就可以实现两个数相乘但是没有使用乘号了。

  4、不使用乘号计算乘以 15

  如果我们要计算一个数乘以 15 的时候,我们可以通过下面这种方式来计算,(n 4) - n, 因 n * 15 = n * 16 - n = (n 4) - n;同样的如果我们某些时候要计算乘以 2 或者除以 2 的时候,我们也可以换成移位操作,n * 2 = n 1;n / 2 = n 1,如果是 4 的话就可以左移 2 位或者右移 2 位,即 n * 4 = n 2;n / 4 = n 2;一次类推。

  使用移位的方式,在某些极端的场景可以提升性能。

  程序员必读书单

  
 

  更多优质内容欢迎关注公众号【Java 极客技术】,我准备了一份面试资料,回复【bbbb07】免费领取。希望能在这寒冷的日子里,帮助到大家。

  以上就是教你几个 Java 编程中的奇技淫巧(java编程入门官方教程)的详细内容,想要了解更多 教你几个 Java 编程中的奇技淫巧的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: