大龄屌丝自学笔记--Java零基础到菜鸟--013

数组,二维数组,杨辉三角形

1、数组

数组是存储同一数据类型的多个元素的集合。

数组既可以存储基本数据类型,也可以存储引用数据类型。

数组的定义格式:数据类型[] 数组名  //数组必须初始化之后,才能使用

数组动态初始化:数据类型[] 数组名 = new 数据类型[数组长度];  如:int[] a = new a[3];  //初始化时,只指定数组的长度

数组静态初始化1:数据类型[] 数组名 = new 数据类型[]{元素1 , ... , 元素n};  如:int[] a = new a[]{1,2,3};  //初始化时,即指定每个数组元素的初始值

数组静态初始化2:数据类型[] 数组名 = {元素1 , ... , 元素n};  如:int[] a = {1,2,3};  //初始化时,即指定每个数组元素的初始值

数组元素的值:数组名[索引] ,如:int[] a = {1,2,3};  int n = a[1];  //n=2,数组的索引从0开始,数组是引用类型

 1 class Fin{
 2     public static void main(String[] args){
 3         int[] a=int[3];
 4         a[0]=1;
 5         a[1]=2;
 6         a[2]=3;
 7
 8         int[] b=a;
 9         b[1]=4;
10
11         System.out.println(b)     //输出数组b的地址(与数组a的地址相同)
12         System.out.println(a[1])  //a[1]=4
13     }
14 }

常见问题:索引越界异常、空指针异常。

索引越界异常:数组的索引大于数组的元素个数,访问不存在的索引,如:int[] a = int[3];  int n = a[5];   //报错

空指针异常:数组已不再指向【堆】内存,仍然访问数组,如:int[] a = int[3];  n = null;  int n = a[0];  //报错

获取数组的长度:数组名.length;  //int

1 // 数组的逆序
2 public static void liverpool(int[] arr){
3     int k=0;
4     for(int i=0,j=arr.length-1;i<j;i++,j--){
5         k=arr[i];
6         arr[i]=arr[j];
7         arr[j]=k;
8     }
9 }

2、二维数组

二维数组就是元素为一维数组的数组。

二维数组的定义格式:数据类型[][] 数组名

二维数组动态初始化1:数据类型[] 数组名 = new 数据类型[m][n];  如:int[][] a = new a[2][3];  //m(2)个长度为n(3)的一维数组

二维数组动态初始化2:数据类型[] 数组名 = new 数据类型[m][];  如:int[][] a = new a[2][];  //m(2)个未初始化的一维数组

二维数组静态初始化1:数据类型[] 数组名 = new 数据类型{{元素...}, ... ,{元素...}};  如:int[][] a = new int[][]{{1,2,3} , {4,5} , {6}};

二维数组静态初始化2:数据类型[] 数组名 = {{元素...}, ... ,{元素...}};  如:int[][] a = {{1,2,3} , {4,5} , {6}};

二维数组元素的值 :数组名[索引][索引] ,如:int[][] a = {{1,2,3} , {4,5,6}};  int n = a[1][2];  //n=6

3、杨辉三角形

每行的第一列、最后一列,值为1;第三行开始,每列(最后一列除外)的值等于上一行的前一列和上一行的本列之和,即a[m][n]=a[m-1][n-1]+a[m-1][n]。

 1 class Test{
 2     public static void main(String[] args){
 3         yang(5);
 4     }
 5
 6     public static void  yang(int n){
 7         if(n>0){
 8             //二维数组
 9             int[][] y=new int[n][];
10             if(n==1){
11                 y[0]=new int[]{1};
12             }else if(n==2){
13                 y[0]=new int[]{1};
14                 y[1]=new int[]{1,1};
15             }else{
16                 y=new int[n][];
17                 y[0]=new int[]{1};
18                 y[1]=new int[]{1,1};
19                 for(int i=2;i<n;i++){
20                     y[i]=new int[i+1];
21                     for(int j=0;j<=i;j++){
22                         if(j==0||j==i){
23                             y[i][j]=1;
24                         }else{
25                             y[i][j]=y[i-1][j-1]+y[i-1][j];
26                         }
27                     }
28                 }
29             }
30             //输出
31             for(int i=0;i<y.length;i++){
32                 for(int j=0;j<y[i].length;j++){
33                     System.out.print(y[i][j]+ "  ");
34                 }
35                 System.out.println("");
36             }
37         }else{
38             System.out.print("bug");  //n<1,bug
39         }
40     }
41 }
时间: 2024-11-01 14:04:03

大龄屌丝自学笔记--Java零基础到菜鸟--013的相关文章

