第二篇学习总结

2020-01-20  本文已影响0人  拼搏男孩

第二篇学习总结

一、循环语句

和选择语句不同,循环语句满足一定条件循环执行循环体内的语句。循环语句在Java中有三种形式:for,while,do...while。

1.for循环

for循环语句的格式为:for(初始化表达式;condition;循环后表达式){statement}。执行流程是:首先执行初始化表达式,将变量初始化,然后判断条件,如果条件满足,也就是true就执行循环体中的语句,执行完之后执行循环后表达式,再次判断,如果条件不满足,也就是false会退出循环。


for循环中的三个部分均可以省略,初始化表达式不是必须,因为可以在外面进行变量的初始化,condition也不是必须,如果省略的话默认为true,无限循环,循环后表达式也可以省略,因为可以在循环体内对循环判断变量进行计算,这样就相当于一个while循环了。如果同时省略三条语句的话就相当于一个while(true)循环了。

2.while循环

while循环语句的格式为while(condition){循环语句}。while循环的执行流程为首先判断condition是否为true,如果为true,就执行循环体内的语句,否则就退出循环。一般将while循环看作是for循环的简写形式,因为while循环能做的for循环一定能做,while循环适用于循环次数不确定的情况下,比如当一个方法返回boolean类型的时候,可以用这个方法作为condition,如果返回true就执行循环体内的语句。

3.do{}while()循环

do...while循环语句的格式为do{循环语句}while(condition)。执行流程是,先执行一遍循环体内的语句,然后再进行判断,如果为true继续执行循环,否则,退出循环。do...while循环与while循环的不同是:do...while循环至少会执行一次循环体内的语句,while循环有可能一次也不执行。

4.关键字

public static void main(String[] args) {
 
 w:  for (int i = 0; i < 10; i++ ) {
     //外循环语句
     System.out.println("外循环语句.....前");
     for (int j = 0; j < 10; j++) {
         break w;
     }
     System.out.println("外循环语句.....后");
 }
}

二、数组

数组是存放同一种数据类型的容器,定义时就必须指定长度与数据类型,通过下标访问,长度不能改变,所存放的数据类型也不能改变,所以,数组的使用不够灵活,后来又出现了List集合,不过,Java中唯一的底层容器就是数组,是一种引用数据类型。

1.数组的初始化

2.数组的操作

3.数组的默认值

4. 数组在内存中的分配

Java在内存中只有两个部分:堆区与栈区,很多人在这两个部分基础上再分出方法区、常量池等部分,引用数据类型都是存储在堆区,栈区只存储局部变量。数组的初始化是这样的过程:首先分配连续的内存空间,然后分配下标,之后如果是动态初始化就分配默认的值,如果是静态初始化就赋上指定的值。

5.数组中常见的问题

6.数组的基本操作

for(int i=0;i<arr.length;i++){
    System.out.println(arr[i]);
}
int max = arr[0]
for(int i=1;i<arr.length;i++){
    if(arr[i]>max){
        max = arr[i];
    }
}
for(int i=0;i<arr.length/2;i++){
    int temp = arr[i];
    arr[i] = arr[arr.length-1-i];
    arr[arr.length-1-i] = temp;
}
int value;
int index = -1;
for(int i=0;i<arr.length;i++){
    if(arr[i]==value){
        index = i;
        break;
    }
}
System.out.println(index);

7.二分查找

二分查找是效率最高的查找算法,最坏时间复杂度是log(N)。一次可以将一半的数据剔除,但是二分查找的前提是已经排序好的数据。

public static int binarySearch(int[] arr,int value){
    int bottom = 0;
    int top = arr.length-1;
    int index = -1;
    while(bottom<=top){
        int mid = (bottom+top)/2;
        if(arr[mid]==value){
            index = mid;
            break;
        }
        else if(arr[mid]<value){
            bottom = mid+1;
        }
        else {
            top = mid-1;
        }
    }
    return index;
}

8.冒泡排序

冒泡排序算法是较为简单的排序算法之一,其基本思想是比较相邻的两个元素,依次将最大的数放在最后面,这样就实现了元素从小到大排序。这个排序算法的时间复杂度是O(n2)。

public static void bubbleSort(int[] a){
    for(int i=0;i<a.length-1;i++){
        for(int j=0;j<a.length-1-i;j++>){
            if(a[j]>a[j+1]){
                int temp = a[j];
                a[j] = a[j+1];
                a[j+1] = temp;
            }
        }
    }
}

三、方法

方法是用来包裹一段代码,这样这段代码就实现了重用,不然每次都需要重新写一遍方法中的代码。,定义一个方法的格式如下:

权限修饰符 静态/非静态 返回值类型 方法名(参数类型1 参数1,参数类型2 参数2,.....)。

1.方法的分类和调用

2.方法的重载(OVERLOADING)

JVM判断两个方法是否相同依据方法名与参数列表,如果两者都相同,则认定是同一个方法,一个类中不允许出现方法名相同,参数列表也相同的两个方法,两者只要有一个不同就是不同的方法。方法的重载含义是在同一个类中出现了多个方法名相同,但是参数列表不相同的方法,参数列表包括参数类型、参数个数、参数顺序,只要有一个不同就算是重载。但是参数顺序不同的重载在程序开发中没有意义,所以不要使用。

3.方法间相互调用

JVM在调用某个方法时,会将这个方法压入栈中,如果这个方法又调用了其他方法,就会将另一个方法压入栈中,当方法执行完毕之后,会将当前方法弹栈。

4.可变参数

在方法声明上使用...表示多个相同类型的参数,可变参数使用是有限制的,一般可变参数放在最后,因为可变参数会将尽可能多的参数形成一个整体,也就是组成一个数组,这时如果我们想传入一个单独的参数,并不想让它成为数组的一部分,如果可变参数放在前面这样的操作就无法完成。

上一篇 下一篇

猜你喜欢

热点阅读