JavaSE之数组练习、内存、方法介绍

数组练习、内存、方法介绍

一.数组的练习

package com.code.day05;

import java.util.Random;
import java.util.Scanner;

public class Day05Array {

    public static void main(String[] args) {
        /**
         * 获取数组最大值
         * 步骤:
         *   1.定义一个变量max,用于接收两个元素之间的较大值
         *   2.遍历数组,将每一个元素获取出来
         *   3.判断,如果max<遍历出来的元素,证明遍历出来的元素大
         *   4.将大的重新赋值给max
         *   5.输出max
         */
         
        int max = 0;
        int[] array1 = {54, 3, 4, 6, 7, 5, 54, 7, 8};
        for(int i = 0; i < array1.length; i++){
            if(max < array1[i]){
                max=array1[i];
            }
        }
        System.out.println(max);

        /**
         * 随机产生10个[0,100]之间整数,统计既是3又是5,但不是7的倍数的个数
         * 步骤:
         *   1.创建Random对象
         *   2.创建一个数组,保存10个随机数
         *   3.循环随机10个整数,放到数组中保存起来
         *   4.定义一个count,表示出现个数
         *   5.遍历数组,将每一个元素获取出来,根据条件判断,如果符合条件count++
         *   6.输出count
         */
         
        Random random = new Random();
        int[] array2 = new int[10];
        for(int i = 0; i < array2.length; i++){
            array2[i] = random.nextInt();
        }
        int count = 0;
        for(int j =0;j<array2.length;j++){
            if(array2[j]%3==0 && array2[j]%5==0 && array2[j]%7!=0){
                count++;
            }
        }
        System.out.println( count);

        /**
         * 用一个数组存储本组学员的姓名,从键盘输入,并遍历显示
         */
        String[] array3 = new String[5];
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入学员姓名:");
        for(int i = 0; i < array3.length; i++){
            array3[i] = scanner.next();
        }

        for(int i = 0; i < array3.length; i++){
            System.out.println(array3[i]);
        }

    }
}

二、内存

1.内存概述:就是运行内存,说的直白点就是(内存条),在java的世界里,将内存分为了5块,每一块都有自己的作用
2.内存的作用:运行应用程序的地方
3.java中内存五大区域:
(1)栈(Stack):
所有的方法都会在栈内存中运行,以及方法中的变量
(2)堆(Heap):
所有引用类型的数据,而且每new一次,都会在堆内存中占用一片空间,堆内存会为每个空间自动分配一个地址值
而且堆内存中的数据是有默认值的:
整数: 0
小数: 0.0
字符: ‘\u0000’
布尔: false
引用: null
(3)方法区(Method Area):
是所有代码运行之前的"预备区",代码在运行前都要先被加载到内存中(方法区)
(4)本地方法栈(Native Method Stack):
专门运行带native关键字的方法(带native的方法叫做本地方法)
本地方法可以理解为是对java实现不了的功能进行功能上的扩充
(5)寄存器(pc register):和cpu有关

三、复杂数组操作

public class Day05ComplexArray {
    public static void main(String[] args) {
        /**
         * 数组扩容
         *
         * 数组扩容需要创建新数组,然后吧老数组的元素复制到新数组中,然后将新数组的地址值赋值给老数组
         */
        int[] arr1 = {1,2,3};
        //创建新数组
        int[] arr2 = new int[6];
        //将arr1中的元素放到arr2数组中
        for (int i = 0; i< arr1.length; i++) {

            arr2[i] = arr1[i];
        }
        //将arr2的地址值赋值给arr1
         arr1 = arr2;       //扩容成为6个元素的数组

        for (int i = 0; i < arr1.length; i++) {
            System.out.println(arr1[i]);
        }
        /**
         * 数组合并
         */
        int[] arr3 = {1,2,3};
        int[] arr4 = {4,5,6};
        int[] arr5 = new int[arr3.length + arr4.length];

        for (int i = 0; i < arr3.length; i++){
            arr5[i] = arr3[i];
        }
        for(int j =0 ;j< arr4.length; j++){
            arr5[arr3.length + j] = arr4[j];
        }

        for (int f=0 ; f< arr5.length; f++){
            System.out.println(arr5[f]);
        }
    }
}

四、二维数组

1、二维数组介绍

1.概述:数组中嵌套多个一维数组
2.格式:
(1)动态初始化:
数据类型[][] 数组名 = new 数据类型[m][n]
数据类型 数组名[][] = new 数据类型[m][n]
数据类型[] 数组名[] = new 数据类型[m][n]
m:代表的是二维数组的长度 二维数组中有多少个一维数组
n:代表的是每一个一维数组的长度 一维数组中最多能存多少个数据

注意:数据类型[][] 数组名 = new 数据类型[m][]  代表的是二维数组中的一维数组没有创建出来      

