2021-03-04

创建随机数

  1. 导包 import java.util.Random;
  2. 创建对象 Random r = new Random();
  3. 使用 int num = r.nextInt(参数);
    无参表示随机数范围是int的范围。
    例如10,范围[0,10)。

数组

一维数组

动态初始化

初始化时只指定数组长度,由系统为数组分配初始值。
数据类型[ ] 数组名 = new 数据类型[数组长度];
int[] arr = new int[10];

静态初始化

初始化时指定每个数组元素的初始值,由系统决定数组长度。
数据类型[ ] 数组名 = new 数据类型[ ]{元素1,元素2,…,元素n};
int[ ] arr = new int[ ]{元素1,元素2,…,元素n};
一般方式:int[ ] arr = {元素1,元素2,…,元素n};

访问数组

通过数组的索引访问,索引从0开始,到数组长度减1。

二维数组

二维数组定义格式

  • 数据类型[][] 数组名;
  • 数据类型 数组名[][]; (不推荐)
  • 数据类型[] 数组名[]; (不推荐)

初始化方式

  • m: 二维数组的长度(二维数组中一维数组的个数)
  • n: 二维数组中一维数组的长度
  • 数据类型 变量名 = new 数据类型{{元素…},{元素…},{元素…}};
  • 简化版格式:数据类型 变量名 = {{元素…},{元素…},{元素…}};

数组常见报错

  • 数组索引越界异常ArrayIndexOfBoundsException
    访问到了数组中的不存在的索引时发生。
  • 空指针异常NullPointerException
    数组引用没有指向对象,却在操作对象中的元素时。

数组问题练习

冒泡排序

public static void main(String[] args) {
//        冒泡排序
        int[] arr = {32,13,3124,3,32,5};
        for (int i = 0; i < arr.length - 1; i++) {
            for (int j = 0; j < arr.length - i - 1; j++) {
                if(arr[j] > arr[j + 1]){
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
        for(int i : arr){
            System.out.println(i);
        }
    }

选择排序

public static void main(String[] args) {
//        选择排序
        int[] arr = {32,13,3124,3,32,5};
        for (int i = 0; i < arr.length; i++) {
            for (int j = i + 1; j < arr.length; j++) {
                if(arr[i] > arr[j]){
                    int temp = arr[i];
                    arr[i] = arr[j];
                    arr[j] = temp;
                }
            }
        }
        for(int i : arr){
            System.out.println(i);
        }
    }

二分查找

public static void main(String[] args) {
        //二分查找必须有序
        int[] arr = {32,13,3124,3,32,5};
        int num = 99;
        int min = 0;
        int max = arr.length - 1;
        int mid = (min + max) / 2;
        // 先排序
        for (int i = 0; i < arr.length - 1; i++) {
            for (int j = 0; j < arr.length - i - 1; j++) {
                if(arr[j] > arr[j + 1]){
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
        while(true){
            if(arr[mid] > num){
                max = mid - 1;
            }
            if(arr[mid] < num){
                min = mid + 1;
            }
            mid = (min + max) / 2;
            if(arr[mid] == num){
                System.out.println(mid);
                break;
            }
            if(min > max){
                System.out.println("查无此数");
                break;
            }
        }
    }

数组反转

int[] arr = {1,2,3,4,5};
        for (int i = 0; i < arr.length/2; i++) {
            int temp = arr[i];
            arr[i] = arr[arr.length - i - 1];
            arr[arr.length - i - 1] = temp;
        }
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }

Java中的内存分配

Java中分为5个区域
栈:存放局部变量,使用完毕立即回收。
堆:存放new出来的对象,每个对象都有一个首地址值,16进制表示。
对象中的默认值

  • byte,short,int,long 0
  • float,double 0.0
  • char ‘\u0000’,一个空格
  • boolean false
  • 引用类型 null

方法区:和.class相关内容
本地方法区:用于本地方法的计算
寄存器:和CPU相关,效率极高

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值