【java】一维数组

news2024/12/27 11:21:53

目录

  • 一维数组内存分析
    • Java虚拟机的内存划分
    • 一维数组内存解析
  • 一维数组知识点
  • 一维数组课后练习

一维数组内存分析

Java虚拟机的内存划分

为了提高运行效率,就对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式。
在这里插入图片描述

java中的内存结构是如何划分的?(主要关心JVM的运行时内存环境)
将内存区域划分为5个部分,程序计数器、虚拟机栈、本地方法栈、堆、方法区
与目前数组相关的内存结构: int [] arr = new int[]{1,2,3}
1、虚拟机栈:用于存放方法中声明的变量.比如:arr
2、堆:用于存放数组的实体(即数组中的所有元素).比如:1,2,3

一维数组内存解析

在这里插入图片描述
在这里插入图片描述

一维数组知识点

package ArrayTest;

/**
 * 1、数组的概念:是多个相同类型数据按照一定排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一管理。
 * 2、数组的特点:①数组中的元素在内存中依次紧密排列的,有序的
 *              ② 属于引用数据类型变量;数组的元素可以是基本数据类型,也可以是引用数据类型
 *              ③数组一旦初始化完成,数组的长度就确定了;并且数组长度不能更改
 *              ④创建数组队形会在内存中开辟一整块"连续的空间"。占据的空间大小,取决于数组的长度和数组中元素的类型。
 * 3、数组的分类:
 *       ①:按照元素的类型:基本数据类型的数组、引用数据类型的数组
 *       ②:按照数组的维度来分:一维数组、二维数组。。。
 * 4、一维数组的使用:
 *       ①数组的声明和初始化
 *       ②调用数组的指定元素
 *       ③数组的属性:length,表示数组的长度
 *       ④数组的遍历
 *       ⑤数组元素的默认初始化值
 *           1)浮点型数组元素的默认初始化值
 *           2)字符型数组元素的默认初始化值
 *           3)字符型数组元素的默认初始化值
 *           4)boolean型数组元素的默认初始化值
 *           5)引用数据类型数组元素的默认初始化值
 *       ⑥一维数组的内存解析
 */

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

        //1、数组的声明和初始化
        // 声明数组
        double[] prices;
        // 静态初始化:数组变量的赋值与数组元素的赋值操作同时进行
        prices = new double[]{12.34,13.11};

//        String[] names = new String[]{"拌海蜇","龙须菜"};
        // 动态初始化:数组变量的赋值与数组元素的赋值操作分开进行
        String[] foods = new String[4];

        //2、数组元素的调用
        //通过角标的方式,获取数组元素
        //角标的范围从0开始,到数组长度-1结束
//        System.out.println(prices[0]);

        foods[0]="拌海蜇";
        foods[1]="龙须菜";
        foods[2]="炝冬瓜";
        foods[3]="玉兰花";
//        System.out.println(foods[2]);

        //3、数组的长度:用来描述数组容器中容量的大小
//        System.out.println(prices.length);
//        System.out.println(foods.length);

        //4、数组的遍历
        for(int i=0;i<prices.length;i++){
            System.out.println(prices[i]);
        }

//        //5、数组元素的默认初始化值
//        int arr1 [] = new int[3];
//        System.out.println(arr1[0]);
    }

}

package ArrayTest;

public class OneArrayTest1 {
    public static void main(String[] args) {
        //5.数组元素的默认初始化值
        //整型数组元素初始化值:0
        int [] arr1 = new int[4];
        System.out.println(arr1[0]);

        int[] arr2 = new int[4];
        for(int i=0;i<arr2.length;i++){
            System.out.println(arr2[i]);
        }

        //浮点型数组元素的默认初始化值:0.0
        float [] float1 = new float[4];
        System.out.println(float1[0]);

        //字符型数组元素的默认初始化值:0
        char [] char1 = new char[4];
        System.out.println(char1[0]);

        if(char1[0]==0){
            System.out.println("111");
        }else if(char1[0]=='0'){
            System.out.println("222");
        }else if(char1[0]=='\u0000'){
            System.out.println("333");

        }

        //boolean型数组元素的默认初始化值:false
        boolean [] boolean1 = new boolean[4];
        System.out.println(boolean1[1]);

        //引用数据类型数组元素默认初始化值:null
        String [] strings = new String[4];
        for(int i=0;i<strings.length;i++){
            System.out.println(strings[i]);
        }

        //6.数组的内存解析
        int a1[] = new int[]{1,2,3,4};
        int [] a2 = a1;
        a2[1]=10;
        System.out.println(a1[1]); //10
    }
}

一维数组课后练习

package ArrayTest;

import java.util.Arrays;
import java.util.Scanner;

public class OneArrayExer {

