JAVA基础再回首(十一)——数组高级(冒泡排序和选择排序)、Arrays类、基本类型包装类、Integer类

JAVA基础再回首(十一)——数组高级(冒泡排序和选择排序)、Arrays类、基本类型包装类、Integer类

写完了博客,我又到文章的开头和你们说点题外话。
昨天说了所谓情商高,就是懂得好好说话。今天我还想说一下,所谓情商高,就是要有分寸感。这算是昨天的续集吧。
所谓情商高,就是要把别人放在心上。
观察我们身边那些特别给人好感的人,也都有一种让人舒服的分寸感。很多时候,幽默和刻薄就在一线之间,牛逼的人可以掌握一种微妙的平衡。
我们可能做不到那么高级,但至少可以学习一些基本规则,起码做到不让对方难堪吧。

  • 不要觉得混熟了,就可以随便开玩笑,每个人的底线不一样。
  • 当别人自黑的时候,不要去附和。
  • 不必对异性拘谨,但要保持界限。(大家都是成年人了,要懂得友情是有边界的,随意越界的人,真的是人品有问题。)
  • 既然你说了“随便”,让别人做了决定,那你就不要瞎比比。
  • 不要随便评价别人的生活方式。(生活方式是没有标准答案的。我很赞同当年明月的话,所谓成功,就是以自己的方式过一生。每个人都有选择自己生活方式的权利,不要把你的价值观强加给别人。)
  • 不要好为人师,在别人做事的时候指手画脚。(既然你选择了让别人做,就尊重对方,信任对方,不然的话,你行你上啊!)
  • 你提了问,别人给了一个模糊的答案,就不要再追问了。
  • 讲自己状况的时候,尽量避开对方的痛点。
  • 其实,说话处事有没有分寸感,不取决于你的感受,而取决于对方的感受。

希望你在人生的道路中,你收获的不仅仅只是技术,还有更多你想要的,但是没有付出,那来收获。记得天道酬勤,既然不能改变世界,那就改变自己吧!让自己强大。

我们继续来学习java的常用类

数组高级(排序)

  • 排序
    • 冒泡排序
      • 相邻元素两两比较,大的往后放,第一次完毕,最大值出现在了最大索引处.同理,即可得到排好序的数组
    • 选择排序
      • 从0索引开始,依次和后面元素比较,小的往前放,第一次完毕,最小值出现在了最小索引处

我们来一起做一个练习

    //数组排序之冒泡排序
    public class ArrayDemo {
    public static void main(String[] args) {
        // 定义一个数组
        int[] arr = { 24, 69, 80, 57, 13 };
        System.out.println("排序前:");
        printArray(arr);

        bubbleSort(arr);
        System.out.println("排序后:");
        printArray(arr);
    // 遍历功能
    public static void printArray(int[] arr) {
        System.out.print("[");
        for (int x = 0; x < arr.length; x++) {
            if (x == arr.length - 1) {
                System.out.print(arr[x]);
            } else {
                System.out.print(arr[x] + ", ");
            }
        }
        System.out.println("]");
    }

    //冒泡排序代码
    public static void bubbleSort(int[] arr){
        for (int x = 0; x < arr.length - 1; x++) {
            for (int y = 0; y < arr.length - 1 - x; y++) {
                if (arr[y] > arr[y + 1]) {
                    int temp = arr[y];
                    arr[y] = arr[y + 1];
                    arr[y + 1] = temp;

                }
            }
        }
    }
}

输出结果:这里写图片描述
其实他的原理很简单:

  • 在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,将最大的数放到了最后。
  • 在第二趟:仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数)将小数放前,大数放后,一直比较到倒数第二个数(倒数第一的位置上已经是最大的),第二趟结束,在倒数第二的位置上得到一个新的最大数(其实在整个数列中是第二大的数)。如此下去,重复以上过程,直至最终完成排序。
    //数组排序之选择排序
    //我们在上面的Demo中,只需用把上面冒泡排序的方法换成下面我们选择排序的方法
    public static void selectSort(int[] arr){
        for(int x=0; x<arr.length-1; x++){
            for(int y=x+1; y<arr.length; y++){
                if(arr[y] <arr[x]){
                    int temp = arr[x];
                    arr[x] = arr[y];
                     arr[y] = temp;
                }
            }
        }
    }

