数组(java)

目录

数组的定义和使用:

数组的初始化:

遍历数组:

数组是引用类型 

初始JVM的内存分布

再读引用变量

认识null 

数组的应用场景

作为函数的参数

作为函数的返回值

数组练习

数组转字符串

排序 

冒泡排序

数组逆序

数组求平均值


数组的定义和使用:

数组是一块连续的内存,用来存储相同类型的数据

数组名.length: 

int[] array3 = new int[10];//默认全部初始化为0
System.out.println(array3.length);//数组长度
int n = 10;
int[] array4 = new int[n];//

数组的初始化:

数组的初始化主要分为动态初始化以及静态初始化

  1. 动态初始化:在创建数组时,直接指定数组中元素的个数
int[] array3 = new int[10];//默认全部初始化为0
  1. 静态初始化:在创建数组时不直接指定数组元素个数,而是直接将具体的数据内容进行指定
int[] array = {1, 2, 3, 4};//简化形式
//int array2[]={1,2,3,4};//不推荐
int[] array2 = new int[]{1, 2, 3, 4};

new是一个关键字,一般用来new对象,即数组是一个对象,Java当中一切皆对象 

int[] array1;
array1 = new int[10];
int[] array2;
array2 = new int[]{10, 20,30};
// 注意省略格式不可以拆分,否则编译失败
// int[] array3:
// array3 = {1, 2, 3};
int[] array = null;//小写
System.out.println(array);

如果数组中存储元素类型为引用类型,默认值为null

遍历数组:

 //增强for循环  for-each循环
for (int x : array2) {System.out.print(x + " ");
}

遍历这个数组的时候,把数组当中的元素赋值给x

数组是引用类型 

初始JVM的内存分布
  1. 程序运行时代码需要加载到内存
  2. 程序运行产生的中间数据要存放在内存
  3. 程序中的常量也要保存
  4. 有些数据可能需要长时间存储,而有些数据当方法运行结束后就要被销毁

如果堆内存中存储的数据不加区分的随意存储,那对内存管理起来将会非常麻烦

因此JVM对所使用的内存按照功能的不同进行了划分:

再读引用变量

认识null 
public static void main(String[] args) {int[] array = null;//一个不指向对象的引用System.out.println(array.length);
}

array当前不指向任何对象,因此没有长度,不能对这个内存进行任何读写操作,一旦尝试读写,就会出现异常

注意:JAVA中并没有约定null和0号地址的内存有任何关联

对象不能指向对象,只有引用可以指向对象

数组的应用场景