    public static void main(String[] args) {
        /**
         * 案例:“破解”房东电话号码
         */
        int arr[] = new int[]{8,2,1,0,3};
        int index[] = new int[]{2,0,3,2,4,0,1,3,2,3,3};

        String tell = "";

        for(int i=0;i<index.length;i++){
            int value = index[i];//2 3

            tell+=arr[value];//2

        }
        System.out.println(tell);


        /**
         * 案例:输出英文星期几
         * 用一个数组,保存星期一到星期天的7个英语单词,从键盘输入1-7,显示对应的单词
         * {"Monday","Tuesday","Wednesday","Thursday","Friday""Saturday","Sunday"}
         */
        String [] days = new String[]{"Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"};
        Scanner scanner = new Scanner(System.in);
        int number = scanner.nextInt();

        if(number<1 || number >7){
            System.out.println("您输入的数据有误。");
        }else
            System.out.println(days[number-1]);

        /**
         * 案例:学生考试等级划分
         * 从键盘读入学生成绩,找出最高分,并输出学生成绩等级
         * 成绩>=最高分-10  等级为‘A'
         * 成绩>=最高分-20  等级为‘B'
         * 成绩>=最高分-30  等级为‘C'
         * 其余 等级为‘D'
         *提示:先读入学生人数,根据人数创建int数组,存放学生成绩
         */

        System.out.println("请输入学生人数");
        int num = scanner.nextInt();
        System.out.print("请输入"+num+"个学生成绩");
        double [] grade =new double[num];
        for(int i=0;i<grade.length;i++){
            int grades = scanner.nextInt();
            grade[i]=grades;
        }

        double max_num = max(grade);
        System.out.println("最高分为:"+max_num);

        for(int j=0;j<grade.length;j++){
            if(grade[j]>=max_num-10){
                System.out.println("等级为A");

            }else if(grade[j]>=max_num-20){
                System.out.println("等级为B");
            }else if(grade[j]>=max_num-30){
                System.out.println("等级为C");
            }
            else{
                System.out.println("等级为D");
            }
        }
    }

    private static double max(double[] grade) {
        Arrays.sort(grade);
        return grade[grade.length-1];
    }


}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1992834.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

cs224w colab0笔记