可以看到输出结果和上面的结果相同。
这个思路很简单,把第一个元素依次和后面的所有元素进行比较。第一次结束后,就会有最小值出现在最前面。依次类推

我们一起在做一个练习题。 把字符串中的字符进行排序。举例:”dacgebf”。结果:”abcdefg”

//首先我们将一个字符串"dacgebf"经过排序后成为"abcdefg"下面先来分析一下
//1.定义一个字符串  2.把字符串转换为字符数组  3.把字符数组进行排序  4.把排序后字符数组转成字符串  5.输出最后的字符串  思路明确,赶紧书写

public class ArrayTest {
    public static void main(String[] args) {
        // 定义一个字符串
        String s = "dacgebf";
        // 把字符串转换为字符数组
        char[] chs = s.toCharArray();
        // 把字符数组进行排序
        bubbleSort(chs);
        //把排序后的字符数组转成字符串
        String result = String.valueOf(chs);
        //输出最后的字符串
        System.out.println("result:"+result);
    }
    // 冒泡排序
    public static void bubbleSort(char[] chs) {
        for (int x = 0; x < chs.length - 1; x++) {
            for (int y = 0; y < chs.length - 1 - x; y++) {
                if (chs[y] > chs[y + 1]) {
                    char temp = chs[y];
                    chs[y] = chs[y + 1];
                    chs[y + 1] = temp;
                }
            }
        }
    }
}

是不是感觉在这个Demo中,思路明确了,直接用我们上面的那个冒泡方法就可以完成我们想要的结果了。
所以冒泡排序很有必要掌握,因为我以前在面试的时候就遇到过,要求写出冒泡排序。

Arrays类概述及其常用方法

  • Arrays类概述
    • 针对数组进行操作的工具类。
    • 提供了排序,查找等功能。
  • 成员方法
    • public static String toString(int[] a):把数组转成字符串
    • public static void sort(int[] a):对数组进行排序
    • public static int binarySearch(int[] a,int key):二分查找
public class ArraysDemo {
    public static void main(String[] args) {
        // 定义一个数组
        int[] arr = { 24, 69, 80, 57, 13 };

        // public static String toString(int[] a) 把数组转成字符串
        System.out.println("排序前:" + Arrays.toString(arr));

        // public static void sort(int[] a) 对数组进行排序
        Arrays.sort(arr);//底层是快速排序,了解就可以了
        System.out.println("排序后:" + Arrays.toString(arr));

        // [13, 24, 57, 69, 80]
        // public static int binarySearch(int[] a,int key) 二分查找
        System.out.println("binarySearch:" + Arrays.binarySearch(arr, 57));
        System.out.println("binarySearch:" + Arrays.binarySearch(arr, 577));
    }
}

输出结果:这里写图片描述

基本类型包装类概述


  • 将基本数据类型封装成对象的好处在于可以在对象中定义更多的功能方法操作该数据。
  • 常用的操作之一:用于基本数据类型与字符串之间的转换。
  • 基本类型和包装类的对应
    • byte —-Byte
    • short —- Short
    • int —- Integer
    • long —- Long
    • float —- Float
    • double —- Double
    • char —- Character
    • boolean —- Boolean

有了基本类型包装类我们就可以调方法、调成员变量了,方便了很多。
上车上车,我要继续开车了。

Integer类概述及其构造方法

  • Integer类概述
    • Integer 类在对象中包装了一个基本类型 int 的值
    • 该类提供了多个方法,能在 int 类型和 String 类型之间互相转换,还提供了处理 int 类型时非常有用的其他一些常量和方法
  • 构造方法
    • public Integer(int value)
    • public Integer(String s)
    • 注意:这个字符串必须是由数字字符组成
