美文网首页
JAVASE-DAY06

JAVASE-DAY06

作者: 某某宝 | 来源:发表于2019-04-29 08:35 被阅读0次

纲要:

一、可变参数:参数的个数不确定,可以是0个可以是多个,参数的数据类型必须相同

可变参数必须要写在参数列表的最后:(... ,数据类型 ... 参数名-->可变参数)

操作可变参数,要通过使用数组的方式,编译器会隐式的在内部为我们构建一个数组,存储可变参数的值

二、数组排序与查询

1. 数组:

例如数组int[] arr={9,10,5,7,4}

1.1冒泡排序: 没两个数之间进行比较,找到一个最小的或者最大的进行交换,把它放在这一轮的最后一个位置

i=1~arr.length-1    两个数中的第一个j的变化范围

第一轮: 9,5,7,4,10  [0,arr.length-1)  能确定一个最大值,放在最后,下一轮不用比较

第二轮: 5,7,4,9 [0,arr.length-2) 

第三轮: 5,4,7 [0,arr.length-3) 

第四轮: 4,5 [0,arr.length-4)

//外层循环控制比较轮数  1~arr.length-1 比如5个数,比较4轮

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

//内层循环的变量控制i

/没两个数比较的第一个数的索引j 和 j+1  j的范围:0  ~ arr.length-i-1

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

        if(arr[j]<arr[j+1]){

int temp=arr[j+1];

arr[j+1]=arr[j];

arr[j]=temp;

          }

    }

}     

1.2 选择排序:拿主场数和后面的每一个位置的数据比较大小,确保这一轮结束后,主场位置存放的是这一轮中的最大或最小者

轮数 i   1~arr.length-1 主场数的索引 i 与主场数比较的数的范围:

  0 第一轮: 1,9,5,7,4 ,18    0 [i+1,arr.length-1]

  1 第二轮:    3,5,7,4 ,8 1

  2 第三轮:      7,5,4 ,8   2

  3 第一轮:        5,4    3

      int max=0;  //记录每一轮中最大数据的索引

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

max=i;

//与主场数比较的数的范围 m

for(int m=i+1;m<=arr.length-1;m++){

if(arr[max]>arr[m]){

max=m;

}

}

//max 最大数的位置

if(max!=i){

int temp=arr[i];

arr[i]=arr[max];

arr[max]=temp;

}

}

1.3二分法查找

数组已经升序排序

查找数组中指定的数据,找到返回它的索引,没有找到返回-1

            int min=0;

            int max=arr.length-1;

            int mid=(min+max)/2;

            while(i!=arr[mid]){

                    if(i>arr[mid]){

                            min=mid+1;

                    }else if(i<arr[mid]){

                            max=mid-1;

                       }

                    if(max<min){

                        return -1;

                    }

               mid=(min+max)/2;

            }

三、Arrays工具类(了解)

Arrays 工具类

static boolean equals(int[] a, int[] a2) 如果两个指定的 int 型数组彼此相等,则返回 true。

static String toString(int[] a) 返回指定数组内容的字符串表示形式。

static void sort(int[] a) 对指定的 int 型数组按数字升序进行排序。

static void sort(int[] a, int fromIndex, int toIndex) 对指定 int 型数组的指定范围按数字升序进行排序。

static void fill(int[] a, int val)  将指定的 int 值分配给指定 int 型数组的每个元素。

static int binarySearch(int[] a, int key) 使用二分搜索法来搜索指定的 int 型数组,以获得指定的值。

static int[] copyOf(int[] original, int newLength) 

static int[] copyOfRange(int[] original, int from, int to)  将指定数组的指定范围复制到一个新数组。

static boolean deepEquals(Object[] a1, Object[] a2)  如果两个指定数组彼此是深层相等 的,则返回 true。

static String deepToString(Object[] a)  返回指定数组“深层内容”的字符串表示形式

四、 面向对象

1.面向对象和面向过程区别:

都是一种思维方式,是一种思想

面向过程:"我应该怎么去做?" 然后一步一步去实现

面向对象:"我应该让谁来做?" 不关注具体如何实现,关注的是对象

2.面向对象的优点:

1.更贴近于现实生活

2.面向对象可以将复杂的问题简单化

3.面向对象贴近管理者的角度,面向过程体现于执行者

3.如何使用面向对象的思维方式进行编程:

想要程序和现实生活挂上关系,所以提供的两个概念,类  对象

类:现实生活中一系列事物的模板

对象:具体的某个事物

4.自定义类|模板类|javabean

1)手机能做什么???  打电话,上网,发短息,刷抖音...  动词  ---功能  成员方法

2)手机的特征???    颜色  价钱  品牌  尺寸...    名词  ---属性  成员变量

事物:属性  功能

public class 类名{

    //成员变量

    修饰符 数据类型  变量名=赋值;

    //成员方法

    修饰符 返回值类型 方法名([参数]){

    方法体

    }

}

5.使用引用数据类型:

5.1.导包  1)java.lang包下的内容  2)同包下的类不需要导包

5.2.创建类型的引用

数据类型 引用名|变量名 = new 数据类型();  --创建一个对象,new是用来创建对象的

5.3.使用功能|属性

引用.功能名字()|属性名字

相关文章

  • JAVASE-DAY06

    纲要: 一、可变参数:参数的个数不确定,可以是0个可以是多个,参数的数据类型必须相同 可变参数必须要写在参数列表的...

网友评论

      本文标题:JAVASE-DAY06

      本文链接:https://www.haomeiwen.com/subject/bedenqtx.html