数组

简介: 变量只能存储一个值,数组可以存储多个值 没有字符串类型:本身就没有字符串数据类型,因为字符串数据类型长度不确定,没有办法制定数据类型大小(还有一点是字符串是一个类)。 Java没有指针但却有指针的理论:C语言的字符串采用的是指针制作?  你赋值一串字符串,它会询问这个字符串有多长就申请多少个char类型连续内存?                                                   为什么需要内存连续呢,因为指针变量指向的是第一片内存地址,它要按顺序向下找 只要是数组操作都是操作的地址,数组传只用的是引用传递。

变量只能存储一个值,数组可以存储多个值


没有字符串类型:本身就没有字符串数据类型,因为字符串数据类型长度不确定,没有办法制定数据类型大小(还有一点是字符串是一个类)。


Java没有指针但却有指针的理论:C语言的字符串采用的是指针制作?  你赋值一串字符串,它会询问这个字符串有多长就申请多少个char类型连续内存?

                                                  为什么需要内存连续呢,因为指针变量指向的是第一片内存地址,它要按顺序向下找


只要是数组操作都是操作的地址,数组传只用的是引用传递。

public class T6 {
    public static void main(String[] args) {
        int a[] = {15, 10, 1};
        int b[] = new int[3];
        b[0]=a[0];
        System.out.println(b[0]);//这里用的是引用传递,传的是值的地址
    }
}

数组介绍:数组前身就是指针控制,申请连续的内存地址,通过地址控制里面存储的数据,连续的内存地址控制。
能让一个变量存储多个值,以后经常会使用到数组,但你见不到,很多数据存储内核都是用数组实现,在Java中数组一旦定制长度不可改变。
string 类型的内核就是数组组成的,以前是char类型的,但是后期优化了byte类型的

public class T6 {
    public static void main(String[] args) {
        int[] i;//这里只是声明这是一个数组而已
        int[] i=new int[5];//只是申请了数组,定制了长度
        int[] i={12,3,4,5,76,7,8};//申请了一个int类型的数组,长度由初始值个数决定
        int[] i=new int[]{12312,123,1,23,123,12};//申请了一个int类型的数组,长度由初始值个数决定,这个感觉是没啥卵用型
        
    }
}

数组的访问:
                   使用下标访问,下标从0开始
                   越界? 就是你的下标大于等于数组的长度,小于了0 
                   int[] ints=new int[9];   0~8  有效的下标
                   在声明的时候可以用变量值代表长度
                   访问的时候也可以使用变量名 代表下标

import java.util.Scanner;

public class Test2 {
    public static void main(String[] args) {

        Scanner input=new Scanner(System.in);
        int[] nums=new int[input.nextInt()];
        for(int i=0;i<nums.length;i++){
            nums[i]=input.nextInt();//通过控制台决定数组长度,并且通过循环选择下标,并给下标赋值
        }
        for(int i=0;i<nums.length;i++){
            System.out.println(nums[i]);
        }

    }
}
 

数组下标为什么从零开始
因为变量指向的是第一片内存地址,没有必要向下移动(因为零代表没有,代表第一个)
数组的内存结构
例如int类型 是32为4个字节的 假如有长度为4的数组类型是int型的
第一个如果是0 第二个地址就是4 第三个就是8 第四个就是12 因为数组只会就记录第一个地址(因为没必要全记,这是系统操作的)

for循环数组;可以赋值一额可以取值。
                    1.简单
                    2.用于拿取所有的数值
                    接受数据类型 类型只要能存储下就可以
public class T6 {
    public static void main(String[] args) {//取值实验
    int i[]={15,13,35,64,65,48};
        for (int j = 0; j <i.length ; j++) {
            System.out.print(i[j]+"\t");
        }
    }
}

import java.util.Scanner;

