学习目标:了解数组和多维数组(二维数组学习经典案例杨辉三角)
提示:这里可以添加学习目标
例如:一周掌握 Java 入门知识
学习内容:
- 数组的基本概念
数组可以看作是多个相同类型的数据的组合, 以实现对这些数据的统一管理. 数组又称为索引数组 .
数组是引用数据类型 , 是源自底层的数据结构 , 并且几乎在所有的语言中都是最基本的数据结构 .
数组在内存里是一块连续的内存空间 , 这意味着 ,只需要找到数组的一个元素 , 其他的元素就都可以找到了.所以数组的查询和更改的效率极高 , 但是增删的效率极低 .
数组会占用两块内存 , 栈内存一块 , 堆内存一块 , 栈内存用来保存堆内存里数组对象的地址
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 个