作为函数的参数
public static void main(String[] args) {int[] array = {1, 2, 3, 4};fun(array);for (int x : array) {System.out.print(x + " ");}   }public static void fun(int[] array) {array = new int[]{11, 22, 33, 44, 55};//重新在堆中开辟了地址}

结果:

只是修改了形参的指向 

作为函数的返回值
public static void main(String[] args) {int[] array = getArray();System.out.println(array[0]);
}
public static int[] getArray() {int[] arr = {1,2,3,4,5,6};return arr;  // return 返回数组,返回的是数组内存中地址
}

数组练习

数组转字符串
import java.util.Arrays;public class Shift {public static void main(String[] args) {int[] array = {1, 2, 3, 4, 5};System.out.println(Arrays.toString(array));}
}

排序 
import java.util.Arrays;public class Shift {public static void main(String[] args) {int[] array = {21, 12, 13, 54, 5};System.out.println(Arrays.toString(array));//打印// Arrays.sort(array);//自动排序Arrays.sort(array, 0, 2);//区间排序[0,2)——>0,1System.out.println(Arrays.toString(array));}
}

 开发效率很高!

import java.util.Arrays;public class Shift {public static void main(String[] args) {int[] array = {21, 12, 13, 54, 5};System.out.println(myToString(array));//打印// Arrays.sort(array);//自动排序Arrays.sort(array, 0, 2);//区间排序[0,2)——>0,1System.out.println(myToString(array));int[] array2 = {};System.out.println(Arrays.toString(array2));//[]}public static String myToString(int[] array) {//相当于Arrays.toStringif (array == null) {return "null";}if (array.length == 0) {return "[]";}String ret = "[";for (int i = 0; i < array.length; i++) {ret += array[i];if (i != array.length - 1) {ret += ", ";}}ret += "]";return ret;}}
冒泡排序
public class bubbleSort {public static void bubbleSort(int[] array) {//i代表趟数for (int i = 0; i < array.length - 1; i++) {//已经优化了,每次比上次少1个boolean flg = false;for (int j = 0; j < array.length - 1 - i; j++) {if (array[j] > array[j + 1]) {int tmp = array[j];array[j] = array[j + 1];array[j + 1] = tmp;flg = true;}}if (!flg) {//没有交换,进一步优化return;}}}
数组逆序
public class Reverse {public static void reverse(int[] array) {if (array == null) {return;}int i = 0;int j = array.length - 1;while (i < j) {int tmp = array[i];array[i] = array[j];array[j] = tmp;i++;j--;}}public static String myToString(int[] array) {if (array == null) {return "null";}if (array.length == 0) {return "[]";}String ret = "[";for (int i = 0; i < array.length; i++) {if (i != array.length - 1) {ret += (array[i] + "," + " ");} else {ret += array[i];}}return ret += "]";}public static void main(String[] args) {int[] array = {1, 2, 3, 4};reverse(array);System.out.println(myToString(array));}
}
数组求平均值
public class Average {public static void main(String[] args) {int[] arr = {1, 2, 3, 4};System.out.println(avg(arr));}public static double avg(int[] arr) {int sum = 0;for (int x : arr) {sum += x;}return (double) sum / (double) arr.length;}
}

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

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

相关文章

CSRF漏洞初解

CSRF漏洞初解 1.什么是CSRF漏洞 CSRF&#xff08;Cross-Site Request Forgery&#xff09;漏洞是一种Web应用程序安全漏洞&#xff0c;也被称为"One-Click Attack"或"Session Riding"。它利用了Web应用程序对用户在其他网站上已经验证过的身份的信任&…

数据——关键生产要素

数据作为数字经济时代的关键生产要素&#xff0c;逐步融入生产生活各方面&#xff0c;深刻影响并重构着经济社会运行和社会治理&#xff0c;已成为影响未来发展的关键战略性资源。近年来&#xff0c;我国高度重视发展数字经济、数据要素及其市场化配置改革&#xff0c;发布了一…

多模态对齐方案

最全 LMM 模型结构&#xff08;13种&#xff09;综述本文中我们介绍了 13 中常见的大型多模态模型&#xff08;Large Multimodal Models, LMM&#xff09;&#xff0c;包括 BLIP-2&#xff0c;LLaVA、MiniGPT、Qwen-VL 以及 Ferret 等。https://mp.weixin.qq.com/s/EnK7F0yPYmX…

C语言入门(第二天:判断、循环)

一、基础语法 1.1 位运算符(&#xff01;&#xff01;重点) 运算符术语示例结果&按位与011 & 1012个都为1才为1&#xff0c;结果为001|按位或011 & 101有1个为1就为1&#xff0c;结果为111^按位异或011 ^ 101不同的为1&#xff0c;结果为110~取反011100<<左…

使用Python实现自动化网页答题功能-模拟考试篇

介绍 在驾驶员考试网站上进行模拟考试python自动答题 自动化原理 该脚本使用了自动化模块 DrissionPage 中的 ChromiumPage 类来实现网页的自动化操作。通过定位网页元素和模拟点击操作&#xff0c;完成了选择答案和提交答卷的过程。 用途与注意事项 用途&#xff1a;该脚本…

LLM推理框架Triton Inference Server学习笔记(二): Triton模型部署流程(stey by stey)

官方文档查阅: TritonInferenceServer文档 1. 写在前面 上一篇文章对triton inference server进行了一个整体的介绍&#xff0c;解答了三个经典问题what, why, how。 这篇文章就开始转入实践&#xff0c; 从实践的角度整理Triton模型部署的全流程&#xff0c; 如果我有一个训…

系统架构最佳实践 -- 卡券系统架构设计

目录 1.卡券类型的设计&#xff1a; 2.用户领取和使用流程&#xff1a; 3.卡券发放与管理&#xff1a; 4.卡券核销与统计&#xff1a; 5.安全性和防欺诈&#xff1a; 随着电子商务的迅速发展&#xff0c;卡券系统成为了各种商家吸引用户和促销的重要手段。在设计和实现卡券…

分享一个预测模型web APP的功能模块和界面的设计

一个临床预测模型web APP功能模块与界面设计 随着医疗技术的不断进步&#xff0c;web APP是临床预测模型在医学领域的应用的重要形式。这里分享一个web APP的设计&#xff0c;手里有医学预测模型的可以尝试将其构建成webAPP&#xff0c;进而在临床实践中体验预测模型带来的便利…

CTF工具下载(1)----随波逐流

为什么要写这个博客喃&#xff0c;因为随波逐流每隔一段时间就会更新&#xff0c;要下载最新版本才能用&#xff0c;但是每次都会有点麻烦&#xff0c;所以写一个博客记录下。 1.进入官网&#xff0c;点击 2.进入城通网盘 3.进入编码工具 4.点击最新版本的随波逐流就下载了&am…

在Mac主机上连接Linux虚拟机

前言 最近醉心于研究Linux&#xff0c;于是在PD上安装了一个Debian Linux虚拟机&#xff0c;用来练练手。但是每次在mac和Linux之间切换很是麻烦&#xff0c;有没有一种方法&#xff0c;可以在mac终端直接连接我的虚拟机&#xff0c;这样在mac终端上就可以直接操控我的Linux虚…

咸鱼之王_手游_开服搭建架设_内购修复无bug运营版

视频演示 咸鱼之王_手游_开服 游戏管理后台界面 源码获取在文章末尾 源码获取在文章末尾 源码获取在文章末尾 或者直接下面 https://githubs.xyz/y28.html 1.安装宝塔 yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh &…

(2024,IXC2-4KHD,LVLM,动态图像分割,高分辨率图像处理)InternLM-XComposer2-4KHD

InternLM-XComposer2-4KHD: A Pioneering Large Vision-Language Model Handling Resolutions from 336 Pixels to 4K HD 公和众和号&#xff1a;EDPJ&#xff08;进 Q 交流群&#xff1a;922230617 或加 VX&#xff1a;CV_EDPJ 进 V 交流群&#xff09; 目录 0. 摘要 3. 方…

【云计算】云数据中心网络(二):弹性公网 IP

云数据中心网络&#xff08;二&#xff09;&#xff1a;弹性公网 IP 1.什么是弹性公网 IP2.弹性公网 IP 的类型2.1 多线 EIP2.2 任播 EIP2.3 单线静态 EIP2.4 精品 EIP2.5 识别不同类型的 IP 的地址 3.弹性公网 IP 功能3.1 自带公网 IP 地址上云3.2 尽力找回公网 IP 地址3.3 连…

【学习心得】神经网络知识中的符号解释②

我在上篇文章中初步介绍了一些神经网络中的符号&#xff0c;只有统一符号及其对应的含义才能使我自己在后续的深度学习中有着一脉相承的体系。如果对我之前的文章感兴趣可以点击链接看看哦&#xff1a; 【学习心得】神经网络知识中的符号解释①http://t.csdnimg.cn/f6PeJ 一、…

3. 安装arrach结构的Mysql

提示&#xff1a;arm的centos上面安装arrach结构的Mysql 文章目录 前言一、查看已经安装过的并卸载mysql二、创建mysql用户组1.设置用户组2. 安装3.设置启动4.查看密码5.修改登录密码6.授权7.修改连接8.设置参数 常见问题排查1. 启动失败查看&#xff1a;2. 用户操作3. 踩坑解决…

Leetcode刷题-字符串详细总结(Java)

字符串 字符串可能在算法处理上面和数组是类似的&#xff0c;但是String和数组的数据结构还是有一些不一样的 1、反转字符串 344. 反转字符串 - 力扣&#xff08;LeetCode&#xff09; 双指针的经典应用&#xff0c;两个指针同时向中间移动 public void reverseString(char[…

扣子Coze插件教程:如何使用Coze IDE创建插件

&#x1f9d9;‍♂️ 诸位好&#xff0c;吾乃斜杠君&#xff0c;编程界之翘楚&#xff0c;代码之大师。算法如流水&#xff0c;逻辑如棋局。 &#x1f4dc; 吾之笔记&#xff0c;内含诸般技术之秘诀。吾欲以此笔记&#xff0c;传授编程之道&#xff0c;助汝解技术难题。 &#…

爬虫 BeautifulSoup模块

爬虫 BeautifulSoup模块 【一】介绍 【1】说明 BeautifulSoup库是python的一个第三方库&#xff0c;主要用于处理HTML和XML文档他提供了一些简单的、python式的函数来解析、导航、搜索以及修改分析树&#xff0c;使得从网页抓取的数据变得简单高效BeautifulSoup自动将输入文…

华大基因获证:氧化三甲胺检测试剂助力心血管疾病早期干预

近日&#xff0c;深圳华大基因股份有限公司旗下的全资子公司华大生物科技&#xff08;武汉&#xff09;有限公司获得两项医疗器械注册证&#xff08;注册号&#xff1a;鄂械注准20232404470和鄂械注准20232404469&#xff09;。该试剂是国内首个获批二类注册的&#xff0c;基于…

2024第十五届蓝桥杯 Java B组 填空题

声明&#xff1a;博主比较菜&#xff0c;以下均为个人想法。解决方法仅供参考。欢迎大家一起讨论交流&#xff01; 第一题&#xff1a; 题目&#xff1a; &#xff08;简洁版&#xff09;从小到大排列是20或24倍数的正整数&#xff0c;前10个数依次是&#xff1a;”20 24 40 …