• 【尚硅谷】第05章:随堂复习与企业真题(数组)


    来源:尚硅谷Java零基础全套视频教程(宋红康2023版,java入门自学必备)

    基本都是宋老师发的资料里面的内容,只不过补充几个资料里没直接给出答案的问题的答案。
    不想安装markdown笔记的app所以干脆在这里发一遍。

    第05章:随堂复习与企业真题(数组)


    一、随堂复习

    1. 数组的概述

    • 数组,就可以理解为多个数据的组合。
    • 是程序中的容器:数组、集合框架(第12章,List、Set、Map)
    • 数组存储的数据的特点:依次紧密排列的、有序的、可以重复的
    • 此时的数组、集合框架都是在内存中对多个数据的存储。
    • 数组的其它特点:一旦初始化,其长度就是确定的、不可更改的

    2. 一维数组的使用(重要)

    > 数组的声明和初始化
    	int[] arr = new int[10];
    	String[] arr1 = new String[]{"Tom","Jerry"};
    > 调用数组的指定元素:使用角标、索引、index
    	>index从0开始!
    > 数组的属性:length,表示数组的长度
    > 数组的遍历
    > 数组元素的默认初始化值
    > 一维数组的内存解析(难)
    	前提:在main()中声明变量:int[] arr = new int[]{1,2,3};
    	> 虚拟机栈:main()作为一个栈帧,压入栈空间中。在main()栈帧中,存储着arr变量。arr记录着数组实体的首地址值。
    	> 堆:数组实体存储在堆空间中。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    3. 二维数组的使用(难点)

    • 二维数组:一维数组的元素,又是一个唯一数组,则构成了二维数组。
    > 数组的声明和初始化
    > 调用数组的指定元素
    > 数组的属性:length,表示数组的长度
    > 数组的遍历
    > 数组元素的默认初始化值
    > 二维数组的内存解析(难)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    4. 数组的常用算法(重要)

    • 数值型数组的特征值的计算:最大值、最小值、总和、平均值等
    • 数组元素的赋值。比如:杨辉三角;彩票随机生成数(6位;1-30;不能重复);回形数
    • 数组的复制、赋值
    • 数组的反转
    • 数组的扩容、缩容
    • 数组的查找
      • 线性查找
      • 二分法查找(前提:数组有序)
    • 数组的排序
      • 冒泡排序:最简单
      • 快速排序:最常用

    5. Arrays工具类的使用

    • 熟悉一下内部的常用的方法
      • toString() / sort() / binarySearch()

    6. 数组中的常见异常

    • ArrayIndexOutOfBoundsException
    • NullPointerException

    二、企业真题

    1. 数组有没有length()这个方法? String有没有length()这个方法?(*蓝)

    数组没有length(),是length属性。

    String有length()

    2. 有数组int[] arr,用Java代码将数组元素顺序颠倒(闪*购)

    3. 为什么数组要从0开始编号,而不是1(中*支付)

    数组的索引,表示了数组元素距离首地址的偏离量。因为第1个元素的地址与首地址相同,所以偏移量就是0。所以从0开始。

    4. 数组有什么排序的方式,手写一下(平*保险)

    冒泡。

    快排。(讲完递归方法以后,大家就可以练习一下)

    5. 常见排序算法,说下快排过程,时间复杂度?(5*到家)

    见课件。

    快排:O(nlogn)

    6. 二分算法实现数组的查找(神舟*天软件)

    7. 怎么求数组的最大子序列和(携*)

    /*
     * 输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。
     * 求所有子数组的和的最大值。要求时间复杂度为O(n)。
     例如:输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,
     因此输出为该子数组的和18。
     * @author 尚硅谷-宋红康
     */
    public class ArrDemo {
    	public static void main(String[] args) {
    		int[] arr = new int[]{1, -2, 3, 10, -4, 7, 2, -5};
    		int i = getGreatestSum(arr);
    		System.out.println(i);
    	}
    	
    	public static int getGreatestSum(int[] arr){
    		int greatestSum = 0;
    		if(arr == null || arr.length == 0){
    			return 0;
    		}
    		int temp = greatestSum;
    		for(int i = 0;i < arr.length;i++){
    			temp += arr[i];
    			
    			if(temp < 0){
    				temp = 0;
    			}
    			
    			if(temp > greatestSum){
    				greatestSum = temp;
    			}
    		}
    		if(greatestSum == 0){
    			greatestSum = arr[0];
    			for(int i = 1;i < arr.length;i++){
    				if(greatestSum < arr[i]){
    					greatestSum = arr[i];
    				}
    			}
    		}
    		return greatestSum;
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42

    8. Arrays 类的排序方法是什么?如何实现排序的?(阿*、阿*校招)

  • 相关阅读:
    C语言习题练习8--扫雷游戏
    defineProperty 与 Proxy 的区别
    MacOS新功能“通用控制”,多台设备操作互联太方便了
    Sulfo-CY5 DBCO的荧光特点、激发发射-星戈瑞
    org.postgresql.util.PSQLException: Bad value for type long
    2022天工杯CTF---crypto1 wp
    自学JavaScript第五天- JS 进阶:jQuery
    处理大数据的基础架构,OLTP和OLAP的区别,数据库与Hadoop、Spark、Hive和Flink大数据技术
    【SpringMVC】使用Eclipse创建第一个SpringMVC项目
    数据分析,从了解你的数据开始,数据探索性分析工具包pandas-profiling
  • 原文地址:https://blog.csdn.net/niexinyu0026/article/details/132757279