1.colab0 1.1 数据集 from torch_geometric.datasets import KarateClubdataset KarateClub() print(fDataset:{dataset}:) print() print(fNumber of graphs:{len(dataset)}) print(fNumber of features:{dataset.num_features}) print(fNumber of classes:{dataset.num_cl…

机器学习面试-核心概念-问题理解

1.机器学习的思想 计算机程序随着经验的积累&#xff0c;能够实现性能的提高。对于某一类任务T及其性能度量P&#xff0c;若一个计算机程序在T上以P衡量的性能随着经验E而自我完善&#xff0c;那么就称这个计算机程序在从经验E学习。 机器学习是人工智能的一个分支&#xff0c…

VMware Workstation 与 Device/Credential Guard 的不兼容问题

&#xff08;1&#xff09;出现问题 &#xff08;2&#xff09;出现问题原因&#xff1a; 我电脑原先弄过Hyper-V&#xff0c;这玩意是微软公司开发的一款虚拟化产品&#xff0c;它是微软第一个采用类似 VMware 和 Citrix Xen 等产品中的基于 hypervisor&#xff08;虚拟机监控…

基于区块链的供应链应用开发

区块链的供应链溯源应用开发 一 、环境准备 (1)更新镜像源 apt update(2)安装(openssl、jdk、git) apt -y install openssl default-jdk git(3)配置JAVA_HOME环境变量 echo “export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64/” >> /etc/profilesource /etc…

一键编译并启动一个 ARM Linux qemu 虚拟机

需要事先自己编译 qemu-system-arm 可执行文件&#xff1b; 1&#xff0c;编译创建ARM 虚拟机 1.1 一起从头开始版 cd 进一个空文件夹&#xff0c;然后 $ vim buildup.sh $ bash buildup.sh 访问github网络没什么问题&#xff1a; 硬编码了一个路径/home/hipper/ex_vexpre…

Java对象内存布局和Synchronized锁升级(二)

目录 对象内存布局对象头实例数据对齐填充锁在内存布局中的标志位 锁升级无锁偏向锁偏向锁升级 轻量级锁重量级锁 锁消除和锁粗化锁消除锁粗化 锁升级总结 对象内存布局 在HotSpot虚拟机里&#xff0c;对象在堆内存中的存储布局可以划分为三个部分:对象头(Header)、实例数据(I…

同态加密和SEAL库的介绍(八)性能

本篇会对比三种加密方案&#xff0c;同时每种方案配置三种参数。即九种情况下的各个操作的性能差异&#xff0c;为大家选择合适的方案和合适的参数提供参考。表格中所有时长的单位均为微妙&#xff0c;即 。 当然数据量比较大&#xff0c;为了方便大家查找&#xff0c…

应用商店故障(UOS系统)

应用商店故障&#xff08;UOS系统&#xff09; 1. 安装应用商店内的应用无法下载&#xff0c;更新系统时提示依赖关系被破坏&#xff0c;怎么办&#xff1f; 问题描述 安装应用商店内的应用无法下载&#xff0c;更新系统时均提示依赖关系被破坏 解决方案 1、可先建议用户尝试修…

day 22线程间通信

一、互斥锁 1、资源&#xff1a; 资源是有限的&#xff0c;在程序运行过程中&#xff0c;一段代码、一段空间、一个变量、CPU、内存都可以看做资源 2、互斥锁&#xff1a; 是一种资源,当一个线程任务加锁,其余线程任务无法再次加锁,直到解锁后才能加锁&#xff0c;互斥…

数据机房防静电措施有哪些?安装防静电地板时记住这几点

生活中静电无处不在&#xff0c;一般情况静电不会对我们有什么影响&#xff0c;但在一些特殊场合&#xff0c;比如数据机房、配电室、消控室、电子厂房等&#xff0c;静电的危害必须要引起重视&#xff0c;因为这些场合通常有比较多的电子设备&#xff0c;电子设备中有比较多的…

priority_queue模拟实现【C++】

文章目录 全部的实现代码放在了文章末尾什么是适配器模式&#xff1f;准备工作包含头文件定义命名空间类的成员变量什么是仿函数&#xff1f;比较仿函数在priority_queue中的作用通过传入不同的仿函数可以做到大堆和小堆之间的切换通过传入不同的仿函数可以做到改变priority_qu…

[Leetcode][Medium]-面试题 17.14.最小k个数-TOP K问题-快排/大根堆

一、题目描述 原题地址 二、整体思路 (1)、快排 数组中最小的k个数就是说把数组升序排列&#xff0c;求[0,k-1]区间上的数。 快排可以得到一个元素在升序排序的数组中的正确位置。在这个位置的左边区间[l,l2-1]上的元素都比它小&#xff0c;在这个位置的右边区间[r2,r]上的元素…

zabbix 监控软件

zabbix 监控软件 自带图形化界面&#xff0c;通过网页就可以监控所有的服务器的状态。 事件告警&#xff0c;邮箱通知&#xff08;噩梦&#xff09;。 zabbix是什么&#xff1f; web界面提供的分布式监控以及网络监控功能的开源的企业级的软件解决方案。 服务端 监控端 客…

App安装来源追踪的四大方案解析

App的开发者和运营商&#xff0c;都会研究分析渠道的效果&#xff0c;而对渠道来源的追根溯源是一切分析的基础。假如没有明确的安装来源数据&#xff0c;至少会造成以下几种后果&#xff1a; 没有安装来源数据&#xff0c;我们无法判断各个投放渠道流量的价值&#xff0c;也就…

全网首发!鸿蒙OS登上PC,冒风险流出内测,系统界面截图,过会儿就删

开玩笑的啦&#xff0c;其实这是Deepin操作系统的截图&#xff0c;很漂亮吧&#xff0c;这是deepin v23 rc2 的主题之一 鸿蒙还没有发&#xff0c;不知道24年末还能不能上&#xff0c;emmm

Python实战:基础语法

一、求解列表中的最大元素 import random#定义函数 def get_max(lst):x lst[0] #x存储的是元素的最大值#遍历操作for i in range(1,len(lst)):if lst[i] > x:x lst[i] #对最大值进行重新赋值return x#调用函数 lst [random.randint(1,100) for item in range(10)] print…

基于SiliconCloud快速体验GraphRag.Net

SiliconCloud介绍 SiliconCloud 基于优秀的开源基础模型&#xff0c;提供高性价比的 GenAI 服务。 不同于多数大模型云服务平台只提供自家大模型 API&#xff0c;SiliconCloud上架了包括 Qwen、DeepSeek、GLM、Yi、Mistral、LLaMA 3、SDXL、InstantID 在内的多种开源大语言模…

sgetrf M N is 103040 时报错,这是个bug么 lapack and Openblas the same,修复备忘

1,现象 MN103040时&#xff0c;调用 sgetrf_ 时&#xff0c;无论是 LAPACK 还是 OpenBLAS&#xff0c;都出错&#xff1a; openblas&#xff1a; lapack&#xff1a; 2, 复现代码 出现问题的应该是由于M和N相对数字太大&#xff0c;乘积超出32bit整数的表达范围&#xff0c;…

【踩坑】TypeScript 中使用 sass 动态设置样式

问题 在从 Vue2 项目转向 Vue3 项目时&#xff0c;不得不将已经封装好的 echarts 图表也升级成 Vue3 适配的版本&#xff0c;遇到了一个有些诡异的问题&#xff0c;在此记录一下。 背景&#xff1a; 在 Vue2 的项目中&#xff0c;为了动态设置 echarts 的相关配置&#xff0c;于…

trie算法

1、定义 高效的存储和查找字符串集合的数据结构 它的优点是&#xff1a;利用字符串的公共前缀来减少查询时间&#xff0c;最大限度地减少无谓的字符串比较&#xff0c;查询效率比哈希树高 2、构建 我们可以使用数组来模拟实现Trie树。 我们设计一个二维数组 son[N] [26] 来…