public class T6 {
    public static void main(String[] args) {//取值实验
        int i[] = new int[3];
        Scanner input = new Scanner(System.in);
        for (int j = 0; j <i.length ; j++) {//这里是赋值
            System.out.println("请您输入数字");
           i[j]=input.nextInt(); 
        }
        for (int j = 0; j <i.length ; j++) {
            System.out.print(i[j]+"\t");//有赋值那肯定得有取值 
        }
    }
}
Arrays 数组操作类:sort(基本数据类型数组都可以找它排序 ,toString(数组变量) 把数组打印出来

import java.util.Arrays;
public class T6 {
    public static void main(String[] args) {//取值实验
        int i[] = {15, 20, 6};
        Arrays.sort(i);//这里是排序
        for (int j = 0; j <i.length ; j++) {
            System.out.println(i[j]);//这里是取值
        }
        System.out.println(Arrays.toString(i));//也可以这样取值
    }
}

数组引用:引用?  就是指针的理论 指向别人的地址
                 引用?  除了基本数据类型 其他的都是引用
                 除了基本数据类 其他的交换都是内存地址

随机数:Math.random()  出来的值是 0.0~1 范围内的 double值


public class T6 {
    public static void main(String[] args) {
        int i[] = {15, 36, 56, 48, 21};
        int a = (int) (Math.random() * i.length);//随机拿出一个下标
        System.out.println(i[a]);

    }
}



二维数组:
              数组嵌套,数组中嵌套数组,数组中引用数组
              c语言的二维数组的内存是连续的,java中内存不是连续,使用引用操作的
             二维数组,是一张表  有行有列

public class T6 {
    public static void main(String[] args) {
        int b[][] = {{}, {}};//声明二维数组格式
        int a[][] = {{1, 5, 354, 16, 1}, {15, 645, 13, 354, 1}, {15, 64, 21, 1}, {35, 15, 32, 5, 2}};
        
    }
}

二维数组排序

import java.util.Arrays;

public class T6 {//二维数组排序例题

    public static void main(String[] args) {
        int b[];
        int a[][] = {{1, 5, 354, 16, 1}, {15, 645, 13, 354, 1}, {15, 64, 21, 1}, {35, 15, 32, 5, 2}};
        int length = 0;//定义一个变量计算数组所需要的下标长度
        for (int i = 0; i < a.length; i++) {
            length += a[i].length;
        }
        b = new int[length];//决定一维数组的长度
        int index = 0;//声明下标从零开始
        for (int i = 0; i < a.length; i++) {
            for (int j = 0; j < a[i].length; j++) {
                b[index++] = a[i][j];//将二维数组的值赋值给一维数组
            }
        }
        Arrays.sort(b);//将二维数组赋值给的一维数组的值,进行排序。
        length=0;//在这声明从零开始,下标
        for (int[] num : a) {
            for (int i = 0; i <num.length ; i++) {
               num[i]=b[length++];//将排序好的一维数组值,赋值给二维数组
            }
        }
        for (int i = 0; i < a.length; i++) {
            for (int i1 : a[i]) {
                System.out.println(i1);
            }
        }
    }
}


import java.util.Scanner;

public class Test9 {//一个用循环决定下标数的值的实验

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        int[] select = new int[100];
        int index = 0;//先控制下标从零开始

        while (true) {
            System.out.println("1.葡萄");
            System.out.println("2.香蕉");
            System.out.println("3.黄瓜");
            System.out.println("4.苦瓜");
            System.out.println("5.退出");
            System.out.print("请选择:");
            int s = input.nextInt();
            if (s == 5) {
                break;
            }
            select[index++] = s;//这里选择数字进行累计,并赋值给一维数组
        }

        System.out.println("您选择的是:");
        for (int i = 0; i < select.length; i++) {
            if (select[i] == 0) {
                break;
            }
            if (select[i] == 1) {
                System.out.println("葡萄");
            } else if (select[i] == 2) {
                System.out.println("香蕉");
            } else if (select[i] == 3) {
                System.out.println("黄瓜");
            } else if (select[i] == 4) {
                System.out.println("苦瓜");
            }
        }

    }
}


public class T6 {//二维数组随机数实验
    public static void main(String[] args) {
        int a[][] = {{1, 54, 56, 54}, {485, 354, 321, 546, 1}, {5, 464, 8, 243, 44, 5}};
        int i = (int) (Math.random() * a.length);
        int b = (int) (Math.random() * a[i].length);
        System.out.println(a[i][b]);
    }
}



