java基础学习——数组

                                                        数组

1.什么是数组?

答:数组是最基本的一种数据结构,相同数据类型的元素组成的集合。             程序 = 算法 + 数据结构

(1) 数据结构:把数据按照特定的某种结构来保存,设计合理的数据结构是解决问题的前提,设计良好的数据结构导致良好的算法。

(2)算法:解决问题的步骤 | 流程,先弄数据结构再弄算法。

2.数据中元素按照线性顺序排列,线性顺序指除第一个元素外,每一个元素都有唯一的前驱元素;除最后一个元素外每一个都有唯一的后继元素。

(1)数组的定义与初始化:A   int [] arr = new int[4];     //0,0,0,0

                                         B   int [] arr = {1,3,5,7};      //1,3,5,7

                                         C   int [] arr = new int[]{1,3,5,7};     //1,3,5,7

                                         D   arr = new arr[]{1,3,5,7};   //1,3,5,7

(2)数组的访问:     A  通过.length获取数组的长度

                                                            int []  arr = new int [4];

                                                      System.out.println(arr.length);

                                 B  通过引用下标来访问数组的元素,下标从0开始最大到.length-1

                                                     int    [] arr = new int[4];

                                                     arr[0] = 100;   //给数组arr中第一个元素赋值为100

                                                     arr[4] = 100;  //异常,数组下标越界

                                C  数组的遍历

                                                      int  []arr = new int[4];

                                                      for(int i=0;i                                                                 arr[i]=(int)(Math.Random()*100);

                                                            }

                                                     for(int j=0;j                                                         System.out.println(arr[j]);

                                                           }

                         注意:数组下标越界的错误

(3)基本类型的数组创建后其元素的初始值为:byte,short,char,int,long为0,(其中char的为字节码),float和double为0.0,boolean为false.

3.数组的复制

(1)使用System.arrarcopy()访问可以实现数组的复制。

                                                       public  static void  arraycopy(Object src,int srcPos,Object dest,int destPos,int length).

                        src---源数组                  srcPos---源数组中的起始位置                  dest---目标数组

                       destPos---目标数组的起始位置            length----要复制数组元素的个数  

(2)使用java.util.Arrays类的copyof方法进行复制

                          类型 [ ]     newArray  = Array.copyof(类型[ ].original,int newlength);

                 特点:生成的新数组是原数组的副本。

          newlength小于原数组,则进行截取;newlength大于原数组,则用0或者null进行填充。

例子:

(1) int  [ ] a = new int [ ]{1,2,3,4,5,6};

         int  [ ]  b = new int[10];

          复制:System.arrayCopy(1,0,b,0,5);

(2)int  [ ] a = {1,2,3,4,5};

        复制:int [ ] b = Arrays.copyOf(0,5);

  //扩容(创建一个新的数组a,数据不变,长度为原始长度加一)

        a = Arrays.copyOf(a,a.lenght+1);

 //缩容(创建一个新的数组a,数据不变,长度为原始长度减一)

       a = Arrays.copyOf(a,a.kength-1);

4.数组的排序

(1)一般情况下,通过排序过程中数组元素的交换次数来衡量排序算法的优缺,

(2)常用的排序算法为:插入排序,冒泡排序,快速排序等。

(3)数据不一样,使用不同的排序算法效率不同。

    A  JDK提供的Arrays.sort()方法封装了数组的排序算法,默认为升序。  例如:Array.sort(arr); //arr代表书组名

    B  冒泡原理:n个数只需n-1次,每次都和他的下一个元素比,每次都是从第一个开始,冒出来的数就不带他玩了,(外循环控制轮数,内循环控制每次比的次数)

5.质数(素数):只能执行补1和它本身整除的数

6.并非一次执行就能的大结果的用开关操作(指的是boolean)。    平方根函数  int  a = Math.sqrt(number);

7.方法:
A 封装一段特定的逻辑功能

B 尽可能的独立,一个方法只干一件事

C 代码的复用,便于代码的维护

D 方法可以在程序中反复被调用

1)定义方法的五个要素:修饰词,返回值类型,方法名,参数列表,方法体

                                                  java基础学习——数组_第1张图片

(2)方法的参数是指:在调用时传递给方法,需要方法处理的数据,方法有参数也可以没有参数,有参可以使方法处理更加灵活,在方法定义时,需要声明该方法所需要的参数变量,在方法调用时,会将实际的参数值传递给方法的参数变量,必须保证传递参数的类型和额数符合方法的声明。

3)方法在声明时必须指定返回值的类型

A 若方法不需要返回数据,将返回值类型声明为void

B 若方法需要数据,将返回值类型声明为特定数据类型

(4)有返回值时:return即可以是个具体数,也可以是个表达式

(5)return作用:结束方法且将数据返回给调方,只有return;只是表示结束方法(可在无返回值得方法中调用)

(6)调用方法时的参数传递

                    public  static int max(int a,int b){

                                     }

                            int a = 5;

                            int b= 6;

                    int myMax = max(a,b);

A 为main方法中的变量a,b,myMax分配空间并赋值

B 调用方法max,为max方法的参数变量a,b分配空间

C 将调用值传递到参数变量中

D max方法运行完返回,参数空间释放

E main方法中的myMax变量得到返回值

 


                                                                                                                                              希望得到大神的补充,谢谢大家

 

你可能感兴趣的:(java学习)