zoukankan      html  css  js  c++  java
  • JAVA_SE_笔记整理(基础四)

    Java基础

    1、跳转控制语句

    break中断

    break的使用场景:

    在选择结构switch中;

    循环语句中;

    离开使用场景的存在是没有意义的。

    break的作用:

    跳出单层循环

    跳出多层循环:带标签的break;

     

    continue 继续

    使用场景:

    在循环体语句中;

    离开使用场景的存在是没有意义的。

    作用:

    单层的continue

     

    多层的continue

     

    return 返回

    return关键字不是为了跳转出循环体,更常用的功能是结束一个方法,也就是退出一个方法。跳转到上层调用的方法。这个在方法的使用那里会在详细的讲解。

     

    java 方法

    1、为什么要有方法:

    代码中有很多事情都是相同的,那么代码就没有必要重复填写。而这些相同代码就可以被程序中定义为一个方法。这样的话每次开枪只需调用方法,不需要再粘贴大量代码。

    2、方法说明:

    在很多语言里面都有函数的定义

    函数在Java中被称为方法

    3、格式:

    修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2…) {

    方法体;

    return 返回值;

         }

    方法格式解释:

    修饰符:修饰方法的状态;目前只需要用public static

    返回值类型:用于限定返回值类型,byte short int long·····

    方法名:一个名字,为了方法调用方法。

    参数列表:

    参数类型:限定调用方法时,传入数据的类型

    参数名:是一个变量,接收调用方法时传入的参数。

    方法体

    完成功能的代码

    return:结束方法以及返回方法指定的值

    返回值:程序被return带回的结果,返回给调用者。

     

    4、注意事项:

    方法不调用,不执行。

    方法与方法之间是平级关系,不能嵌套定义。

    方法定义的时候参数之间用逗号间隔。

    方法调用的时候不用传递数据类型

    如果方法有明确的返回值,一定要有return 带回一个值。

    5、没有返回值的方法定义

    修饰符 void 方法名(参数类型 参数名1,参数类型 参数名2…) {

    方法体;

    // 如果写return,后面直接跟“;”,如果不写,也是可以的。

    // return ;

        }

     

    6、重载

    概述:在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。

    重载的特点:

    与返回值类型无关,只看方法名和参数列表

    在调用时,虚拟机通过参数列表的不同来区分同名方法

    例如:求和

     

    java 数组

    1、概述

    数组是存储同一种数据类型多个元素的集合。也可以看成是一个容器。

    数组既可以存储基本数据类型,也可以存储引用数据类型。

    2、数组的定义格式

    格式1、数据类型[] 数组名;

    格式2、数据类型 数组名[];

    注意:这两种定义做完了,数组中是没有元素值的。

    3、数组元素初始化

    数组初始化概述:

    Java中的数组必须先初始化,然后才能使用。

    所谓初始化:就是为数组中的数组元素分配内存空间,并为每个数组元素赋值。

    数组初始化的方式:

    静态初始化:初始化时指定每个数组元素的初始值,由系统决定数组长度。

    动态初始化:初始化时只指定数组长度,由系统为数组分配初始值。

    动态初始化

    初始化时只指定数组长度,由系统为数组分配初始值。

    格式:

    数据类型[] 数组名 = new 数据类型[数组长度];

    数组长度其实就是数组中的元素个数。

    举例:

    int[] array = new int[3];

    解释:定义了一个int类型的数组,这个数组可以存放3个int类型的数据。

     

    4、内存分配:

    Java 程序在运行时,需要在内存中的分配空间。为了提高运算效率,就对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式。

    栈 存储局部变量

    堆 存储new出来的东西

    方法区 (面向对象部分讲)

      寄存器 (给CPU使用)

     

    局部变量:在方法定义中或方法声明上的变量都称为局部变量

    每一个new出来的东西都有地址值

    每一个变量都有默认值

    byte,short,int,long,0

    float,double, 0.0

    char ‘\u0000’

    Boolean false

    引用类型 null

    使用完毕就变成垃圾,但是并没有立即回收,会在垃圾回收器空闲的时候回收。

    5、数组的静态初始:初始化时指定每个数组元素的初始值,由系统决定数组长度。

    格式:数据类型[] 数组名 = new 数据类型[]{元素1、元素2、元素…};

    举例:

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

    解释:定义了一个int类型的数组,这个数组中可以存放3个int‘类型的值,并赋值为1,2,3,

    其实这种写法还有一种简化写法

    int[] arr = {1, 2, 3};

     

    6、数组的属性

    数组的length 数组的长度,属于数组对象

    7、数组中可能遇见异常

    ArrayIndexOutOfBoundsException 数组下标越界

    NullPointerException 空指针异常

    二维数组

    1、二维数组概述

    其实二维数组其实就是每一个数组元素为一维数组的数组

    2、定义格式一

    数据类型[][] 变量名 = new 数据类型[m][n]

    m代表这个二维数组有多少个一维数组

    n 代表每一个一维数组的元素个数。

     

    举例:

    int[][] array = new int[3][2];

    定义了一个二维数组array

    3这个二维数组有3个一维数组,名称是array[0]、array[1]、array[2]

    2 每一个一维数组有2个元素,可以通过array[m][n]来获取。array[0][1]

    表示获取第m+1个一维数组的第n+1个元素。

    3、定义格式二

    数据类型[][] 变量名 = new 数据类型[m][];

    m表示这个二维数组有多少个一维数组

    这一次没有直接给出一维数组的元素个数。可以动态给出。

     

    举例:

    int[][] array = new int[3][];

    array[0] = new int[2];

    array[1] = new int[5];

    array[2] = new int[4];

    4、定义格式三 

    静态初始化

    数据类型[][] 变量名称 = new 数据类型[][] {

    {元素1, 元素2,….},

    {元素…},

    {元素..}

    };

    简化版格式:

    数据类型[][] 变量名称 = {

    {元素1, 元素2,….},

    {元素…},

    {元素..}

    };

     

    举例:

    int[][] arr = {

    {1, 2, 3},

    {3, 6},

    {123, 345, 678}

    };

    排序:

    http://blog.csdn.net/hguisu/article/details/7776068(八种排序方式,自行学习)

    冒泡排序:

    基本概述:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,将最大的数放到了最后。在第二趟:仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到倒数第二个数(倒数第一的位置上已经是最大的),第二趟结束,在倒数第二的位置上得到一个新的最大数(其实在整个数列中是第二大的数)。如此下去,重复以上过程,直至最终完成排序。

    for(int i = 0; i < array.length; i++) {

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

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

    int temp = array[j];

    array[j] = array[j + 1];

    array[j + 1] = temp;

    }

    }

    }

    插入排序:

    每步将一个待排序的纪录,按其关键码值的大小插入前面已经排序的文件中适当位置上,直到全部插入完为止。

    public static void insertsort(int arr[]){                

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

    //注意[0,i-1]都是有序的。如果待插入元素比arr[i-1]还大则无需再与[i-1]前面的元素进行比较了,反之则进入if语句

                if(arr[i-1] > arr[i]){

                    int temp = arr[i];

                    int j;

                    for(j = i-1; j >= 0 && arr[j] > temp; j --){                

                            arr[j+1] = arr[j];//把比temp大或相等的元素全部往后移动一个位置            

                    }

                    arr[j+1] = temp;//把待排序的元素temp插入腾出位置的(j+1)

                }            

            }

            

        }

    插入和冒泡排序的区别:

    例如:45 12     342   2

    对于插入排序来说,进行一趟排序之后就有:   12   45   342 2

    而对于冒泡排序,进行一趟排序之后有:       12    45    2  342   

     

    杨辉三角:

     

    int triangle[][]=new int[20][];// 创建二维数组

    // 遍历二维数组的第一层

    for (int i = 0; i < triangle.length; i++) {

        triangle[i]=new int[i+1];// 初始化第二层数组的大小

        // 遍历第二层数组

        for(int j=0;j<=i;j++){

            // 将两侧的数组元素赋值为1

            if(i==0||j==0||j==i){

                triangle[i][j]=1;

            }else{// 其他数值通过公式计算

                triangle[i][j]=triangle[i-1][j]+triangle[i-1][j-1];

            }

            System.out.print(triangle[i][j]+"\t");         // 输出数组元素

        }

        System.out.println();               //换行

    }

     

    阶乘:!n == n*!(n-1);

    public static int jc (int n) {

    if(n ==1 ){

    return 1;

    }else{

    return n * jc(n-1);

    }

    }

     

     

    斐波那契数列:F[n]=F[n-1]+F[n-2] (n>=2,F[1]=1,F[2]=1)

    1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368

     

    public static int fibonacci(int n){

        if(n<=1)

    return 1;

       return fibonacci(n-1)+fibonacci(n-2);

        }

     

    排序:

    http://blog.csdn.net/hguisu/article/details/7776068(八种排序方式,自行学习)

    冒泡排序:

    基本概述:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,将最大的数放到了最后。在第二趟:仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到倒数第二个数(倒数第一的位置上已经是最大的),第二趟结束,在倒数第二的位置上得到一个新的最大数(其实在整个数列中是第二大的数)。如此下去,重复以上过程,直至最终完成排序。

    for(int i = 0; i < array.length; i++) {

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

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

    int temp = array[j];

    array[j] = array[j + 1];

    array[j + 1] = temp;

    }

    }

    }

    插入排序:

    每步将一个待排序的纪录,按其关键码值的大小插入前面已经排序的文件中适当位置上,直到全部插入完为止。

    public static void insertsort(int arr[]){                

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

    //注意[0,i-1]都是有序的。如果待插入元素比arr[i-1]还大则无需再与[i-1]前面的元素进行比较了,反之则进入if语句

                if(arr[i-1] > arr[i]){

                    int temp = arr[i];

                    int j;

                    for(j = i-1; j >= 0 && arr[j] > temp; j --){                

                            arr[j+1] = arr[j];//把比temp大或相等的元素全部往后移动一个位置            

                    }

                    arr[j+1] = temp;//把待排序的元素temp插入腾出位置的(j+1)

                }            

            }

            

        }

    插入和冒泡排序的区别:

    例如:45 12     342   2

    对于插入排序来说,进行一趟排序之后就有:   12   45   342 2

    而对于冒泡排序,进行一趟排序之后有:       12    45    2  342   

     

    杨辉三角:

     

    int triangle[][]=new int[20][];// 创建二维数组

    // 遍历二维数组的第一层

    for (int i = 0; i < triangle.length; i++) {

        triangle[i]=new int[i+1];// 初始化第二层数组的大小

        // 遍历第二层数组

        for(int j=0;j<=i;j++){

            // 将两侧的数组元素赋值为1

            if(i==0||j==0||j==i){

                triangle[i][j]=1;

            }else{// 其他数值通过公式计算

                triangle[i][j]=triangle[i-1][j]+triangle[i-1][j-1];

            }

            System.out.print(triangle[i][j]+"\t");         // 输出数组元素

        }

        System.out.println();               //换行

    }

     

    阶乘:!n == n*!(n-1);

    public static int jc (int n) {

    if(n ==1 ){

    return 1;

    }else{

    return n * jc(n-1);

    }

    }

     

     

    斐波那契数列:F[n]=F[n-1]+F[n-2] (n>=2,F[1]=1,F[2]=1)

    1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368

     

    public static int fibonacci(int n){

        if(n<=1)

    return 1;

       return fibonacci(n-1)+fibonacci(n-2);

        }

     

  • 相关阅读:
    react的路由以及传值方法
    三连击
    给网页添加鼠标样式
    单词统计(续)
    个人课程总结
    构建之法阅读笔记02
    构建之法阅读笔记01
    第十六周总结
    计算最长英语单词链
    第十五周总结
  • 原文地址:https://www.cnblogs.com/songliuzhan/p/12624128.html
Copyright © 2011-2022 走看看