黑马程序员--java基础-方法重载与数组
2015-12-05 01:15
417 查看
——- android培训、java培训、期待与您交流! ———-
——- android培训、java培训、期待与您交流! ———-
为了解决,一次性能存入大量相同类型这种情况,Java给我们提供了一项新的技术叫做“数组” 数组:数的组合。可以看作存储大量数据的容器。 数组的定义: 数据类型[] 数组名; //这就定义了一个数组 //数据类型 数组名[]; //不要用这种方法时去写。 数组名 = new 数据类型[数组的大小]; //数组的初始化。
class ArrayDemo { public static void main(String[] args) { /* int a1 = 100; int a2 = 100; int a3 = 100; int a4 = 100; …… int a85 = 100; */ //定义以一个int类型的数组 //int scores[]; //不允许这么写 int[] scores; //这个东西只是告诉计算机,我需要一个int类型的数组叫做scores scores = new int[5]; //告诉计算机,这个scores数组的大小为5 //拿到数组的大小。数组名.length 他是int类型的数据 int a = scores.length; System.out.println(a); } }
数组的使用:其实就是对数组中的变量的使用。 存入: 取出: 修改:
class ArrayDemo1 { public static void main(String[] args) { //定义一个数组 int[] scores; //定义一个int类型的数组,名字叫scores scores = new int[5]; //这个数组的大小为5 //数组的使用 /* 变量的使用:int a; 存入(赋值):a = 12; 取出(直接拿着变量当作值来使用) int b = a; System.out.println(a); 修改(就是直接赋值,这样就把值覆盖了):a = 15; 难点: 要把“scores[0]”整体看作是一个变量的名字,就相当于a */ //存入(赋值) scores[0] = 12; //取出(直接拿着变量当作值来使用) int b = scores[0]; System.out.println(scores[0]); System.out.println("b="+b); //修改(就是直接赋值,这样就把值覆盖了): scores[0] = 15; System.out.println(scores[0]); } }
class ArrayDemo2 { public static void main(String[] args) { int[] arrs; //定义一个int类型的数组,名字叫做arrs arrs = new int[5]; //告诉计算机,我们数组的大小为5 arrs[0] = 15; System.out.println(arrs); /* [I@4e4d1abd [: 代表数组 I: 代表int类型 @:在……地方 4e4d1abd:内存地址。 出现这句话,意味着 数组是“引用数据类型” */ } }
数组定义的格式: 1.数组的动态初始化 数据类型[] 数组名; //数组的声明 数组名 = new 数据类型[大小]; //数组的初始化 简化版本: 数据类型[] 数组名 = new 数据类型[大小]; 2.数组的静态初始化 数据类型[] 数组名; 数组名 = new 数据类型[]{1,5,3,8}; 简化版本: 数据类型[] 数组名 = new 数据类型[]{1,5,3,8}; 终极简化版本: 数据类型[] 数组名 = {1,5,3,8}; 数组定义常见问题: 1.不能同时使用静态初始化和动态初始化。 2.数组中存储的数据必须和数组的类型保持一致。
class ArrayDemo6 { public static void main(String[] args) { int[] arr = new int[5]; /* int a = 5; */ /* 数据类型[] 数组名; 数组名 = new 数据类型[]{1,5,3,8}; 简化版本: 数据类型[] 数组名 = new 数据类型[]{1,5,3,8}; 终极简化版本: 数据类型[] 数组名 = {1,5,3,8}; int[] brr; brr = new int[]{7,8,9}; int[] brr = new int[]{7,8,9}; */ int[] brr = {7,8,9}; System.out.println(brr.length); int[] arr2 = new int[]{1,5,8}; } }
数组的常见问题: 1.ArrayIndexOutOfBoundsException:数组索引越界异常 指的是,我们使用的数组的索引,超出了数组索引的范围。 2.可能尚未初始化变量 数组在使用之前必须初始化。 3.NullPointerException:空指针异常。 数组已经变成空的了,但是我们还要想人家要东西,所以就产生了空指针异常。
class ArrayDemo8 { public static void main(String[] args) { //int[] arr = new int[3]; //int[] arr; int[] arr = new int[3]; arr = null; System.out.println(arr[0]); } }
遍历:就是循环一遍,一个一个的拿出来。 数组的遍历:把数组中的元素一个一个的拿出来。
class ArrayDemo9 { public static void main(String[] args) { int[] arr = {11,15,19,21,85,33}; /* arr[0] arr[1] arr[2] …… arr[arr.length-1] System.out.println(arr[0]); */ for (int a = 0; a< arr.length ;a++) { System.out.println(arr[a]); } //求数组中的最大值 int max = arr[0]; /* max = max > arr[0] ? max : arr[0]; max = max > arr[1] ? max : arr[1]; …… max = max > arr[arr.length-1] ? max : arr[arr.length-1]; */ for (int a = 0; a < arr.length ; a++) { max = max > arr[a] ? max : arr[a]; } System.out.println("数组的最大值为:"+max); } }
基本数据类型:在值的传递时,传递的“值” 引用数据类型:在值的传递时,传递的是“内存地址”
class ArrayTest1 { public static void main(String[] args) { /* int a=5; int b=a; b=10; System.out.println(a); */ int[] arr = {1,2,3}; int[] brr = arr; brr[2] = 5; System.out.println(arr[2]); } }
二维数组:存储数组的数组。 一维数组的格式; 数据类型[] 数组名 = new 数据类型[大小]; int[] arr = new int[5]; 定义方法: 数据类型[][] 数组名 = new 数据类型[m] ; m指的是这里边存储了m个数组。 n指的是二维数组中存储的数组的大小。 int[][] arrs = new int[2][3]; 2指的是arrs里边存储了2个数组。 3指的是arrs中存储的这两个数组,每个数组的大小都为3 二维数组定义方式2: 数据类型[][] 数组名 = new 数据类型[m][]; m指的是这里边存储了m个数组。 二维数组定义方式3: 数据类型[] 数组名 = {1,5,3,8,9}; int[] arr = {1,5,3,8,9}; int[][] arrs = {{1,2,3},{4,5},{3}};
class ArrayArrayDemo { public static void main(String[] args) { /* int[][] arrs = new int[2][3]; System.out.println(arrs[0]); System.out.println(arrs[1]); System.out.println(arrs[0][0]); //二维数组定义方式2 int[][] arrs = new int[2][]; //System.out.println(arrs[0]); //System.out.println(arrs[1]); //System.out.println(arrs[0][0]); arrs[0] = new int[3]; System.out.println(arrs[0]); System.out.println(arrs[0][0]); System.out.println(arrs[1]); //给arrs[1]赋值 arrs[1] = new int[1]; System.out.println(arrs[1][1]); */ // int[][] arrs = {{1,2,3},{4,5},{3}}; System.out.println(arrs[1][2]); } }
二维数组遍历
class ArrayArrayTest {
public static void main(String[] args) {
int[][] arrs = {{1,2,3},{4,5},{3}};
//二维数组遍历//外层循环,遍历二维数组中的数组
for (int a = 0; a < arrs.length ;a++) {
System.out.println(arrs[a]);
//现在发现arrs[a]全都是数组
//内层循环遍历,二维数组中数组的元素
for (int b = 0; b< arrs[a].length ; b++) {
System.out.println(arrs[a][b]);
}
}
}
}
某公司按照季度和月份统计的数据如下:单位(万元) 第一季度:22,66,44 第二季度:77,33,88 第三季度:25,45,65 第四季度:11,66,99
class ArrayArrayTest1 { public static void main(String[] args) { //第一季度:22,66,44 int[] arr1 = {22,66,44}; //第二季度:77,33,88 int[] arr2 = {77,33,88}; //第三季度:25,45,65 int[] arr3 = {25,45,65}; //第四季度:11,66,99 int[] arr4 = {11,66,99}; //定义二维数组 int[][] arrs = {arr1,arr2,arr3,arr4}; //int[][] arrs = new int[4][]; //arrs[0] = arr1; //求整个公司的盈利,就是求这个二维数组的和。 int sum = 0; //先拿出二维数组中的数组 for (int a = 0;a<arrs.length;a++) { //arrs[a],就是每个数组 //对这个数组进行遍历 for (int b = 0;b<arrs[a].length;b++) { sum = sum + arrs[a][b]; } } System.out.println(sum); } }
方法重载(overload): 要求: 1.方法名完全相同 2.参数列表不同 3.和返回值、访问修饰符、方法体都没有关系。 参数列表不同的表现: 1.参数个数不同 2.相应位置上参数类型不同。 3.和参数名称没有任何关系。 数组定义与初始化: 数组的声明: 数据类型[] 数组名; 数组的初始化: 数组名 = new 数据类型[大小]; 数组定义方式: 数组的动态初始化。 数据类型[] 数组名 = new 数据类型[大小]; 数组的静态初始化: 数据类型[] 数组名 = new 数据类型[]{值1,值2……}; 数据类型[] 数组名 = {值1,值2……}; 数组赋值与使用: 索引:数组中每一个小块的编号。索引有时候也叫做角标、下标。Index 数组最大的索引:数组的长度-1; //数组的长度:数组名.length 数组最小的索引:0 找到数组中的元素:数组名[索引]; 如果找到元素,则就可以把这个元素当作一个变量来处理。 Java的默认值: 整数类型默认值:0 浮点型默认值:0.0 char型默认值:ASCII编码为0的字符。‘\u0000’ boolean型默认值:false 引用数据类型:null String和数组都是引用数据类型。 参数传递(不同类型的赋值) 基本数据类型:传递和赋值都传递的是值。 引用数据类型:传递和赋值的都是内存地址。String除外。 二维数组(了解): 定义格式1: 数据类型[][] 数组名 = new 数据类型[m] ; m表示这个二维数组中存储了m个一维数组。 n表示这二维数组中存储的一维数组的大小都为n 定义格式2: 数据类型[][] 数组名 = new 数据类型[m][]; m表示这个二维数组中存储了m个一维数组。 定义格式3: 数据类型[][] 数组名 = {数组1,数组2……} 二维数组的遍历: 使用循环嵌套遍历。 外层循环遍历二维数组中的每个数组。 内层循环遍历数组中的每个元素。
——- android培训、java培训、期待与您交流! ———-
相关文章推荐
- 115个Java面试题和答案(下)
- 115个Java面试题和答案(上)
- 黑马程序员------小练习
- 黑马程序员_简单实用 ,客户端跟服务器进行数据传输的结束标记 ,特别是被老师洗脑太深的,不看别后悔。
- 程序员必须了解的内存知识
- 程序员学习能力提升三要素
- 优秀程序员的七大特征,你具备几条?
- 优秀程序员的七大特征,你具备几条?
- 黑马程序员__Java多线程Thread
- 黑马程序员__Java输入输出流
- 黑马程序员--java基础之方法流程控制总结
- 第一篇博客,谈谈程序员
- 黑马程序员_java基础_正则表达式
- 黑马程序员——Foundation框架——NSString常用方法
- hpuoj 1720: 感恩节KK专场——面试难题【贪心】
- 王道程序员求职宝典阅读笔记20151204
- 细思极恐!未来百万人将下岗十大职业将消失
- 国内互联网公司算法&机器学习岗(阿里星)面试总结
- 2015年应届硕士生求职经验总结【算法工程师岗&无线通信研发岗】
- 黑马程序员之System、Runtime、Math、Date、Calendar类