• Java学习笔记(5)


    补day4:如果一个函数的返回值类型是具体的数据类型,那么该函数就必须要保证在任意情况下都保证有返回值。(除了void类型)

    return关键字的作用:

    1.返回数据给函数的调用者

    2.函数一旦执行到了return关键字,那么该函数马上结束。(能结束一个函数)    return;

    注意:一个函数的返回值类型是void,那么也可以出现return关键字,但是return关键字的后面不能有数据。

    break关键字与return关键字的区别

    1.break关键字是结束一个循环

    2.return关键字是结束一个函数

    函数的重载

    在一个类中出现两个或者两个以上的同名函数,这个称作为函数的重载。

    函数重载的作用:同一个函数名可以出现了不同的函数,以应对不同个数或者不同数据类型的参数。

    函数重载的要求:

    1.函数名一致

    2.形参列表不一致(形式参数的个数或者是对应的数据类型不一致)

    3.与函数的返回值类型是无关的

    (要不就是重复定义)

    数组:数组是同一种数据类型数据的集合容器。

    数组的定义格式:

    数据类型【】  变量名=new   数据类型【长度】;

    局部变量:如果一个变量是在一个方法(函数)的内部声明的,那么该变量就是一个局部变量。

    成员变量:成员变量就是定义在方法之外,类之内的。

    栈内存:栈内存存储的都是局部变量,变量一旦出了自己的作用域,那么马上会从内存中消失,释放内存空间。

    堆内存:堆内存存储的都是对象数据,对象一旦被使用完,并不会马上从内存中消失,而是等待垃圾回收器不定时把垃圾对象回收,这时候该对象才会消失,释放内存。

    对象如果没有变量引用了,那么该对象就是一个垃圾对象了。

    凡是以new关键字创建的对象,jvm都会在堆内存中开辟一个新的空间,创建一个新的对象。

    数组的好处,对分配到数组对象中的每一个数据都分配一个编号(索引值,角标,下标),索引值的范围从0开始,到n-1 

    数组中最常见的问题

    1.NullPointerException     空指针异常

    原因:引用类型变量没有指向任何对象,而访问了对象的属性或者是调用了对象的方法。

    2.ArrayIndexOutOfBoundsException   索引值越界。

    原因:访问了不存在的索引值。

    数组的初始化方式:

        数据类型【】     变量名=new   数据类型【长度】;    //动态初始化

        数据类型【】     变量名={元素1,元素2,元素3....};   //静态初始化

    排序:

    选择排序:

    public static void main(String[] args) {
    // TODO Auto-generated method stub
    int[] a= {18,12,6,8,9};
    selectSort(a);
    }
    public static void selectSort(int[] arr) {
    for (int i=0;i<arr.length-1;i++) {
    for (int j=i+1;j<arr.length;j++) {
    if (arr[j]>arr[i]) {
    int temp=arr[j];
    arr[j]=arr[i];
    arr[i]=temp;
    }
    }
    }
    System.out.println("目前的元素是:");
    for (int i=0;i<arr.length ;i++) {
    System.out.print(arr[i]+",");
    }
    }

    冒泡排序:

    public static void main(String[] args) {
    // TODO Auto-generated method stub
    int[] a= {18,12,6,8,9};
    bubbleSort(a);
    }
    public static void bubbleSort(int[] arr) {
    for(int i=0;i<arr.length-1;i++) {
    for (int j=0;j<arr.length-1-i;j++) {
    if (arr[j]>arr[j+1]) {
    int temp=arr[j];
    arr[j]=arr[j+1];
    arr[j+1]=temp;
    }
    }

    }
    System.out.println("目前的元素是:");
    for (int i=0;i<arr.length ;i++) {
    System.out.print(arr[i]+",");
    }
    }

    查找:折半查找法

    public static void main(String[] args) {
    // TODO Auto-generated method stub
    int[] a= {12,16,54,56,70};
    int index=halfSearch(a,156);
    System.out.println("元素的索引值为:"+index);
    }

    public static int halfSearch(int[] arr,int target) {
    int max=arr.length-1;
    int min=0;
    int mid=(max+min)/2;
    while (true) {
    if (target>arr[mid])
    min=mid+1;
    else if (target<arr[mid])
    max=mid-1;
    else
    return mid;
    //没有找到
    if (max<min)
    return -1;
    mid=(max+min)/2;
    }

    }

    Arrays.sort();排序

    Arrays.toString();输出

    Arrays.binarySearch();折半查找法

    二维数组的初始化方式:

    数据类型【】【】  变量名=new 数据类型【长度1】【长度2】;

    静态初始化:

    数据类型【】【】  变量名={{元素1,元素2,元素3...},{元素1,元素2,元素3...},{元素1,元素2,元素3...}...}

    数组的特点:

    1.数组只能存储同一种数据类型的数据

    2.数组是会给存储到数组中的元素分配一个索引值的,索引值从0开始,最大的索引值是length-1

    3.数组一旦初始化,长度固定

    4.数组中的元素与元素之间的内存地址是连续的,注意,是数组中的相邻元素的地址,而不是数组本身的地址

  • 相关阅读:
    接口的多实现。
    接口的基本实现。
    构建MVC解决方案(包含哪些项目)
    书目记录
    Chrome浏览器修改user-agent,伪装其他浏览器,附带微信、支付宝user-agent
    [文件]学生信息的简单读入与输出
    scanf高级用法【至此丢弃gets用法 】
    数组,字符串
    [转载]终极解密输入网址按回车到底发生了什么
    typedef 和 #define 的区别
  • 原文地址:https://www.cnblogs.com/zhangwugai/p/10298537.html
Copyright © 2020-2023  润新知