JAVASE第5天笔记
来源:互联网 发布:淘宝脱毛仪器有效果吗 编辑:程序博客网 时间:2024/06/07 06:37
标签(空格分隔): 未分类
数组的概述(非常非常重要)
数组是什么?
可以存储同一数据类型数据的集合/容器
格式
数据类型[] 数组名 = new 数据类型[数组的长度];
int[] arr = new int[3];
char[] arr = new char[5];
double[] arr = new double[10];
数据类型: 基本数据类型 引用数据类型
基本数据类型 :四类八种
String 引用数据类型
String[] arr = new String[5];
分解
左边:
int:数据类型
[]:代表的数组,几个中括号就代表几维数组
arr:合法的标识符
右边: new:创建新的实体或对象 int:数据类型 []:代表的数组 5:代表数组的长度
数组的动态初始化(重要)
class DataArray_Demo { public static void main(String[] args) { /* 什么是数组初始化? 为数组开辟连续的内存空间 默认初始化值 整数 0 小数 0.0 布尔 false char '\u0000' 数组的动态初始化格式 数据类型 [] 数组名 = new 数据类型[数组的长度]; */ int [] arr = new int[5]; //整型 char [] arr1 = new char[10]; //字符型 double [] arr2 = new double[5]; // 浮点型 String [] arr3 = new String [5]; //字符串类型 //问题: 怎么获取数组中元素? // 数组名[索引/下标/角标] System.out.println(arr[0]); System.out.println(arr1[0]); System.out.println(arr2[0]); System.out.println(arr3[0]); }}
数组的内存图(要会画出来)
内存分区:
栈内存 堆内存 方法区 本地方法区 寄存器
栈内存 堆内存
举例:int [] arr = new int[5] ;
栈内存 : 方法进栈 存放局部变量
堆内存 : new 出来的对象
内存图的练习
要求能够自己根据案例画出内存图 一个数组 两个数组 三个引用两个数组
疑问:
class ArrayDemo { public static void main(String[] args) { int [] arr1 = new int[5]; int [] arr2; int [] arr3; //疑问: 没有初始化的引用数据类型,能直接用吗?不可以,要初始化后才在堆内存赋予默认值 System.out.println(arr1[0]); System.out.println(arr1[1]); System.out.println(arr1[2]); System.out.println(arr1[3]); System.out.println(arr1[4]); }}
数组静态初始化(非常重要)
静态初始化 一开始创建数组,直接给数组赋值格式: 数据类型 [] 数组名 = new 数据类型[] {元素1,元素2....}; 简写版本 数据类型[] 数组名 = {元素1,元素二...};注意事项: 举例 int [] arr ; arr = {1,2,3...}; 简写版本不允许写成两条语句,标准版本可以.简写不可以! 不允许动静结合 举例 int [] arr = new int[5]{1,2,4,5,6}; //不允许! 定义什么数据类型的就写什么类型的元素,不要搞错!
class ArrayDemo01 { public static void main(String[] args) { //静态初始化 简写版本 int[] arr = {1,2,5,6}; char [] arr2 = {'我','爱','超','帅'}; double [] arr3 = {1.1,1.2,13.5,2.0}; //标准版本 int [] arr4 = new int[]{5,6,7,8}; char [] arr5 = new char[]{'超','帅','很','帅'}; }}
数组两个异常(非常重要)
数组越界异常ArrayIndexOutOfBoundsException空指针异常NullPointerException
class ArrayException_Demo { public static void main(String[] args) { //定义一个数组,开辟三个连续空间 int[] arr = new int[3]; //System.out.println(arr[5]); ///java.lang.ArrayIndexOutOfBoundsException: 5 越界异常 //空指针异常 没有任何指向,地址值木有了.... int [] arr2 = new int[4]; arr2 = null; System.out.println(arr2[2]); ////java.lang.NullPointerException }}
数组的遍历(非常非常非常重要)
遍历:把数组中的元素依次输出属性: 数组名.length 可以求出数组的长度int[] arr = {1,2,3,4,5};for(int i = 0;i < arr.length;i++){ System.out.println(arr[i]);}
/** A:案例演示 * 数组遍历:就是依次输出数组中的每一个元素。 * 数组的属性:arr.length数组的长度 * 数组的最大索引:arr.length - 1;*/class Demo8_Array { public static void main(String[] args) { int[] arr = {11,22,33,44,55}; /*System.out.println(arr[0]); System.out.println(arr[1]); System.out.println(arr[2]); System.out.println(arr[3]); System.out.println(arr[4]);*/ for (int i = 0;i < 5 ;i++ ) { System.out.println(arr[i]); } System.out.println("---------------"); //arr.length 代表的是数组的长度 System.out.println(arr.length); for (int i = 0;i < arr.length ;i++ ) { System.out.println(arr[i]); } int[] arr2 = {3,4,5}; print(arr2); } /* 数组的遍历 1,返回值类型void 2,参数列表int[] arr */ public static void print(int[] arr) { for (int i = 0;i < arr.length ;i++ ) { System.out.print(arr[i] + " "); } }}
获取最值(练习)
第一步: 创建一个数组第二步: 先把数组中第一个元素 用一个变量存储起来第三步: 遍历数组,然后拿刚才保存的第一个元素 逐个和第二个开始的元素比较,如果第一个元素小于第二个,那就交换,定个临时变量交换!第四步:直至遍历完成,得到的那个变量就是最大值
数组反转(练习)
class ArrayReverseDemo { public static void main(String[] args) { //第一步 创建一个数组 int [] arr = {11,22,33,44,55}; //第二步: reverseArr int[] newArr = reverseArr(arr); for (int j = 0;j < newArr.length ;j++ ) { System.out.print(newArr[j] + " "); } } public static int[] reverseArr(int[] oldArr){ //思想 //第一步 创建一个新的数组,然后长度和你传进来的数组长度一样 //第二步 把旧的数组元素 从后面开始 往前一个个 存到新的数组里面 int [] newArr = new int[oldArr.length]; //第三步 遍历 for (int i = 0;i < oldArr.length ;i++ ) { newArr[i] = oldArr[oldArr.length - 1 - i]; } return newArr; /* for (int j = 0;j < newArr.length ;j++ ) { System.out.print(newArr[j] + " "); }*/ }}
数组的查找(练习)
第一步: 创建一个数组第二步: 定义一个方法,方法声明要求传入你要找的值和值所在的数组第三步: 遍历数组,把数组中的元素逐个和你要找的元素匹配,如果能找到,返回这个数的角标,如果找不到,返回-1
二维数组(了解)
本质 其实就是一个一维数组,在一维数组里面放的是一维数组定义写法一 :数据类型 [] [] 数组名 = new 数据类型 [m][n];写法二 :数据类型 [] 数组名 [] = new 数据类型[m][n];举例: int[][] arr = new int[3][2]; int[] arr[] = new int[5][3];格式二 数据类型 [][] 数组名 = new 数据类型[m][]; 举例: int[] [] arr = new arr[3][];格式三数据类型[][] 数组名 = {元素一,元素二..},{元素一,元素二},{...}...};举例 : int[] [] arr = {{1,2,3},{1,2,3},{...}...};二维数组中多个一维数组的长度可以不同(之后学习),且存储的是一维数组的地址值。
二维数组的遍历(掌握)
/** A:案例演示 * 需求:二维数组遍历 * 外循环控制的是二维数组的长度,其实就是一维数组的个数。 * 内循环控制的是一维数组的长度。*/class Test1_Array { public static void main(String[] args) { int[][] arr = {{1,2,3},{4,5},{6,7,8,9}}; for (int i = 0;i < arr.length ;i++ ) { //获取到每个二维数组中的一维数组 for (int j = 0;j < arr[i].length ;j++ ) { //获取每个一维数组中的元素 System.out.print(arr[1][1] + " "); } System.out.println(); } }}
二维数组的求和(遍历)
/** A:案例演示* 需求:公司年销售额求和 某公司按照季度和月份统计的数据如下:单位(万元) 第一季度:22,66,44 第二季度:77,33,88 第三季度:25,45,65 第四季度:11,66,99*/class Test2_Array { public static void main(String[] args) { int[][] arr = {{22,66,44},{77,33,88},{25,45,65},{11,66,99}}; int sum = 0; //定义变量,记录每次相加的结果 for (int i = 0;i < arr.length ;i++ ) { //获取每一个一维数组 for (int j = 0;j < arr[i].length ;j++ ) { //获取每一个一维数组中的元素 sum = sum + arr[i][j]; //累加 } } System.out.println(sum); }}
java中 参数传递问题(非常非常非常重要)
/*
基本数据类型的值传递,不改变原值,因为调用后就会弹栈,局部变量随之消失
引用数据类型的值传递,改变原值,因为即使方法弹栈,但是堆内存数组对象还在,可以通过地址继续访问
Java中到底是传值还是传址
1,既是传值,也是传地址,基本数据类型传递的值,引用数据类型传递的地址
2,java中只有传值,因为地址值也是值(出去面试都说这种,支持者是高司令(java之父))
*/
0 0
- JAVASE第5天笔记
- JAVASE学习笔记第5天
- JAVASE第26天笔记
- JAVASE第2天笔记
- JAVASE第3天笔记
- JAVASE第4天笔记
- JAVASE第6天笔记
- JAVASE第6天笔记
- JAVASE第7天笔记
- JAVASE第8天笔记
- JAVASE第9天笔记
- JAVASE第10天笔记
- JAVASE第11天笔记
- JAVASE第12天笔记
- JAVASE第13天笔记
- JAVASE第14天笔记
- JAVASE学习笔记第6天
- JAVASE学习笔记第7天
- JAVASE第2天笔记
- Lesson 11: 绘制三角形
- 简单小程序敲着练手额~
- JAVASE第3天笔记
- JAVASE第4天笔记
- JAVASE第5天笔记
- 动态规划总结
- JAVASE第6天笔记
- install salt & initial configuration(centos7)
- Vollery网络框架的源码分析
- ExtJS框架 使用树控件TreeNode \ TreeLoader
- JAVASE第6天笔记
- JAVASE第7天笔记
- 将.csv格式转换成.txt