晨起一刻【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]
}
}