黑马程序员_java_10_java数组与常用工具类

------Java培训、Android培训、iOS培训、.Net培训、期待与您交

Java中的数组

Java中的数组用来存储同一种数据类型的数据,数组长度固定,数组中存放的数据必须为同一中类型。数组中每一个元素都有固定的下标值。

数组的定义:

方式一:

int[] arras=new int[4];

声明数组和数组的长度,但是数组里面没有数据。

方式二:

int[] arrass=new int[]{1,2,3,4};

声明数组和数组的长度以及数组里面的内容。

Java中一维数组在内存中存放方式图解:

Java中二维数组在内存中的存放图解:

Java数组中常用方法:

arras.length使用length属性可以获取数组的长度。因为数组的开始的指针为0所以数组最后一个下标值为数组的长度减一。

数组继承与Object类所以数组中有Object类中的所有公用方法。

数组的赋值:

数组的赋值方式分为两种:

第一种方式就是在初始化数组的时候就给数组赋值。

int[] arrass=new int[]{1,2,3,4};

第二种方式为在数组初始化的时候只定义数组的存储类型,和数组的长度。

在给数组赋值:

 int[]arras=new int[4];
      
       arras[0]=1;
       arras[1]=2;
       arras[2]=3;
       arras[3]=4;

数组中取值方式:

可以使用角标值取出特定角标位置的值上面赋值方式一致。

Int a= arras[2];

也可以使用for循环遍历整个数组取出数组中所有的值:

int[]arras=new int[4];
      
       arras[0]=1;
       arras[1]=2;
       arras[2]=3;
       arras[3]=4;
      
       for(inti=0;i<arras.length;i++){
              System.out.println(i);
       }

数组中的排序方式:

冒泡排序方法:

冒泡排序方法为数组中相邻元素进行进行比较,比较第一次把数组中最大的值放在了数组的最后位置,比较第二次把数组中第二大的值放在了数组的倒数第二个位置。

以此循环往复,一直把数组中的全部数据从最后排序到前端,也就是一共对数组中的数据进行了数组长度-1此的比较。

数组元素之间的比较也根据数组比较的次数而变小,数组元素比较的次数为数组长度-1-数组比较的次数,

冒泡排序方法图解:

代码实例:

     

  /**
        * 冒泡排序
        * 外循环控制一共对数组进行了多少次的比较
        * 内循环控制一共对数组元素之间进行了多少次的比较。
        */
       int temp;
       for(intj=0;j<arras.length-1;j++){
             
       for(inti=0;i<arras.length-1-j;i++){
              if(arras[i]>arras[i+1]){
                     temp=arras[i];
                     arras[i]=arras[i+1];
                     arras[i+1]=temp;
              }
       }
       }

运行结果如下图所示:

Java中操作数组的工具类:

Arrays类用来操作数组在类中实现了一下常用的操作数组的方法:

比如对数组经行排序:

使用:static void sort(int[] a)

  即可对数组a进行排序

此方法在Arrays类中有很多重载方法,不仅可以对基本类型的数组进行排序,还可以对object类型的数据进行排序:

在对object类型的数据进行排序的时候数组中存放的所有元素都必须实现 Comparable 接口。假如用户想要按照自己定义的规则进行排序,则必须重写Comparable接口中compareTo方法。

对数组进行查找的方法:

public static int binarySearch(byte[] a,byte key)

该方法使用二分搜索法来搜索指定的数组,以获得指定的值的下标值。

注意:使用该方法查找指定的值的数组必须经过排序以后才能够使用,否则查找出来的坐标值不正确。

若数组中查找的值存在两个或多个,则返回最后一个值出现的下标值的位置。

若数组中不包含要查找的值则返回负数。返回的负数为当该值如果存在时的下标值-1;

数组的复制:

使用Arrays中的copyOf(short[] original, int newLength)

         复制指定的数组,截取或用 0 填充(如有必要),以使副本具有指定的长度。

把数组复制到新的数组中,返回新的数组

使用arrays中的static byte[] copyOfRange(byte[] original,int from, int to)

         将指定数组的指定范围复制到一个新数组。

可以把数组中的某一段数据复制到新的数组当中去。

StringBuffer类的使用;

StringBuffer类是用来操作字符串的字符串缓存区类。

该类为线程安全的,可用与多线程中,但是由于线程安全机制,此类运行效率低。

该类中的常用方法:

append(char  c)

将字符c插入到字符串的结尾初。该方法有很多重载方法,可以将字符数组,和字符数组中的一段数据插入到该缓冲区中。

StringBuffer insert(int offset, char c)

         将 char 参数的字符串表示形式插入此序列中。

将字符c插入到该字符缓存区的offset下标位置。

该方法有多个重载方法可以将基本数据类型,char[]数组,和object和String类型的数据插入到StringBuffer中去。

StringBuffer

reverse()
将此字符序列用其反转形式取代。

使用reverse()方法可以将字符串进行反转。

StringBuilder类的使用介绍:

StringBuilder类和StringBuffer类功能上一致,但是该类为线程不同步的,运行在多线程中会出现线程安全问题,但是该类的执行效率要比StringBuffer类要高。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值