public class IntegerDemo {
    public static void main(String[] args) {
        // 方式1
        int i = 100;
        Integer ii = new Integer(i);
        System.out.println("ii=" + ii);//ii=100

        // 方式2
        String s = "100";
        Integer iii = new Integer(s);
        System.out.println("iii=" + iii);//iii=100
    }
}

我们开车去看int类型和String类型的相互转换

  • int 转 String
    • String.valueOf(number)
  • String 转 int
    • Integer.parseInt(s)

知道了开车技巧,还不去开两圈

public class IntegerDemo {
    public static void main(String[] args) {
        // int -- String
        int number = 100;
        // 方式1
        String s1 = "" + number;
        System.out.println("s1:" + s1);
        // 方式2
        String s2 = String.valueOf(number);
        System.out.println("s2:" + s2);
        // 方式3
        // int -- Integer -- String
        Integer i = new Integer(number);
        String s3 = i.toString();
        System.out.println("s3:" + s3);
        // 方式4
        // public static String toString(int i)
        String s4 = Integer.toString(number);
        System.out.println("s4:" + s4);
        System.out.println("-----------------");

        // String -- int
        String s = "100";
        // 方式1
        // String -- Integer -- int
        Integer ii = new Integer(s);
        // public int intValue()
        int x = ii.intValue();
        System.out.println("x:" + x);
        //方式2
        //public static int parseInt(String s)
        int y = Integer.parseInt(s);
        System.out.println("y:"+y);
        //方式3
        int z = Integer.valueOf(s);
        System.out.println("z:"+z);
    }
}

是不是很意外,竟然有这个多种方法可以让int和String互相转换。
所以我们在开发中要善于总结,你总会有收获的。
输出结果就不说了,都一样。

其实上面那些方法都属于Integer的成员方法

  • Integer类成员方法
    • public int intValue()
    • public static int parseInt(String s)
    • public static String toString(int i)
    • public static Integer valueOf(int i)
    • public static Integer valueOf(String s)

在Integer类的成员方法中不仅仅只有上面5中,还有以下几种:


  • 常用的基本进制转换
    • public static String toBinaryString(int i)
    • public static String toOctalString(int i)
    • public static String toHexString(int i)
  • 十进制到其他进制
    • public static String toString(int i,int radix)
  • 其他进制到十进制
    • public static int parseInt(String s,int radix)

不多说,开车练习

public class IntegerDemo {
    public static void main(String[] args) {
        // 十进制到二进制,八进制,十六进制
        System.out.println(Integer.toBinaryString(100));
        System.out.println(Integer.toOctalString(100));
        System.out.println(Integer.toHexString(100));
        System.out.println("-------------------------");

        // 十进制到其他进制
        System.out.println(Integer.toString(100, 10));
        System.out.println(Integer.toString(100, 2));
        System.out.println(Integer.toString(100, 8));
        System.out.println(Integer.toString(100, 16));
        System.out.println(Integer.toString(100, 5));
        System.out.println(Integer.toString(100, 7));
        System.out.println(Integer.toString(100, -7));
        System.out.println(Integer.toString(100, 70));
        System.out.println(Integer.toString(100, 1));
        System.out.println(Integer.toString(100, 17));
        System.out.println(Integer.toString(100, 32));
        System.out.println(Integer.toString(100, 37));
        System.out.println(Integer.toString(100, 36));
        System.out.println("-------------------------");

        //其他进制到十进制
        System.out.println(Integer.parseInt("100", 10));
        System.out.println(Integer.parseInt("100", 2));
        System.out.println(Integer.parseInt("100", 8));
        System.out.println(Integer.parseInt("100", 16));
        System.out.println(Integer.parseInt("100", 23));
    }
}

输出结果:这里写图片描述
从上面的结果中我们可以得到一个结论:
那就是进制的范围:2-36
为什么呢?因为在进制中的数是由,0~9,a~z组成的,刚好36个。