大龄屌丝自学笔记--Java零基础到菜鸟--017

代码块,继承,this 和 super,方法的重写 1.代码块:使用 “{}” 括起来的代码,称为代码块. 构造代码块:在类中的成员位置,用 “{}” 括起来的代码. 静态代码块:构造代码块+静态修饰符. 局部代码快:局部位置,用于限定变量的生命周期. 1 class Test{ 2 static { 3 System.out.println("静态代码块"); 4 } 5 6 { 7 System.out.println("构造代码块"); 8 } 9 10 pu

大龄屌丝自学笔记--Java零基础到菜鸟--028

泛型,for循环增强应用,静态导入,可变参数,asList() 1.泛型 约束了数据类型,格式为 <数据类型>,如:ArrayList<int> aList=new ArrayList<int>(); 泛型通配符:<?> Object及任意类,<?extends E> E类及其子类,<?super E> E类及其父类. 2.for循环增强应用 1 ArrayList<String> aList=new ArrayList&

大龄屌丝自学笔记--Java零基础到菜鸟--005

关键字,标识符,注释,常量 1.关键字 Java语言具有特定含义的单词,字母全部小写,如:class.public.static.void...... 2.标识符 给接口.类.方法.变量起的名字,如:Fin.main ...... 组成规则:英文字母.数字.$._ ...... 注意事项:不能以数字开头,不能使用关键字,英文字母区分大小写 命名规则:包:小写字母组成,多级包上下级间加 “.” ,如:liverpool(单级包).liverpool.gerrard(多级包) ...... 接口:大

大龄屌丝自学笔记--Java零基础到菜鸟--003

配置环境变量:Path,classpath 1.Path,可以在任意地方执行 “javac.exe” . [计算机]右键[属性]--[高级]选项卡[环境变量]--系统变量[新建],变量名输入 “Java_Home” ,变量值输入JDK安装目录--[确定]. 选择系统变量 “Path” [编辑]--变量值前输入 “%Java_Home%\bin;” --[确定]. 2.classpath,可以在任意地方执行指定目录中的 “.class” 文件. 系统变量[新建],变量名输入 “classpath”

大龄屌丝自学笔记--Java零基础到菜鸟--004

Notepad++下载.安装.设置 1.下载 百度Notepad++,选择百度下载. 2.安装 下载完成后,双击安装文件,下一步傻瓜式安装. 3.设置 启动Nodepad++,[设置]--[首选项]. [首选项]选项卡中,选择[新建],设置 “默认语言” 为 “Java” ,设置 “编码” 为 “ANSI” ,点击[关闭]完成设置,以后可以使用Notepad++编写Java代码.

大龄屌丝自学笔记--Java零基础到菜鸟--001

JDK的下载和安装 1.下载JDK 下载地址:http://www.oracle.com 选择操作系统对应的安装文件. 2.安装JDK 双击启动安装文件,下一步傻瓜式安装,安装路径不要有中文.空格. 安装完成后,win+R,输入“cmd”回车,启动控制台. 直接输入“java”回车,验证是否安装成功. 如图表示安装成功. 3.JDK的卸载 控制面板中卸载.

大龄屌丝自学笔记--Java零基础到菜鸟--002

Hello World 1.进入JDK安装目录下的bin文件夹,新建记事本文件liverpool.txt. 2.在记事本中输入以下代码,并关闭保存. 1 class Fin{ 2 public static void main(String[] args){ 3 System.out.println("Hello World"); 4 } 5 } 3.修改记事本文件后缀名为.java 4.启动控制台,进入该文件夹,输入 “javac liverpool.java” 回车,编译,生成类文

大龄屌丝自学笔记--Java零基础到菜鸟--020

包,权限修饰符,内部类,练习题 1.包 包:package,对类进行分类管理的文件夹. 包的格式:package 包名,多级包用 “.” 隔开,如:package asia.persia . 带包文件的编译:手动创建相应的文件夹:或者编译命令加 “ -d” ,如:javac -d liverpool.java . 访问不同包中的类文件:类文件前加上包的全路径,如:asia.persia.Demo de=new asia.persia.Demo(); . 使用 “import” 关键字导入包. i

大龄屌丝自学笔记--Java零基础到菜鸟--037

类的加载.类加载器.反射 1.类的加载 系统会通过加载.连接.初始化三步来实现类的初始化. 2.类加载器 根类加载器:Bootstrap ClassLoader 扩展类加载器:Extension ClassLoader 系统类加载器:System ClassLoader 3.反射 Class[类]:Constructor[构造方法],Method[成员方法],Field[成员变量].