java_系列3_数组

这篇博客详细介绍了Java数组的各个方面,包括快速入门、使用方式、细节、应用案例以及复杂的赋值操作。重点讲解了排序,尤其是冒泡排序的原理和实现,并探讨了查找技巧如顺序查找和二分查找。此外,还深入讨论了二维数组的使用、内存解析和遍历策略,以及如何处理列数不确定的情况。通过具体的案例和图解,帮助读者深入理解Java数组的运用。
摘要由CSDN通过智能技术生成

数组

1. 数组可以存放多个同一类型数据。数组也是一种数据类型,是引用类型。
即:数组就是一组数据。


快速入门数组

//1.存储一个班6个人的成绩,并输出每个人的成绩
import java.util.Scanner;

/**
 * @author Hwang
 * @create 2020-06-29 15:02
 */
public class ArrayTest {
   
    public static void main(String[] args) {
   
        double[] scores=new double[6];
        Scanner sc = new Scanner(System.in);
        for (int i = 0; i < scores.length; i++) {
   
            System.out.print("请输入第"+(i+1)+"个人的成绩: ");
            scores[i]=sc.nextDouble();
        }
        for (int i = 0; i < scores.length; i++) {
   
            System.out.println("第"+(i+1)+"个人的成绩为: "+scores[i]);
        }

    }
}

数组的使用方式

使用方式1-动态初始化
1.数组的定义
数据类型 数组名[] =new 数据类型[大小]
int  a[] = new int[5];//创建了一个数组,名字a,存放5个int

使用方式2-静态初始化
1. 初始化数组语法:
数据类型[] 数组名={元素值,元素值...}
知道数组有多少元素,具体值,使用静态初始化

//1.循环输入5个成绩并输出
public class ArrayTest {
   
    public static void main(String[] args) {
   
        double[] scores=new double[6];//数组存储6个人的成绩
        Scanner sc = new Scanner(System.in);
        for (int i = 0; i < scores.length; i++) {
   
            System.out.print("请输入第"+(i+1)+"个人的成绩: ");
            scores[i]=sc.nextDouble();//从键盘输入成绩
        }
        for (int i = 0; i < scores.length; i++) {
   
            System.out.println("第"+(i+1)+"个人的成绩为: "+scores[i]);//遍历输出每个学生的成绩
        }

    }
}

细节

1. 数组是多个相同类型数据的组合,实现对这些数据的统一管理

2. 数组中的元素可以是任何数据类型,包括基本类型和引用类型,但是不能混用。

3. 数组创建后,如果没有赋值,有默认值int 	0,short 0, byte 0, long 0, float 0.0,double 0.0,char \u0000,boolean false,String null

4. 使用数组的步骤 :1. 声明数组并开辟空间   2 .给数组各个元素赋值  3 .使用数组

5. 数组的下标是从0开始的。

6. 数组下标必须在指定范围内使用,否则报:下标越界异常,比如 int [] arr=new int[5]; 则有效下标为 0-4

7. 数组属引用类型,数组型数据是对象(object),数组中的每个元素相当于该对象的成员变量
class ArrayDetail{
   
}

数组的应用案例


        /*1.
         * 创建一个char类型的26个元素的数组,分别 放置'A'-'Z‘。
         * 使用for循环访问所有元素并打印出来。提示:char类型数据运算
         * 'A'+1 -> 'B','0'+1 -> '1‘
         * */
        char[] varg = new char[26];
        for (int i = 0; i < varg.length; i++) {
   
            varg[i] = (char) ('A' + i);
        }
        for (int i = 0; i < varg.length; i++) {
   
            System.out.print(varg[i] + "\t");
        }


***********************************************************************************************
        /*2.
         * 请求出一个数组的最大值,并得到对应的下标。
         * */
        int maxIndex=0;//默认最大值的是数组的第一个元素 所以其下标默认为0
        Scanner sc = new Scanner(System.in);
        int []arr=new int[5];
        for (int i = 0; i < arr.length; i++) {
   
            System.out.print("请输入第"+(i+1)+"个数据: ");
            arr[i] = sc.nextInt();
        }
        int a[]={
   1,2,3};
        int max=arr[0];//默认的最大值
        for (int i = 1; i < arr.length; i++) {
   
        if(arr[i]>max){
   
            max=arr[i];//这个数大于默认的最大值,则将该数覆盖掉最大值
            maxIndex=i;//并且将该索引覆盖掉
        }
        }
        System.out.println("max: "+max);
        System.out.println("maxIndex :"+maxIndex);

数组复杂使用-赋值

1. 基本数据类型赋值,这个值就是具体的数据,而且相互不影响。
2.  数组在默认情况下是引用传递,即赋的值是地址。
int [] arr=new int[6];		//arr就是引用

引用赋值的图解与代码

在这里插入图片描述

public class ArrayApply
{
   
	public static void main(String[] args) {
   
		int[] arr1 = {
   1,2,3};
		int[] arr2 = arr1;
		arr1[0] = 666;
		System.out.println(arr1[0]); // 666
		System.out.println(arr2[0]); // 666
		//修改其中一个数组的元素值,另外一个数组元素的值也会跟着修改
	}
}

数组拷贝(内容复制)图解与代码

在这里插入图片描述

/**
 * @author Hwang
 * @create 2020-06-29 19:17
 */
public class ArrayCopy {
   
    public static void main(String[] args) {
   
        int[] arr= {
   1,2,3,4,5,6};
        int[] newArr=new int[arr.length];
        for (int i = 0; i < newArr.length; i++) {
   
            newArr[i]=arr[i];//内容复制给另外一个数组,两个数组的地址不一样

        }
        arr[0]=100;//修改旧的数组不会修改新的数组
Stkcd [股票代码] ShortName [股票简称] Accper [统计截止日期] Typrep [报表类型编码] Indcd [行业代码] Indnme [行业名称] Source [公告来源] F060101B [净利润现金净含量] F060101C [净利润现金净含量TTM] F060201B [营业收入现金含量] F060201C [营业收入现金含量TTM] F060301B [营业收入现金净含量] F060301C [营业收入现金净含量TTM] F060401B [营业利润现金净含量] F060401C [营业利润现金净含量TTM] F060901B [筹资活动债权人现金净流量] F060901C [筹资活动债权人现金净流量TTM] F061001B [筹资活动股东现金净流量] F061001C [筹资活动股东现金净流量TTM] F061201B [折旧摊销] F061201C [折旧摊销TTM] F061301B [公司现金流1] F061302B [公司现金流2] F061301C [公司现金流TTM1] F061302C [公司现金流TTM2] F061401B [股权现金流1] F061402B [股权现金流2] F061401C [股权现金流TTM1] F061402C [股权现金流TTM2] F061501B [公司自由现金流(原有)] F061601B [股权自由现金流(原有)] F061701B [全部现金回收率] F061801B [营运指数] F061901B [资本支出与折旧摊销比] F062001B [现金适合比率] F062101B [现金再投资比率] F062201B [现金满足投资比率] F062301B [股权自由现金流] F062401B [企业自由现金流] Indcd1 [行业代码1] Indnme1 [行业名称1] 季度数据,所有沪深北上市公司的 分别包含excel、dta数据文件格式及其说明,便于不同软件工具对数据的分析应用 数据来源:基于上市公司年报及公告数据整理,或相关证券交易所、各部委、省、市数据 数据范围:基于沪深北证上市公司 A股(主板、中小企业板、创业板、科创板等)数据整理计算
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值