什么是数组?

数组是一个容器,用来存储多个数据(数据类型相同)

声明一个数组就是在内存中开辟一串连续的空间

数组的结构和基本要素

  • 标识符:数组的名称,用于区分不同的数组
  • 数组元素:向数组中存放的数据
  • 元素的索引:对数组元素进行编号
  • 元素类型:数组元素的数据类

注意:

  1. 数组只有一个名称,即标识符
  2. 元素索引标明了元素在数组中的位置,下标从0开始
  3. 数组中的每个元素都可以通过索引来访问
  4. 数组长度固定不变,避免数组索引越界
  5. 数组变量属于引用数据类型  

如何使用数组

使用数组的方式

1.动态初始化

数组的创建与初始化分开完成

int[] a = new int[3];
a[0] = 1;//通过索引赋值
a[1] = 2;
a[2] = 3;

2.静态初始化

在创建数组对象时就完成初始化

int[] a = {1,2,3};
int[] a = new int[]{1,2,3};

单独的去访问数组里的值

//因为数组使用索引操作,下标从0开始
System.out.println(a[0]);
System.out.println(a[1]);
System.out.println(a[2]);

利用循环遍历数组中的值

/*     a.length 是求出输出的长度
a.length结果为3
因为索引从0开始,所以 i = 0;
*/
for(int i = 0;i < a.length ; a++){
// i的最大值为2 ,所以判断的时候 i<a.length
System.out.println(a[i]);
}

注意:操作数组时可能会出现的异常及原因

数组索引越界异常:

ArrayIndexOutOfBoundsException

原因:访问了数组中不存在的索引

例如:int[] a = {1,2,3};System.out.println(a[3]);

空指针异常

NullPointerException

原因:当数组的索引被置为null,然后还去访问数组里面的元素,就会出现空指针异常。

增强for循环遍历数组

int[] b = {3,4,5,2,1};
for(int i : b){
System.out.println(i);// 不能操作索引
}

二维数组

什么是二维数组?

二维数组本质上是以数组作为数组元素的数组,即“数组的数组”,二维数组又称为矩阵,行列数相等的矩阵称为方针

怎么创建一个二维数组

数据类型[][]  对象名 = new 数据类型[x][y];
x代表行
y代表列

例如:

int[][] a = new int[2][2];

数组:使用索引来操作元素,下面给二维数组赋值

a[0][0] = 1;//第一行第一列
a[0][1] = 2;//第一行第二列
a[1][0] = 3;//第二行第一列
a[1][1] = 4;//第二行第二列

如何遍历一个二维数组:

for(int i = 0;i<a.length;a++){   // 外层循环代表行  a.length 求行数
for(int j = 0;j<a[i].length;j++){//内层循环代表列 a[i].length 求每一行的列数
System.out.print(a[i][j]);//打印第i行第j列的值
}
System.out.println();
}

二维数组直接赋值:

//第一种情况
int[][] b = {
{1,2},
{3,4}
};
// 这个数组与上述例子一样
System
第二种情况:
int[][] c = new int[][]{
{1,2},
{3,4}
};

学到这里二维数组完了吗?没呢,还有一种情况。

// 先声明行,后声明列:
String[][] y = new String[2][];
y[0] = new int[2]; // 定义第一行有2列
y[1] = new int[3];//定义第二行有3列
// 例如:多个市属于一个省
// 广东省
y[0][0] = "广州市";
y[0][1] = "深圳市";
//陕西省
y[1][0] = "宝鸡市";
y[1][1] = "西安市";

方法

什么是方法?

实现某个目的的具体过程

为什么要用方法?

提高代码的复用性

方法分为两类四种

访问修饰符  是否静态 有无返回值  方法名( 有无参数 ){

}
//相似与
public static void main(String[] args){ }

一、无返回值

// 1.无参数无返回值
public static void demo1(){
System.out.println("我是无参数无返回值");
}
// 1.有参数无返回值
// 何为参数? f(x)这个函数里面的 x 就叫做参数
public static void demo2(int i){// int i 就是参数
System.out.println(i);
}

