欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

教你幾個?Java?編程中使用技巧

 更新時間:2022年12月13日 10:08:28   作者:子悠  
枯燥的編程中總得有些樂趣,今天我們不談論那些高深的技能,教你幾個在編程中的奇技淫巧,說不定在某些時候還能炫耀一番呢,今天小編教你幾個?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) > 0);
    b1 = (max < c) && ((max = c) > 0);
    return max;
  }

  public static int findMin(int a, int b, int c) {
    int min = a;
    boolean b1 = (min > b) && ((min = b) > 0);
    b1 = (min > c) && ((min = c) > 0);
    return min;
  }

這里我們主要使用了&& 運算符的短路特性,短路特性是指當 && 前一個表達式為 true 的時候才會繼續(xù)執(zhí)行下一個表達式,當前一個表達式為 false 則不會執(zhí)行下一個表達式。所以在這里只有當前一個表達式為 true 的時候,后面的賦值語句才會被執(zhí)行到。

我們運行一下結(jié)果如下

上面的這種方式入?yún)⑦m合正數(shù)和負數(shù),如果當我們的入?yún)⒛艽_定為正數(shù)的時候,我們還可以使用下面的這種方式來實現(xiàn)

  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;
  }

上面的這種寫法相信大家都能看懂,阿粉就不過的解釋了,同樣的這里也利用了&& 和 || 運算的短路特性,不過要注意這種形式只能在都是正數(shù)的情況下才可以。

2、不使用臨時變量交換變量

swap(x, y) 操作大家都知道,就是交互 x 和 y 的值,比如 x = 3, y = 4; 在經(jīng)過 swap 操作過后,x = 4,y = 3;我們這里的問題時如何在不使用臨時變量的情況下,只有一行代碼來實現(xiàn)這個方法。

首先大家肯定知道這里我們要使用異或運算^,沒錯,話不多說我們看代碼

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 的值已經(jīng)被交換了, 這里我們要知道兩個知識點,那就是 n ^ n = 0; n ^ 0 = n,另外a ^ b 和 b ^ a是等價的。

當然除了上面的異或之外,我們還可以通過下面這種方法來實現(xiàn)

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、兩個數(shù)相乘

接下來我們再看一個,求兩個數(shù)的積,但是不能用乘號*。在看代碼之前,我們先分析一下,比如說我們要求積 3 * 5 可以將 3 * 5 看成 3 * 4 + 3,也就是 (3 * 3 + 3) + 3,看到這個可能有的小伙伴已經(jīng)知道我們要怎么計算了,沒錯,那就是我們可以用遞歸。

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);
  }

通過上面的遞歸,我們就可以實現(xiàn)兩個數(shù)相乘但是沒有使用乘號了。

4、不使用乘號計算乘以 15

如果我們要計算一個數(shù)乘以 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 編程中使用技巧的文章就介紹到這了,更多相關Java 編程使用技巧內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • SpringBoot快速整合SpringSecurity的詳細步驟(新手都會!)

    SpringBoot快速整合SpringSecurity的詳細步驟(新手都會!)

    日 Spring Security 是針對Spring項目的安全框架,也是Spring Boot底層安全模塊默認的技術(shù)選型,他可以實現(xiàn)強大的Web安全控制,下面這篇文章主要給大家介紹了關于SpringBoot快速整合SpringSecurity的詳細步驟,需要的朋友可以參考下
    2023-03-03
  • Java中@Autowired與@Resource注解的區(qū)別詳解

    Java中@Autowired與@Resource注解的區(qū)別詳解

    這篇文章主要介紹了Java中@Autowired與@Resource注解的區(qū)別詳解,@Resource的作用相當于@Autowired,只不過@Autowired按byType自動注入,而@Resource默認按 byName自動注入罷了,@Resource有兩個屬性是比較重要的,需要的朋友可以參考下
    2023-11-11
  • java中Memcached的使用實例(包括與Spring整合)

    java中Memcached的使用實例(包括與Spring整合)

    這篇文章主要介紹了java中Memcached的使用實例(包括與Spring整合),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Java語言ReadWriteLock特性實例測試

    Java語言ReadWriteLock特性實例測試

    這篇文章主要介紹了Java語言ReadWriteLock特性實例測試,分享了相關代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-02-02
  • 解決mybatis-plus自定義xml的坑

    解決mybatis-plus自定義xml的坑

    這篇文章主要介紹了解決mybatis-plus自定義xml的坑,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • springboot日志切面通用類實例詳解

    springboot日志切面通用類實例詳解

    這篇文章主要介紹了springboot日志切面通用類,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • 解析mybatis-plus中的resultMap簡單使用

    解析mybatis-plus中的resultMap簡單使用

    mybatis-plus也只是聽過,可是終究沒有使用過。于是自己花幾天晚上的時間研究mybatis-plus的使用。這篇文章主要介紹了mybatis-plus的resultMap簡單使用,需要的朋友可以參考下
    2021-11-11
  • javax.servlet不存在的解決辦法

    javax.servlet不存在的解決辦法

    今天在關于servlet的編譯中出現(xiàn)了一下小小的錯誤,發(fā)現(xiàn)javax.servlet不存在,本文就介紹一下解決方法,感興趣的可以了解一下
    2021-07-07
  • 如何解決Mybatis-plus中@TableLogic注解失效問題

    如何解決Mybatis-plus中@TableLogic注解失效問題

    這篇文章主要介紹了如何解決Mybatis-plus中@TableLogic注解失效問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • java代碼關閉tomcat程序及出現(xiàn)問題解析

    java代碼關閉tomcat程序及出現(xiàn)問題解析

    這篇文章主要介紹了java代碼關閉tomcat程序 及出現(xiàn)問題解析,本文通過實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2019-05-05

最新評論