Java 复习整理day03
变量或者是常量, 只能用来存储一个数据, 例如: 存储一个整数, 小数或者字符串等.
如果需要同时存储多个同类型的数据, 用变量或者常量来实现的话, 非常的繁琐. 针对于
这种情况, 我们就可以通过数组来实现了.
例如: 假设某公司有50名员工, 现在需要统计该公司员工的工资情况, 例如计算平均
工资、获取最高工资等。针对于这个需求,如果用前面所学的知识实现,程序首先需要声
明50个变量来分别记住每位员工的工资,然后在进行操作,这样做非常繁琐,而且错误率
也会很高。因此我们可以使用容器进行操作。将所有的数据全部存储到一个容器中,统一
操作。数组, 就是一种容器.
解释:
- 容器: 就是将多个数据存储到一起, 每个数据都是该容器的元素.
- 现实生活中的容器: 水杯, 衣柜, 教室等...
数组概述
数组就是用来存储多个同类型元素的容器, 例如: 存储5个整数, 或者存储10个小数, 亦或
者存储3个字符串等...
1 package com.it.demo08_array;
2
3 /*
4 案例: 演示数组的定义格式.
5
6 数组简介:
7 概述:
8 数组就是用来 同时存储 多个 同类型元素 的容器.
9 定义格式:
10 动态初始化: 我们给长度, 由系统给出默认值.
11 格式1:
12 数据类型[] 数组名 = new 数据类型[长度];
13 int[] arr = new int[3];
14
15 格式2:
16 数据类型 数组名[] = new 数据类型[长度];
17 int arr[] = new int[3];
18
19 静态初始化: 我们给出默认值, 由系统决定长度.
20 格式1:
21 数据类型[] 数组名 = new 数据类型[]{值1, 值2, 值3...};
22 int[] arr = new int[]{11, 22, 33};
23
24 格式2:
25 数据类型[] 数组名 = {值1, 值2, 值3...};
26 int[] arr = {11, 22, 33}; //属于格式1的简化版, 学名叫: 语法糖.
27 */
28 public class Demo01 {
29 public static void main(String[] args) {
30 //1.创建int类型的数组, 用来存储3个元素. //我们给长度, 系统给默认值, 这个叫: 动态初始化.
31 //格式1: 定义一个int类型的数组, 数组名叫: arr1, 初始化长度为3.
32 int[] arr1 = new int[3]; //推荐使用.
33
34 //格式2: 定义一个int类型的arr数组, 数组名叫arr2, 初始化长度为3.
35 int arr2[] = new int[3];
36
37
38 //2.创建int类型的数组, 存储数据11, 22, 33. //我们给值, 由系统决定长度, 这个叫: 静态初始化.
39 //格式1:
40 int[] arr3 = new int[]{11, 22, 33}; //推荐使用.
41
42 //格式2: 语法糖
43 int[] arr4 = {11, 22, 33}; //推荐使用.
44 }
45 }
1 /*
2 定义数组容器
3 定义数组容器,要素,强制数据类型的语言
4 必须有数据类型, 大小, 就是存储数据的个数
5 定义数组公式:
6 数据类型[] 变量名 = new 数据类型[存储元素的个数];
7
8 数据类型: 数组中存储元素的数据类型
9 [] 表示数组的意思
10 变量名 自定义标识符
11
12 new 创建容器关键字
13 数据类型: 数组中存储元素的数据类型
14 [] 表示数组的意思
15 元素个数,就是数组中,可以存储多少个数据 (恒定, 定长)
16
17 数组是一个容器: 存储到数组中的每个元素,都有自己的自动编号
18 自动编号,最小值是0, 最大值,长度-1
19 自动编号专业名次, 索引(index), 下标, 角标
20 访问数组存储的元素,必须依赖于索引, 公式 数组名[索引]
21
22 Java提供一个属性,操作索引的
23 数组的一个属性,就是数组的长度, 属性的名字 length
24 使用属性: 数组名.length 数据类型 int
25
26 数组的最小索引是0, 最大索引数组.length-1
27 */
28 public class ArrayDemo{
29 public static void main(String[] args){
30 //定义数组,存储整数,容器长度, 3个
31 // 数据类型[] 变量名 = new 数据类型[存储元素的个数];
32 int[] arr = new int[3];
33 System.out.println(arr);
34
35 //通过索引的方式,数组中的三个元素
36 System.out.println(arr[0]);
37 System.out.println(arr[1]);
38 System.out.println(arr[2]);
39
40
41 System.out.println(arr.length);
42
43
44
45
46
47 }
48 }
1 /*
2 数组的常用两个定义方式
3 数据类型[] 变量名 = new 数据类型[]{元素1,元素2,元素3};
4 注意事项: new 后面的中括号中,不允许写任何内容,写了就编译失败
5
6 数据类型[] 变量名 = {元素1,元素2,元素3};
7 */
8 public class ArrayDemo_2{
9 public static void main(String[] args){
10 //定义数组,定义的同时,对元素进行赋值
11 int[] arr = new int[]{1,2,4,5,7,9};
12 System.out.println(arr.length);
13 System.out.println(arr[5]);
14
15
16 System.out.println("==================");
17 //定义数组,直接大括号赋值
18 int[] arr2 = {0,2,4,6,8};
19 System.out.println(arr2.length);
20 System.out.println(arr2[1]);
21 }
22 }
1 /*
2 数组的操作, 使用索引,对数组中的元素赋值
3 */
4 public class ArrayDemo_1{
5 public static void main(String[] args){
6 //定义数组,存储int类型数组,长度就是5
7 int[] arr = new int[5];
8
9 //将1索引上的元素,赋值3
10 arr[1] = 3;
11 System.out.println(arr[1]);
12 System.out.println(arr[2]);
13 }
14 }
1 /*
2 数组遍历:
3 将所有的数组元素,全获取
4 依靠索引, 规律从0开始,一直在自动增长1, 到达length-1
5 循环来实现
6 for 知道循环次数, 计数器思想
7 while 不确定循环次数
8 */
9
10 public class ArrayDemo_3{
11 public static void main(String[] args){
12 int[] arr = {2,1,3,5,7,0,4};
13
14 for(int i = 0 ; i < arr.length; i++){
15 System.out.println(arr[i]);
16 }
17 }
18 }
1 /*
2 数组操作中,常见的两个异常
3 数组的索引越界异常
4 空指针异常
5 */
6 public class ArrayDemo_4{
7 public static void main(String[] args){
8 //数组的索引越界异常
9 //int[] arr = {5,2,1};
10 //数组中3个元素,索引 0,1,2
11 //System.out.println(arr[3]);//java.lang.ArrayIndexOutOfBoundsException: 3
12
13 //空指针异常
14 int[] arr2 = {1,5,8};
15 System.out.println(arr2[2]);
16 arr2 = null; // arr2 不在保存数组的地址了
17 System.out.println(arr2[2]);//java.lang.NullPointerException
18 }
19 }
1 /*
2 计算数组中的最大值
3 数组 {4,1,7,5}; 做比较
4 */
5 public class ArrayDemo_5{
6 public static void main(String[] args){
7 //定义数组,int类型
8 int[] arr = {5,1,12,4,6,8,0,3};
9 //定义变量,记录数组中0索引上的元素
10 int max = arr[0];
11
12 //遍历数组,获取所有的元素,和变量max比较
13 for(int i = 1; i < arr.length ; i++){
14 //变量max,和数组中的每个元素进行比较
15 //如果max,小于了数组中的一个元素
16 if( max < arr[i] ){
17 //较大的数组的元素,赋值给max
18 max = arr[i];
19 }
20 }
21 // 遍历完成,变量max,就是数组最大值
22 System.out.println(max);
23 }
24 }
1 package com.it.demo08_array;
2
3 /*
4 案例: 演示数组的基本格式.
5
6 涉及到的知识点:
7 数组的各部分解释, 此处以 动态初始化举例, 例如: int[] arr = new int[3];
8 int: 表示数组中存储元素的数据类型, int说明只能存储整数, 如果是String说明只能存储字符串, 如果是double, 说明只能存储小数.
9 []: 表示它是一个数组
10 arr: 表示数组名, 命名的规则和命名变量是一样的(遵循小驼峰命名法), 都要符合标识符的规范.
11 new: 表示创建对象, 该对象存储在 堆内存 空间.
12 3: 表示数组的长度, 即: 数组中最多只能存储几个数据.
13
14 数组的元素特点:
15 1. 数组中每个元素都是有索引(也叫: 编号, 角标, 下标)的, 且索引是从 0 开始的.
16 2. 数组中的每个元素都是有默认值的, 例如:
17 int[], 元素默认值为: 0
18 double[], 元素默认值为: 0.0
19 boolean[], 元素默认值为: false
20 String[], 元素默认值为: null
21
22 数组的基本格式:
23 数组名[索引] 根据索引值, 获取该索引对应的元素.
24 数组名[索引] = 值 修改指定索引处的元素为指定的值.
25 数组名.length 获取数组的长度.
26 数组名.length - 1 获取数组中最后一个元素的索引.
27
28 */
29 public class Demo02 {
30 public static void main(String[] args) {
31 //1.定义一个长度为5的int类型的数组.
32 int[] arr = new int[5]; //11 0, 0, 0, 0
33 System.out.println(arr); //因为数组是对象, 所以直接打印数组, 打印的是: 该对象在内存中的地址值.
34
35 //2.打印数组中的第3个元素.
36 System.out.println(arr[2]); //索引从0开始.
37
38 //3.设置数组中的第一个元素值为11.
39 arr[0] = 11;
40
41 //4.获取数组中的第一个元素值, 并将其赋值给变量a, 然后打印.
42 int a = arr[0];
43 System.out.println(a); //11
44
45 //5.打印数组的长度.
46 System.out.println(arr.length);
47 }
48 }
1 package com.it.demo08_array;
2
3 /*
4 JVM的内存划分:
5 1. 栈
6 作用:
7 存储局部变量以及所有代码的执行的.
8 //局部变量: 就是定义在方法中或者方法声明上的变量.
9 特点:
10 先进后出, 后进先出. //用完就释放.
11 2. 堆
12 作用:
13 存储所有new出来的内容(对象)
14 特点:
15 在不确定的时间, 被GC(Java中的垃圾回收机制)回收.
16 3. 方法区
17 作用:
18 用来存储 字节码文件, 静态成员, 常量, 具体的方法等内容.
19 分类:
20 代码区, 方法区, 常量池, 静态区.
21 4. 本地方法区
22 给本地方法(native修饰的方法)使用的, 我们了解即可.
23 5. 寄存器
24 给CPU使用的, 我们了解即可.
25 */
26
27 //案例: 演示一个数组的内存图.
28 public class Demo03 {
29 public static void main(String[] args) {
30 int[] arr = new int[3];
31 System.out.println(arr[0]); //打印数组中的第一个元素, 值为: 0
32 System.out.println(arr); //[I@1540e19d
33 }
34 }
1 package com.it.demo08_array;
2
3 //案例: 演示两个数组的内存图
4 public class Demo04 {
5 public static void main(String[] args) {
6 //1.定义一个长度为3的int类型的数组.
7 int[] arr = new int[3]; //0, 0, 0
8 //2.修改数组中的第一个元素为: 11
9 arr[0] = 11; //11, 0, 0
10 //3.打印数组中的第一, 第二个元素.
11 System.out.println(arr[0]); //11
12 System.out.println(arr[1]); //0
13 //4.打印数组对象.
14 System.out.println(arr); //地址值
15 //5.定义一个int类型的数组, 存储元素1, 2.
16 int[] arr2 = new int[]{1, 2}; //1, 2
17 //6.修改数组的第二个元素值为: 22.
18 arr2[1] = 22; //1, 22
19 //7.打印数组的第二个元素.
20 System.out.println(arr2[1]); //22
21 //8.打印数组对象.
22 System.out.println(arr2); //地址值
23 }
24 }
1 package com.it.demo08_array;
2
3 //案例: 演示两个数组指向同一个地址的内存图.
4 public class Demo05 {
5 public static void main(String[] args) {
6 //1.定义一个int类型的数组, 存储元素11, 22, 33.
7 int[] arr = new int[]{11, 22, 33};
8 //2.打印数组对象.
9 System.out.println(arr);
10 //3.打印数组中的各个元素值.
11 System.out.println(arr[0]);
12 System.out.println(arr[1]);
13 System.out.println(arr[2]);
14 //4.定义第二个数组, 把第一个数组的地址值赋值给第二个数组.
15 int[] arr2 = arr;
16 //5.通过第二个数组, 修改第二个元素值为200.
17 arr2[1] = 200;
18 //6.打印数组对象.
19 System.out.println(arr2);
20 //7.打印数组中的各个元素值.
21 System.out.println(arr[0]);
22 System.out.println(arr[1]);
23 System.out.println(arr[2]);
24
25 System.out.println(arr2[0]);
26 System.out.println(arr2[1]);
27 System.out.println(arr2[2]);
28
29 }
30 }
1 /*
2 二维数组
3 数组中的数组,数组里面存储的还是数组
4
5 定义方式和一维数组很相似
6
7 int[][] arr = new int[3][4];
8 定义一个二维数组
9 [3] 表示: 二维数组中,有三个一维数组
10 [4] 表示: 三个一维数组中,每个数组的长度是4
11 */
12 public class ArrayArrayDemo{
13 public static void main(String[] args){
14 int[][] arr = new int[3][4];
15 System.out.println(arr);
16
17 System.out.println(arr[1]);
18 System.out.println(arr[2][3]);
19 }
20 }
1 /*
2 int[][] arr = new int[3][] 不推荐
3 二维数组中定义三个一维数组,每个一维数组长度,没有指定
4 arr[0]
5 arr[1]
6 arr[2]
7 必须要new
8 arr[0] = new int[5];
9 arr[1] = new int[4];
10
11 最简单的二维数组定义方式
12 int[][] arr = { {1,4} ,{3,6,8}, {0,9,8} };
13 */
14
15 public class ArrayArrayDemo_1{
16 public static void main(String[] args){
17 int[][] arr = { {1,2,3},{4,5},{6,7,8,9},{0} };
18
19 //问题: 打印7,是数组中的元素0
20
21 System.out.println(arr[2][1]);
22
23 //问题: 输出结果
24 System.out.println(arr[3][0]);
25 }
26 }
1 /*
2 二维数组的遍历
3 二维数组中,存储4个一维数组,每个一维数组的长度不同
4
5 遍历: for循环,遍历二维数组
6 遍历过程中, for遍历一维数组
7
8 */
9 public class ArrayArrayDemo_2{
10 public static void main(String[] args){
11 int[][] arr = { {1,2,3},{4,5},{6,7,8,9},{0} };
12
13 //外循环,遍历二维数组
14 for(int i = 0 ; i < arr.length ;i++){
15 //内循环,遍历每个一维数组 arr[0] arr[1] arr[i]
16 for(int j = 0 ; j < arr[i].length; j++){
17 System.out.print(arr[i][j]);
18 }
19 System.out.println();
20 }
21 }
22 }
1 /*
2 二维数组的遍历求和
3 第一小组销售额为{11, 12}万元
4 第二小组销售额为{21, 22, 23}万元
5 第三小组销售额为{31, 32, 33, 34}万元。
6 每个小组就是一个数组, 三个数组存储到一个数组中,形成二维数组
7 求和:
8 每个小组求和
9 所有元素求和
10 */
11
12 public class ArrayArrayDemo_3{
13 public static void main(String[] args){
14 int[][] arr = { {11,12} , {21,22,23} ,{31,32,33,34} };
15 //定义变量,保存2个求和的值
16 int sum = 0 ; //所有元素的求和
17 int groupSum = 0 ; //每个一维数组的求和
18
19 for(int i = 0 ; i < arr.length ; i++){
20 for(int j = 0 ; j < arr[i].length ; j++){
21 //将一维数组的元素求和
22 groupSum += arr[i][j];
23 }
24 System.out.println("每个小组总金额 "+groupSum);
25
26 //将每个一维数组的总和在相加
27 sum += groupSum;
28 //每个唯一数组求和,清空
29 groupSum = 0;
30 }
31 System.out.println("本公司总金额 "+sum);
32 }
33 }
1 /*
2 随机点名器:
3 1 存储姓名
4 2. 预览所有人的姓名
5 3. 随机出一个人的姓名
6 */
7 import java.util.Random;
8 public class CallName{
9 public static void main(String[] args){
10 //存储姓名,姓名存储到数组中
11 //数组存储姓名,姓名的数据类型,String
12 String[] names = {"张三","李四","王五","李蕾","韩梅梅","小名","老王","小华","约翰逊","爱丽丝"};
13
14 //预览: 遍历数组,打印所有姓名
15 for(int i = 0 ; i < names.length ; i++){
16 System.out.println(names[i]);
17 }
18 System.out.println("=============");
19
20 //随机出一个人的名
21 //利用随机数,生成一个整数,作为索引,到数组中找到对应的元素
22 Random ran = new Random();
23 //随机数,范围必须是0-数组的最大索引
24 int index = ran.nextInt(names.length);//index 就是随机数,作为索引
25 System.out.println(names[index]);
26 }
27 }
1 package com.it.demo01_array;
2
3 /*
4 案例: 数组内容回顾.
5
6 数组简介:
7 概述:
8 就是用来同时存储 多个 同类型元素的 容器.
9 特点:
10 1. 元素都有编号(下标, 角标, 索引), 且编号是从 0 开始的.
11 2. 数组的每个元素都有默认值.
12 int[] -> 0
13 double[] -> 0.0
14 boolean[] -> false
15 引用类型数组-> null
16 定义格式:
17 动态初始化: 我们给长度, 系统给默认值.
18 格式1:
19 int[] arr = new int[3];
20 格式2:
21 int arr[] = new int[3];
22 静态初始化: 我们给值, 由系统决定长度.
23 格式1:
24 int[] arr = new int[]{11, 22, 33};
25 格式2:
26 int[] arr = {11, 22, 33};
27 数组的基本使用格式:
28 数组名[索引] 根据索引, 获取数组中的该元素值.
29 数组名[索引] = 值 修改指定索引处的元素为指定的值.
30 数组名.length 获取数组的长度
31 数组名.length - 1 获取数组中元素的 最大索引值.
32 数组的内存图:
33 了解.
34 */
35 public class Demo01 {
36 public static void main(String[] args) {
37
38 }
39 }
1 package com.it.demo01_array;
2
3 /*
4 案例: 演示使用数组时的两个小问题.
5
6 问题一: 数组索引越界异常(ArrayIndexOutOfBoundsException)
7 问题描述:
8 数组的长度为2, 但是我们却访问了数组中的第3个元素, 此时代码就有问题了, 会报: 数组索引越界异常(ArrayIndexOutOfBoundsException)
9 产生原因:
10 你访问了数组中不存在的元素.
11 解决方案:
12 访问数组中存在的元素即可.
13 */
14 public class Demo02 {
15 public static void main(String[] args) {
16 //1.定义int类型的数组, 存储元素11, 22.
17 //int[] arr = new int[]{11, 22};
18 int[] arr = {11, 22}; //int a = 10;
19 arr = new int[]{1, 2, 3, 4, 5}; //a = 20;
20 //arr = {1, 2, 3, 4, 5, 6}; //这样写会报错, 静态初始化的 语法糖只有在定义数组的时候有效.
21
22 //2.打印数组中的第2个元素.
23 System.out.println(arr[1]); //22
24
25 //3.尝试打印数组中的第3个元素.
26 System.out.println(arr[2]); //数组索引越界异常(ArrayIndexOutOfBoundsException)
27 }
28 }
1 package com.it.demo01_array;
2
3 /*
4 案例: 演示空指针异常.
5
6 问题二: 空指针异常(NullPointerException)
7 问题描述:
8 我们定义了数组对象, 初始化值为11, 22, 然后将null赋值给数组对象, 发现打印数组的第一个元素时, 程序报错: 空指针异常(NullPointerException)
9 产生原因:
10 null表示空, 即什么都没有, 所以你通过null去访问数组中的元素, 肯定找不到, 于是就报错.
11 解决方案:
12 new一个具体的数组, 然后来访问数组中存在的元素即可.
13
14 */
15 public class Demo03 {
16 public static void main(String[] args) {
17 //1.定义int类型的数组, 存储元素11, 22.
18 int[] arr = {11, 22};
19 //2.将null(空常量)赋值给数组.
20 arr = null;
21 //arr = new int[3];
22 //3.尝试打印数组的第一个元素.
23 System.out.println(arr[0]); //空指针异常(NullPointerException)
24 }
25 }
1 package com.it.demo02_exercise;
2
3 /*
4 案例: 遍历数组.
5
6 大白话翻译: 即逐个获取数组中的元素, 并打印.
7 */
8 public class Demo01 {
9 public static void main(String[] args) {
10 //1.定义int类型的数组arr, 存储元素11, 22, 33, 44, 55.
11 int[] arr = {11, 22, 33, 44, 55};
12
13 //2.通过for循环, 遍历数组.
14
15 //方式二: 实际开发版
16 //2.1 通过for循环, 获取数组中所有元素的索引.
17 for (int i = 0; i < arr.length; i++) {
18 //i就是数组中每个元素的: 索引值.
19
20 //2.2 根据 数组名[索引] 的方式, 获取数组中的元素.
21 System.out.println(arr[i]);
22 }
23
24 System.out.println("------------------------");
25 //方式一: 最Low版
26 System.out.println(arr[0]);
27 System.out.println(arr[1]);
28 System.out.println(arr[2]);
29 System.out.println(arr[3]);
30 System.out.println(arr[4]);
31 }
32 }
1 package com.it.demo02_exercise;
2
3 /*
4 案例: 获取数组元素的最大值.
5
6 需求:
7 已知各位美女的颜值如下图, 请求出下图中, 颜值最高的数字, 并打印到控制台上.
8 即:求数组int[] arr = {5, 15, 2000, 10000, 100, 4000};的最大值.
9
10 细节:
11 1. 假设数组的第一个元素值为最大(小)值, 这个值不能我们自定义, 否则可能会比数组中所有元素值都大, 或者都小.
12 2. 从数组的第二个元素开始遍历, 逐个比较, 可以减少一次比较次数, 从而节约资源, 提高效率.
13 */
14 public class Demo02 {
15 public static void main(String[] args) {
16 //已知各位美女的颜值如下图, 请求出下图中, 颜值最高的数字, 并打印到控制台上.
17 //即:求数组int[] arr = {5, 15, 2000, 10000, 100, 4000};的最大值.
18 //1. 定义数组, 记录要获取最值的元素.
19 int[] arr = {5, 15, 2000, 10000, 100, 4000};
20
21 //2. 定义变量, 用来记录数组元素的最大值.
22 int max = arr[0];
23
24 //3. 遍历数组, 获取到每一个元素.
25 for (int i = 1; i < arr.length; i++) {
26 //arr[i]: 就是数组中的每个元素
27 //4. 依次比较当前遍历到的元素 是否大于 临时变量max的值, 如果大, 就将其值赋值给max.
28 if (arr[0] > max)
29 max = arr[i];
30 }
31 //5. for循环结束后, max记录的就是数组元素的最大值, 打印结果即可.
32 System.out.println("数组元素最大值是: " + max);
33 }
34 }
1 package com.it.demo02_exercise;
2
3 /*
4 案例: 演示数组元素的反转.
5
6 解决方案:
7 思路一: 初始化条件定义一个.
8 细节一: 必须明确数组元素的交换次数, 即: 数组的长度 / 2
9 细节二: 必须明确谁和谁交换. arr[i] 和 arr[arr.length - 1 - i]
10
11 思路二: 初始化条件定义两个.
12 细节:
13 定义两个变量start, end, 分别记录交换双方的元素的索引值, 一个(start)从前往后, 一个(end)从后往前.
14
15 分析思路:
16 arr[0] arr[arr.length - 1 - 0]
17 第1次交换: 第一个元素11 和 倒数第一个元素44, 交换完毕后为: 44, 33, 22, 55, 11
18
19 arr[1] arr[arr.length - 1 - 1]
20 第2次交换: 第二个元素33 和 倒数第二个元素55, 交换完毕后为: 44, 55, 22, 33, 11
21
22 ...
23 arr[i] arr[arr.length - 1 - i]
24 第i次交换: 第i个元素 和 倒数第i个元素交换.
25
26 */
27 public class Demo03 {
28 public static void main(String[] args) {
29 //1.定义int类型的数组, 存储数据: 11, 33, 22, 55, 44.
30 int[] arr = { 11, 33, 22, 55, 44};
31
32 //2.反转数组
33 /*
34 思路一: 初始化条件定义一个.
35
36 细节一: 必须明确数组元素的交换次数, 即: 数组的长度 / 2
37 细节二: 必须明确谁和谁交换. arr[i] 和 arr[arr.length - 1 - i]
38 */
39 /*for (int i = 0; i < arr.length / 2; i++) {
40 //arr[i] 和 arr[arr.length - 1 - i] 交换
41 int temp = arr[i];
42 arr[i] = arr[arr.length - 1 - i];
43 arr[arr.length - 1 - i] = temp;
44 }*/
45
46
47 //思路二: 初始化条件定义两个.
48 for(int start = 0, end = arr.length - 1; start < end; start++, end--) {
49 //arr[start] 和 arr[end]交换
50 int temp = arr[start];
51 arr[start] = arr[end];
52 arr[end] = temp;
53 }
54
55 //3. 并打印反转后的结果.
56 for (int i = 0; i < arr.length; i++) {
57 System.out.println(arr[i]);
58 }
59 }
60 }
1 package com.it.demo02_exercise;
2
3 /*
4 案例: 计算数组的元素和.
5
6 需求:
7 1. 定义int类型的数组, 存储数据: 11, 33, 22, 55, 44.
8 2. 计算数组的元素和, 并打印结果.
9 */
10 public class Demo04 {
11 public static void main(String[] args) {
12 //1. 定义int类型的数组, 存储数据: 11, 33, 22, 55, 44.
13 int[] arr = {11, 33, 22, 55, 44};
14 //2. 定义求和变量sum, 用来记录所有元素的和.
15 int sum = 0;
16 //3. 遍历数组, 获取到每一个元素.
17 for (int i = 0; i < arr.length; i++) {
18 sum += arr[i];
19 }
20 //4. 将获取到的值累加给遍历sum
21 System.out.println("数组元素和为: " + sum);
22
23 //5. 打印结果.
24 }
25 }
Java 复习整理day03的更多相关文章
- java 复习整理(一 java简介和基础语法)
现在公司用的是封装太多东西的平台开发,觉着之前学的东西很多都忘了,所以想好好总结回顾一下.之前总是想学很多编程语言像python.s6.node.react,但现在越来越体会到编程语言只是一个开发的工 ...
- java复习整理(六 异常处理)
一.异常简介 在 Java 中,所有的异常都有一个共同的祖先 Throwable(可抛出).Throwable 指定代码中可用异常传播机制通过 Java 应用程序传输的任何问题的共性. ...
- java 复习整理(五 类加载机制与对象初始化)
类加载机制与对象初始化 一 . 类加载机制 类加载机制是指.class文件加载到jvm并形成Class对象的机制.之后应用可对Class对象进行实例化并调用.类加载机制可在运行时动态加载外部的类, ...
- java 复习整理(四 String类详解)
String 类详解 StringBuilder与StringBuffer的功能基本相同,不同之处在于StringBuilder是非线程安全的,而StringBuffer是线程安全的,因此效率上S ...
- java 复习整理(三 修饰符)
访问控制修饰符 Java中,可以使用访问控制符来保护对类.变量.方法和构造方法的访问.Java支持4种不同的访问权限. 默认的,也称为default,在同一包内可见,不使用任何修饰符. 私有的,以pr ...
- java 复习整理(二 数据类型和几种变量)
源文件声明规则 当在一个源文件中定义多个类,并且还有import语句和package语句时,要特别注意这些规则. 一个源文件中只能有一个public类 一个源文件可以有多个非public类 源文件的名 ...
- Java 复习整理day10
package com.it.demo01_quickstart; /* 案例: 讲解网络编程相关概念. 网络编程简介: 概述: 网络编程也叫: 套接字编程, Socket编程, 就是用来实现 网络互 ...
- Java 复习整理day09
package com.it.demo01_thread; /* 案例: 多线程简介. 概述: 指的是进程有多条执行路径, 统称叫: 多线程. 进程: 指的是可执行程序, 文件(例如: .exe) 大 ...
- Java 复习整理day08
package com.it.demo02_lambda; //接口, 表示动物. //public abstract class Animal { //报错, Lambda表达式只针对于接口有效 p ...
随机推荐
- 微信小程序--仿微信小程序朋友圈Pro(内容发布、点赞、评论、回复评论)
微信小程序--仿微信小程序朋友圈Pro(内容发布.点赞.评论.回复评论) 项目开源地址M朋友圈Pro 求个Star 项目背景 基于原来的开源项目 微信小程序仿朋友圈功能开发(发布.点赞.评论等功能 ...
- KDiff3 Merge工具的使用 极简教程
www.swack.cn - 原文链接:KDiff3 Merge工具 1.软件安装 下载链接:KDiff3-64bit-Setup_0.9.98-2.exe 安装KDiff3 git config - ...
- Django中一种常见的setting与账密保存/读取方式
前言 在查看别人Django代码的时候,发现很多的manager文件都是类似于 #!/usr/bin/env python import os import sys if __name__ == '_ ...
- 【剑指 Offer】09.用两个栈实现队列
题目描述 用两个栈实现一个队列.队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead , 分别完成在队列尾部插入整数和在队列头部删除整数的功能.(若队列中没有元素,del ...
- Linux find 命令的初步实现(C++)
Implement a myfind command following the find command in UNIX operating system. The myfind command s ...
- 【Linux】查看系统僵尸进程
ps -ef|grep -v grep|grep defunct 如果这个有显示内容的话,可以手动将进程kill掉即可 ---------------------------------------- ...
- DDIC_TYPELENG_INCONSISTENT错误的解决办法
当执行某个TCODE,例如SM66,出现类似如下的dump界面 大概意思就是说是ddic种的某个数据类型有问题,可能是数据结构,可能是数据元素或者是表等等 通过查阅资料了解到,对于note122290 ...
- Gulp4.0入门和实战
gulp4.0入门和实战 我最近遇到需要优化web的性能的任务,然后就捣鼓了一些对资源文件优化压缩的方案.由于之前的项目中有使用到gulp,所以在需要处理的web项目中也优先使用这个技术. 先聊聊gu ...
- Linux操作系统相关资料
玩转Linux操作系统 操作系统发展史 只有硬件没有软件的计算机系统被称之为"裸机",我们很难用"裸机"来完成计算机日常的工作(如存储和运算),所以必须用特定的 ...
- Linux内核分析_课程学习总结报告
请您根据本课程所学内容总结梳理出一个精简的Linux系统概念模型,最大程度统摄整顿本课程及相关的知识信息,模型应该是逻辑上可以运转的.自洽的,并举例某一两个具体例子(比如读写文件.分配内存.使用I/O ...