zoukankan      html  css  js  c++  java
  • JAVA自学笔记05

    JAVA自学笔记05

    1、方法
    1)方法就是完成特定功能的代码块,类似C语言中的函数。
    2)格式:
    修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2,…){
    函数体;
    return 返回值;
    }
    ①修饰符:对于初学者使用public static
    ②返回值类型:方法结果的类型
    ③方法名符合命名规则即可
    ④实际参数:实际参与运算的
    形式参数:定义在方法上的,用于接收实际参数
    ⑤方法定义在类中但在主方法外
    3)调用方式:
    单独调用:方法名(变量名1,变量名2,…)一般没有意义
    输出调用:System.out.println(单独调用)
    赋值调用:用相同返回值类型的变量接收
    4)注意事项:
    方法不调用不执行
    方法间是平级关系,不可嵌套定义
    方法可使用常量参数
    5)void类型
    直接 函数名(参数列表);

    @例题1:求两个数据之和的方法

    class Test{
    public static void main(String args[]){
    int x = 1;
    int y = -1;
    int z = sum(x,y)
    }
    public static int sum(int a,int b){
    return a+b;
    }
    }

    @例题2:输出任意长宽的矩形

    import java.util.Scanner;
    class Test{
    public static void main(String args[]){
    Scanner sc = new Scanner(System.in);
    
    int x = sc.nextInt();
    int y = sc.nextInt();
    print(x,y);
    }
    public static void print(int m,int n) {
        int i=0,k=0;
    
        for(;i<m;i++) {
            for(;k<n;k++) {
                System.out.print("*");
                    }
                System.out.print('
    ');
                k=0;
                }
    }
    }

    2、方法重载
    1)方法的功能相同,参数列表不同(参数数目、参数类型)时,java允许它们有相同的方法名
    2)JVM依据参数列表识别,与返回值类型无关(即返回值类型可变)

    @例题3:比较两个数据是否相等,参数类型分别为两个byte/short/int/longl类型,并进行测试

    public static boolean equ(int a,int b){
    boolean x = a==b?true:false;
    return x;
    }
    public static boolean equ(byte a,byte b){
    boolean x = a==b?true:false;
    return x;
    }
    //以此类推

    3、数组
    1) 数组是存储同一种数据类型的多个元素的集合,既可以存储基本数据类型,也可以存储引用数据类型
    2)格式1:数据类型[]数组名;
    格式2:数组类型 数组名[];
    3)初始化方式:
    ①动态初始化:初始化只指定数组长度,由系统为 数组分配初始值
    格式:数据类型[]数组名 = new 数据类型[数组长度];
    eg:int[] arr = new int[3];
    执行System.out.println(arr);
    将输出arr的地址
    用数组名和编号的配合就可以获取数组中相编号的元素,这个编号被称为索引,即:
    数组名[索引];
    索引从0开始,到n-1结束。
    eg:System.out.println(arr[0]);
    ②静态初始化:初始化时指定每个数组元素的初始值,由系统决定数组长度
    格式:数据类型 [] 数组名 = new 数据类型【】(元素1,元素2,…);
    简化格式:数据类型[] 数组名 = {元素1,元素2…};
    4)内存分配:
    ①空间分类:
    栈:存储局部变量(在方法声明中声明的变量称为局部变量)
    堆:存储new出来的东西
    方法区、本地的地区、寄存器
    2)栈与堆的图示:
    栈存函数名,函数名指向栈中相应数组首元素,堆存相应各元素

    这里写图片描述
    3)堆内存所赋默认值
    byte/short/int/long 0
    float ,double 0.0
    char ‘u0000’
    boolean false
    引用类型 null
    栈内存的数据用完即被释放
    4)数组赋值
    类型 []数组名 = 另一数组名;
    @例题4: 定义一个数组,输出该数组名(地址)和所有数组元素

    int []arr = new int[3];
    System.out.println(arr);
    
    int i =0;
    for(;i<3;i++){
    System.out.println(arr[i]);
    }

    5)数组操作中的常见问题
    ①数组索引越界:访问到了数组中不存在的索引时发生
    索引超过数组容量ArrayIndexOutOfBoundsException
    ②空指针异常:数组引用没有指向实体,却在操作实体中元素时
    eg:arr = null;
    System.out.println(arr[0]);
    发生异常,数组已不再指向堆内存
    NullPointerException

    6)数组遍历:依次输出数组中的所有元素
    使用循环

    //eg:
    int []arr = {...};
    //用length接收数组长度
    int l = arr.length;//格式:数组名.length;

    7)多个数组的遍历
    利用方法改进:

    //参数列表:int[] 数组名  返回值类型:void
    //eg:
    public static void printArray(int[] arr){
    ...
    }

    8)求数组的最值

    public static int maxNumber(int arr[]){
    int max = arr[0];
    for(int x = 1;x<arr.length;x++){
    if(arr[x]>max){
    max = arr[x];
    }
    }
    return max;
    }

    9)数组元素逆序
    把0索引和arr.length-1的数据交换
    把1索引和arr.length-2的数据交换
    只要做到arr.length/2的时候即可

    public static reverse(int[]arr){
    int i = 0;
    for(;i<=arr.length/2;i++){
    int temp=arr[i];
    arr[i]=arr[arr.length-i-1];
    arr[arr.length-i-1]=temp;
    }
    }

    10)数组查表

    //eg:查找星期
    class Array{
    public static void main(String args[]){
    String[] str ={"一","二","三"};//定义字符串数组

    11)数组元素查找(查找指定元素第一次在数组中所在的位置)

    int x = 5;
    int[] arr = {1,2,3,4,5};
    for(int i=0;i<ar.length;i++){
    if(arr[i]==x){
    System.out.println(i);
    break;
    }
    }
  • 相关阅读:
    汇编中的字符串操作指令
    Scoket需要注意的地方
    判断是否为json对象
    offsetTop,offsetWidth,offsetParent
    ASP.net中页面事件的先后顺序
    opengl32.lib、glu32.lib、 glaux.lib、OpenGL32.lib的意思。
    递归中,方法中的变量值被改变的问题。
    中国数字认证网
    JSON中for in的使用
    (网上转载)JavaScript 跑马灯
  • 原文地址:https://www.cnblogs.com/Tanqurey/p/10485311.html
Copyright © 2011-2022 走看看