目录
相关文章
|
2天前
|
云安全 人工智能 运维
当攻击全面Agent化,你的安全防御能否跟上AI Speed?
多起客户侧AK泄露事件应急的真实观察
1206 1
|
25天前
|
人工智能 JSON API
全网刷屏的 Jev 模型正式开放!一手实战测评 + 保姆级教程
全网爆火的 Jev 模型是什么?有什么用?怎么使用?怎么接入 AI 编程工具?效果真的好么?傻子可懂的 Jev 保姆级实战教程 + 项目实战测评来啦
9602 32
|
11天前
|
存储 人工智能 并行计算
大模型本地部署终端选型方法论:以 Qwen3.8-27B 为例的四档分层完整流程
本文提出一套大模型本地部署终端选型方法论:定约束、定档位、定框架、定参数四步决策法,配合入门、主力、质量、无损四档分层模型。以 Qwen3.8-27B 实测数据为例,逐环节解读显存、带宽、存储、散热、系统、预算等要素,给出面向不同预算的优选方案、决策自查清单与市场观察框架。文末前瞻 AI 笔记本的 CPU+GPU 与统一内存两条路线,论证四步决策法在新品类上的延续性。
|
10天前
|
人工智能 JSON 自然语言处理
2026 年 Jev 决策模型深度拆解:原理解读、实战测评与保姆级落地教程
有一款特殊AI模型在开发者圈子刷屏,它摒弃传统大模型擅长的对话聊天能力,专注做高速结构化决策,它就是TypeSafe AI推出的Jev模型。该模型由ChatGPT共同发明人Diogo Almeida主导研发,定位为**System One Model(系统一模型)**,对标人类大脑快速直觉判断的思维模式,在响应延迟、调用成本、结构化输出稳定性上相比传统生成式大模型有着巨大差异。本文会完整拆解Jev底层原理、三大核心原语能力、适用业务场景,同时提供可直接运行的curl、Python代码示例,并且结合多组实测数据,客观分析模型优势与能力边界,帮助普通开发者和AI应用从业者快速上手落地。
798 1
|
6天前
|
人工智能 JSON 自然语言处理
2026 年 Jev 决策模型全解析:核心原理拆解,性能实战测评与落地部署教程
有一款特殊AI模型在开发者圈子刷屏,它摒弃传统大模型擅长的对话聊天能力,专注做高速结构化决策,它就是TypeSafe AI推出的Jev模型。该模型由ChatGPT共同发明人Diogo Almeida主导研发,定位为System One Model(系统一模型),对标人类大脑快速直觉判断的思维模式,在响应延迟、调用成本、结构化输出稳定性上相比传统生成式大模型有着巨大差异。本文会完整拆解Jev底层原理、三大核心原语能力、适用业务场景,同时提供可直接运行的curl、Python代码示例,并且结合多组实测数据,客观分析模型优势与能力边界,帮助普通开发者和AI应用从业者快速上手落地。
524 0
|
24天前
|
人工智能 测试技术 API
最近全网爆火的 Jev 到底是什么?适合干什么、怎么用,一篇讲透!
Jev是TypeSafe AI推出的“系统一模型”,不生成文本,专做毫秒级结构化决策:Choice(多选)、Score(打分)、Noul(是非概率)。响应快193倍、成本低444倍,适合工单路由、内容审核、测试定级等高频判断场景。
2632 4
最近全网爆火的 Jev 到底是什么?适合干什么、怎么用,一篇讲透!
|
7天前
|
存储 人工智能 自然语言处理
千问办公官网入口链接在哪?2026年最新QwenWork测评、千问办公怎么样?一文看懂
千问办公(QwenWork)是阿里云推出的AI智能办公平台,提供网页端和阿里云官网双入口。支持PPT/Word/Excel生成、多模态处理、网页全栈搭建、钉钉深度集成等6大核心能力。个人版免费可用,高级版198元/月;企业版198元/人/月。新用户注册即赠2000积分。阿里千问办公QwenWork官网:https://t.aliyun.com/U/0VCTGt 阿里AI工作平台,一句话完成数据分析、PPT 生成、视频剪辑、网页搭建等复杂任务
1049 0
|
17天前
|
Windows
【保姆级】.NET Framework 3.5离线安装教程(2026最新实测)
.NET Framework 3.5是微软经典运行库,专为兼容老软件、老游戏设计。Win7自带,Win10/11需手动启用(在线或离线安装)。它与4.x系列并存不冲突,缺它会导致“找不到组件”报错。本文详解两种安装方式及常见问题解决,小白也能轻松上手。(239字)
2237 0

热门文章

最新文章