二、有返回值

// 1. 无参数有返回值
// 什么是返回值? 把void这个关键字改为 数据类型时就说明这个方法是有返回值的
// 怎么返回? 用 return 关键字, 返回的值的类型与方法上面的数据类型一致
public static int demo3(){
return 5; // 返回值,顾名思义返回的是一个值
}
public static int demo4(){
int a = 5;
return a;
}
//2.有参数有返回值
public static int demo5(int i){ return i;
}

注意:其实每一个方法最后一行都有一个return,没有返回值可以省略不写,但系统会帮我们添加一个,其作用就是为了结束方法,如果手动的写出return就不允许带回任意的数据

public static void test(){
return;
}

1.定义方法的步骤是什么?

​ 定义方法有两个明确:

​ a.是否有返回值

​ b.是否有未知参,参与运算

2.方法的执行流程是什么?

​ 自己定义的方法不被调用的时候是不会被执行的。

​ 在主函数里直接写上方法的名字即可(要考虑是否需要参数)

调用者: 主函数,main

执行者: 某一个方法本身

实际参数: 实际参与运算的数据

形式参数: 方法小括号里的变量

定义及使用方法的注意事项有哪些?

1、方法不能定义在另一个方法的里面

2、写错方法名字

3、写错了参数列表

4、方法返回值是void,方法中可以省略return不写(return后面与下面不能有代码)

5、方法返回值类型和return后面数据类型必须匹配

6、调用方法的时候,返回值void不能写在输出语句中

方法重载

什么是方法重载?

在同一个类中:方法名相同,参数列表不同(参数个数,类型,顺序),与返回值无关

public static void test1(){

}
public static void test2(int i){ }
public static void test3(String name){ }
public static void test4(char sex){ }
public static void test5(double weight){ }
public static void test6(int i,int j){ }
public static void test7(int i,String name){ }

方法参数分两种

一、基本数据类型

基本数据类型的变量当作参数传递的时候,方法的局部变量会随着方法的执行完毕而释放

局部变量:定义在方法的声明上和方法体内

二、引用数据类型

引用数据类型当作参数传递,其实传递的是地址值

即使方法执行完毕,但是实体(对象,数组)还在内存中

最新文章

  1. MariaDB学习
  2. Python 判断字符串是否为数字
  3. PHP redis 批量操作
  4. C#访问postgresql数据库
  5. [mysql] mysql 5.6.27 innodb 相关参数
  6. Union的妙用和注意
  7. 【笨嘴拙舌WINDOWS】GDI对象之位图
  8. lintcode:Subtree 子树
  9. 仿酷狗音乐播放器开发日志十九——CTreeNodeUI的bug修复二(附源码)
  10. UIViewController生命周期测试
  11. MediaInfo源代码分析 4:Inform()函数
  12. NgNice项目案例
  13. POJ 2054 Color a Tree#贪心(难,好题)
  14. BZOJ 1119: [POI2009]SLO [置换群]
  15. amazeui表单form异步提交方法
  16. cocos2dx 实现gpu instancing
  17. JavaScript 进阶
  18. thymeleaf 格式化时间
  19. 函数 day9
  20. JS:事件委托

热门文章

  1. 格式化代码引发的css编译失败
  2. 用Java实现AES加密
  3. JS变量重复声明以及忽略var 声明的问题及其背后的原理
  4. 潭州课堂25班:Ph201805201 tornado 项目 第五课 增加用户系统-用户中心(课堂笔记)
  5. hadoop2-hive
  6. C#中关键字 &#39;User&#39; 附近有语法错误
  7. linux学习:find用法整理
  8. shell - shift
  9. org.apache.ibatis.binding.BindingException: Parameter &#39;start&#39; not found. Available parameters are [1, 0, param1, param2]
  10. NSTextField/NSTextView中显示超链接以及NSMutableAttributedString用法