今天的车就开到这里,让我们休息一下,明天再战。
欢迎有兴趣的同学加我朋友的QQ群:555974449
我在群里等你。

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
### 回答1: Java中的Arrays提供了一个sort方法,可以用来对数组进行排序。该方法可以对任何类型数组进行排序,包括基本数据类型和对象类型。 使用Arrays的sort方法进行数组排序非常简单,只需要将要排序数组作为参数传递给sort方法即可。例如,对一个整型数组进行排序的代码如下: int[] arr = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3}; Arrays.sort(arr); 在上面的代码中,我们定义了一个整型数组arr,并将其初始化为一个无序的数组。然后,我们调用Arrays的sort方法对该数组进行排序排序后,数组arr中的元素将按照从小到大的顺序排列。 需要注意的是,Arrays的sort方法会改变原始数组的顺序,因此在排序之前需要备份原始数组,以免数据丢失。此外,如果要对对象数组进行排序,需要保证对象实现了Comparable接口或者传递一个Comparator对象作为参数。 总之,Arrays的sort方法是Java中非常实用的一个方法,可以方便地对数组进行排序。 ### 回答2: Java是一种功能强大且广泛使用的编程语言,ArraysJava提供的一个工具,其中sort方法是该中最常用的方法之一 ,主要用于数组排序数组排序可以使数列按照一定规则进行排序,使其便于查找和使用。Arrays中的sort方法可以将数组按照从小到大或从大到小的顺序进行排序,以便于使用。使用该方法需要注意以下几点。 1. 参数形式 该方法有两个参数形式:sort(int[] array)和sort(Object[] array)。第一个参数形式适用于整型数组,且数组中的元素应全部为整型。第二个参数形式适用于任意类型的对象数组。使用该方法应根据实际情况选择适当的参数形式。 2. 排序顺序 sort方法默认按照升序(从小到大)的顺序排序数组。如果需要按降序(从大到小)排序,需要使用Arrays中提供的另一个重载方法sort(int[] array, int fromIndex, int toIndex, Comparator<? super Integer> c),并指定Comparator对象的方法来定义排序规则。 3. 排序性能 sort方法采用快速排序算法来进行排序,其时间复杂度为O(nlogn)。在排序大型数组时,该方法的效率较高,但在排序小型数组时,容易出现效率问题。因此,在对小型数组进行排序时,可使用Arrays中提供的另一个重载方法sort(int[] a, int fromIndex, int toIndex),该方法采用插入排序算法来进行排序,其时间复杂度为O(n^2),但在小型数组中的效率更高。 以上三点是Java数组Arrayssort方法之数组排序时需要注意的问题。在使用sort方法时,还需要根据实际情况灵活使用,以实现最佳的排序效果。 ### 回答3: java数组是一种能够存储一组具有相同数据类型的元素的结构。在实际开发中,我们经常需要对数组进行排序操作,以实现更高效的数据处理。java提供了一种极其方便的数组排序方式,通过调用arrays的sort方法,可以对数组进行快速排序arraysjava.util包中的一个,主要提供了一系列与数组相关的操作方法。其中sort方法可以对数组进行排序,具体使用方法如下: ```java public static void sort(int[] a) //排序一个数组 public static void sort(int[] a, int fromIndex, int toIndex) //对一个数组的一部分进行排序 ``` 其中,第一个方法的参数是一个一维数组,该方法将会对整个数组进行排序;第二个方法的参数是一个一维数组、一个起始索引和一个结束索引。通过指定数组的起始和结束索引,可以仅对数组中的一部分元素进行排序。 在使用sort方法时,需要注意的是,排序前需要保证数组已经存储了需要排序的数据。如果数组中存在null元素,sort方法将会抛出NullPointerException异常。如果元素不是可比较类型,例如数组中存储了自定义的对象类型,sort方法将会抛出ClassCastException异常。 sort方法使用快速排序算法实现,具有较好的时间复杂度和空间复杂度。在实际开发中,常用的数组排序方式包括冒泡排序、插入排序、快速排序、归并排序等,每种排序方式都有不同的使用场景和优缺点。在使用sort方法时,需要根据实际情况选择合适的排序方式。 总之,arrays的sort方法提供了一种便捷的数组排序方式,可以大大提升java的数据处理效率。在实际应用中,我们可以根据需求和数据规模等因素,选择合适的排序方式,以实现更高效的数据处理。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值