晨起一刻-码农的每日积累-小代码块-第一期

129 阅读1分钟

晨起一刻【2020-09-20】小代码

float f=3.4;是否正确?

不正确 3.4是双精度数,将双精度型(double)赋值给浮点型(float)属于下转型(down-casting,也称为窄化)会造成精度损失,因此需要强制类型转换float f =(float)3.4; 或者写成float f =3.4F;。

short s1 = 1; s1 = s1 + 1;有错吗? short s1 = 1; s1 += 1;有错吗?

对于short s1 = 1; s1 = s1 + 1;由于1是int类型,因此s1+1运算结果也是int 型,需要强制转换类型才能赋值给short型。而short s1 = 1; s1 += 1;可以正确编译,因为s1+= 1;相当于s1 = (short)(s1 + 1);其中有隐含的强制类型转换。


晨起一刻【2020-09-19】小代码 几行代码的冒泡排序

冒泡排序核心思想就是: 比较相邻的元素,如果第一个比第二个大,就交换他们两个位置,大的始终保持在右侧。

  /**
   * 冒泡排序方法
   *
   * @param targArr 需要排序的数据
   */
  public static void bubbleSort(int[] targArr) {

    for (int i = 0; i < targArr.length - 1; i++) {

      for (int j = 0; j < targArr.length - 1 - i; j++) {

        int a = targArr[j];

        int b = targArr[j + 1];

        if (a > b) {
          // 如果左边的数大于右边的数,则交换,保证右边的数字最大

          targArr[j + 1] = a;
          targArr[j] = b;

        }
      }
    }
  }

测试用例

@SpringBootTest
class DemoBubbleSortTests {

  //日志
  private static final Logger LOG = LoggerFactory.getLogger(DemoBubbleSortTests.class);

  @Test
  void test() {

    ///定义数据
    int[] testArray = {5, 2, 9, 8};

    LOG.info("排序前 " + Arrays.toString(testArray));// [5, 2, 9, 8]
    //冒泡排序方法 排序一下
    bubbleSort(testArray);

    LOG.info("排序后 " + Arrays.toString(testArray));//[2, 5, 8, 9]
  }

}

晨起一刻【2020-09-18】代码小片段

在这里插入图片描述


晨起一刻【2020-09-17】代码小片段

在这里插入图片描述 原因分析 在这里