数组

这篇博客介绍了数组的基础知识,包括数组的概念、声明与输出,以及常见的异常情况。重点讲解了二维数组在实现杨辉三角算法中的应用,展示了如何通过循环结构生成杨辉三角的每一行,并强调了其规律和算法思路。此外,还提到了向main方法传递参数的方法以及移位交换运算。
摘要由CSDN通过智能技术生成

学习目标:了解数组和多维数组(二维数组学习经典案例杨辉三角)

提示:这里可以添加学习目标
例如:一周掌握 Java 入门知识


学习内容:

  1. 数组的基本概念
    数组可以看作是多个相同类型的数据的组合, 以实现对这些数据的统一管理. 数组又称为索引数组 .
    数组是引用数据类型 , 是源自底层的数据结构 , 并且几乎在所有的语言中都是最基本的数据结构 .
    数组在内存里是一块连续的内存空间 , 这意味着 ,只需要找到数组的一个元素 , 其他的元素就都可以找到了.所以数组的查询和更改的效率极高 , 但是增删的效率极低 .
    数组会占用两块内存 , 栈内存一块 , 堆内存一块 , 栈内存用来保存堆内存里数组对象的地址
    2.数组的声明与输出
    数组的声明分为静态声明和动态声明, 这两个声明的区别在于静态声明是预先直到数组的元素 , 在声明时直接赋值 , 而动态声明预先并不知道数组内的元素都是什么 , 但是在声明时要先确定长度, 且长度一旦确定就不可更改 .
    静态: 数据类型[] 变量名 = {类型值1 , 类型值2 , …}
    动态: 数据类型[] 变量名 = new 数据类型[长度]
    输出数组时 , 需要一个for循环,有一个增强for循环即for each 也可以输出数组 , 其原理是将数组里的每一个数拿出来赋值给变量, 其形式如下:
    for(数据类型 变量名 : 数组名){
    System.Out.print(变量名);
    }
    3.常见异常
    在学习数组时经常会遇见两种异常: 越界异常和空指针异常
    越界: 超出数组下标
    在这里插入图片描述
    空指针:使用null值访问属性 , 因为是null 数组没有指向堆内存的数组空间 , 所以找不到对象
    在这里插入图片描述
    4.给main方法传参数
    在这里插入图片描述
    点开run然后选择Argunments就可以向main方法里传参数了 , 每个参数之间用空格隔开即可
    5.移位交换运算
    m = m ^ n ;
    n = m ^ n ;
    m = m ^ n ;
    三次异或就可以完成交换位置 ,二进制的反码 , 相同取0 不同取1.
    6 .杨辉三角 (利用二维数组)
    package array;

import java.util.Scanner;

/**
*

  • @杜智慧

  •          1
          1     1
       1     2     1
    1     3     3     1
    

    1 4 6 4 1
    杨辉三角的规律: 每个元素的值是他上面两个元素的值的和
    特殊的第一行是1 第二行也是1 因为他们上面只要一个元素 且其值为1
    每一行的首个元素与最后一个元素也是1
    算法思路:定义一个二维数组 , 二维数组的行和列都是所输入的n的值
    二维数组的每一个元素都是杨辉三角的一行
    每一行是一个循环 , 这个循环可以输出杨辉三角的一行
    外层再有一个大循环 , 这个大循环的一次循环就可以输出杨辉三角的一行

  • @Date 2021年1月6日
    */
    public class yanghui {
    public static void main(String[] args){
    Scanner input = new Scanner(System.in);
    String val = null;
    System.out.println(“请输入行数:”);
    val = input.next(); // 程序 执行到此处 先暂停等待输入
    yangHui(3);
    }
    //
    public static void yangHui(int n){
    int len = n + 1 ;
    int arr[][] = new int[len][len];
    for (int i = 0; i < len; i++) {
    for (int j = 0; j < i; j++) {
    if (j == 0 || j == i) {
    arr[i][j] = 1 ; //j等于i的时候 是循环到这一行最后一个元素的时候
    //j = 0 的时候 是这一行的第一个元素 ,这两个元素都是1
    }else{
    arr[i][j] = arr[i-1][j-1] + arr[i-1][j];//否则这个元素的值为他头顶两个
    //元素的和 , 即这个二维数组的上一个元素的其中相邻的两个元素的值.
    }
    System.out.print(arr[i][j] + " ");
    }
    System.out.println();//每循环一次换一次行
    }
    }
    }

提示:这里可以添加要学的内容
例如:
1、 搭建 Java 开发环境
2、 掌握 Java 基本语法
3、 掌握条件语句
4、 掌握循环语句


学习时间:

提示:这里可以添加计划学习的时间
例如:
1、 周一至周五晚上 7 点—晚上9点
2、 周六上午 9 点-上午 11 点
3、 周日下午 3 点-下午 6 点


学习产出:

提示:这里统计学习计划的总量
例如:
1、 技术笔记 2 遍
2、CSDN 技术博客 3 篇
3、 学习的 vlog 视频 1 个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值