(2)静态初始化:
数据类型[][] 数组名 = new 数据类型[][]{{元素1,元素2…},{元素1,元素2…}…}
数据类型 数组名[][] = new 数据类型[][]{{元素1,元素2…},{元素1,元素2…}…}
数据类型[] 数组名[] = new 数据类型[][]{{元素1,元素2…},{元素1,元素2…}…}

(3)简化静态初始化:
数据类型[][] 数组名 = {{元素1,元素2…},{元素1,元素2…}…}

2、二维数组方法介绍
(1)获取二维数组长度
        int[][] array1 = new int[][] {{1,2,3},{4,5,6},{7,8,9}};
        System.out.println(array1.length);
(2)获取二维数组元素
        String[][] array2 ={{"乔峰","虚竹","段誉"},{"张无忌","灭绝","周芷若"},{"郭靖","黄蓉"}};
        System.out.println(array2[1][1]);
        System.out.println(array2[2][0]);
        System.out.println(array2[0][2]);
(3)二维数组中存储元素
    String[][] array3 = new String[3][3];
    array3[0][0] = "乔峰";
    array3[0][1] = "虚竹";    
    array3[0][2] = "段誉";
    array3[1][0] = "张无忌";
    array3[1][1] = "灭绝";
    array3[1][2] = "周芷若";
    array3[2][0] = "郭靖";
    array3[2][1] = "黄蓉";
    array3[2][2] = "小龙女";
    System.out.println(array3[1][1]);
    System.out.println(array3[2][0]);
    System.out.println(array3[0][2]);
    System.out.println(array3[1][2]);
    System.out.println(array3[2][2]);
    System.out.println(array3[2][1]);
    System.out.println(array3[0][0]);
    System.out.println(array3[0][1]);
    System.out.println(array3[1][0]);
    System.out.println(array3[1][1]);
(4)二维数组的遍历
        int[][] arr = new int[3][3];
        arr[0][0] = 10;
        arr[0][1] = 20;
        arr[0][2] = 30;

        arr[1][0] = 100;
        arr[1][1] = 200;
        arr[1][2] = 300;

        arr[2][0] = 1000;
        arr[2][1] = 2000;
        arr[2][2] = 3000;
        for(int i = 0 ; i<arr.length;i++){
            for (int j =0 ; j<arr[i].length;j++){
                System.out.println(arr[i][j]);
            }
        }

五、方法

1、方法概述
1.概述:拥有功能性代码的代码块
  将来开发,一个按钮(功能)就应该对应一个方法,点击这个按钮(执行了这个功能)就会执行对应的方法
2.通用定义格式:
  修饰符 返回值类型 方法名(参数){
      方法体
      return 结果
  }

3.在通用格式基础上细分:
  a.无参无返回值方法
  b.有参无返回值方法
  c.无参有返回值方法
  d.有参有返回值方法
2、无参无返回值方法

1.格式:
public static void 方法名(){
方法体
}

在其他方法中:方法名() 想要让方法执行起来,就需要在main方法中调用该方法

2.注意:
(1)void和return 结果不能共存,void代表没有返回值,return 结果代表有返回值
(2)方法不调用不执行,main方法是jvm自动调用的
(3)方法的执行顺序只和调用顺序有关系->先调用谁,谁先执行
(4)方法之间是平级关系,不能互相嵌套

3.代码示例:

public class Day05Method {

    public static void main(String[] args) {
        add();
        sub();
    }
    public  static  void sub(){
        int a = 10;
        int b = 20;
        System.out.println(a-b);
    }
    public static void add(){
        int a = 10;
        int b = 20;
        System.out.println(a+b);
    }
}
3、有参数无返回值的方法定义和执行流程

1.格式:
public static void 方法名(参数){
方法体
}
2.调用:
方法名(具体的值)
3.代码示例:

   public static void main(String[] args) {
        add();
        sub();
        print(10,20);
    }
    
  public static void print(int a,int b){
        System.out.println(a+b);
    }
4、无参数有返回值定义以及执行流程

1.格式:
public static 返回值类型 方法名(){
方法体
return 结果
}

2.调用:
a.打印调用: sout(方法名()) 不推荐
b.赋值调用:
数据类型 变量名 = 方法名() 推荐

3.代码示例:

    int result = add2();
    System.out.println(result);
    
   public static  int add2(){
        int a=10;
        int b=20;
        return a+b;
    }
5、有参数有返回值定义以及执行流程

1.格式:
public static 返回值类型 方法名(参数){
方法体
return结果
}

2.调用:
a.打印调用: sout(方法名(具体的值)); 不推荐

b.赋值调用:
数据类型 变量名 = 方法名(具体的值); 推荐

3.示例代码:

    int results = add3(20,20);
    System.out.println(result);
    System.out.println(results);
    
  public static int add3(int a,int b){
         return a+b;
    }
6、实参和形参的区别

1.形式参数(形参):在[定义方法]的时候,只是形式上定义了两个参数,此时并没有给参数赋值
2.实际参数(实参):在[调用方法]的时候,给形参赋予了具体的值,实际的值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值