返回顶部
首页 > 资讯 > 后端开发 > Python >java数组基础详解
  • 569
分享到

java数组基础详解

2024-04-02 19:04:59 569人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录数组一. 数组概述二. 数组声明和创建三. 内存分析1.JAVA内存有:堆,栈,方法区····2.静态初始化:创建+赋值3.动态初始化:前面其实就是动态初始化,是分开写的。没有赋

数组

博客园好像炸了,在维护中。

一. 数组概述

  1. 相同类型数据的有序集合
  2. 数组描述的是相同类型的若干个数据。按照一定的先后次序排列组合而成
  3. 每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问它们
  4. 数组本身就是对象,数组对象本身是存在堆中的
  5. 一旦创建,大小不可改变,长度确定

二. 数组声明和创建

1.首先必须声明数组变量。才能在程序中使用数组


int[] nums;//主要用这样的方式
  int nums[];//这样也行,不建议
nums = new int[10];//创建一个储存10个数据的数组
  int[] nums = new int[10];//也可以这样写,把声明和创建放一起

2.数组的下标,或者说数组的索引是从[0] 开始的

    
    int[] nums = new int[10];
    nums[0]=1;
    nums[1]=2;
    nums[2]=3;
    nums[3]=4;
    nums[4]=5;
    nums[5]=6;
    nums[6]=7;
    nums[7]=8;
    nums[8]=9;
    nums[9]=10;
  • 当一个位置没有数据时,会得到类型的默认值,如 int 会得到 0,String 会得到 null 。

3.可以用 arrays.length 获取数组长度。数组的长度是确定的,确定之后不可变的。切记不要下标越界


int[] nums = new int[10];
nums[0]=1;
nums[1]=2;
nums[2]=3;
nums[3]=4;
nums[4]=5;
nums[5]=6;
nums[6]=7;
nums[7]=8;
nums[8]=9;
nums[9]=10;
int sum = 0;//求和
for(int i = 0; i < nums.length; i++){
    sum = sum + nums[i];
    System.out.println(sum);
}

三. 内存分析

1.JAVA内存有:堆,栈,方法区····

  • 堆:存放new的对象和数组。可以被所有的线程共享,不会存放别的对象引用
  • 栈:存放基本变量类型(包括这个类型的具体数值)。引用对象的变量(会存放这个引用在堆里的具体地址)

  • 方法区:可以被所有的线程共享。包含了所有的class和static变量
  • ·····还有其他,后面学到再提

2.静态初始化:创建+赋值


//如int个数组
int[] a = {1,2,3,4,5,6,7,8,9,10};
System.out.println(a[0]);
//也可以是引用类型
    Man[] mans =  {new Man(1,1),new Man(2,2)}

3.动态初始化:前面其实就是动态初始化,是分开写的。没有赋值的,为该类型的默认初始化值


int[] a = new int[10];
a[0]=1;
a[1]=2;

这里a[3] , a[4]····没有赋值,那么就是int的默认初始化值 0

4.下标区间 [ 0 , length-1 ] 。下标越界报错:java.lang.ArrayIndexOutOfBoundsException

综合举例

运行结果

四. 数组的使用

1.For-Each 循环 (省掉了下标的使用)


int[] nums = {1,2,3,4,5,6,7,8,9};
//常规for循环打印全部元素
for(int i = 0; i< nums.length; i++){
    System.out.println(nums[i]);
}
//利用for-each循环
for(int num : nums){
     System.out.println(num);
}

2.常规 for 循环

3.数组作方法入参

4.数组作返回值。比如反转数组里的元素

二维数组和冒泡排序

1.二维数组


//遍历二维数组
public class Array001 {
	public static void main(String[] args) {
        //创建二维数组
		int[][] a = {{1,2},{5,7},{9,6},{9,5,4},{6,5,4,9,1,2,3}};
        //遍历二维数组的外部数组
		for(int i=0; i<a.length; i++) {
            //j作为二维数组内部数组的下标,长度是 a[i].length
			for(int j=0; j<a[i].length;j++) {
				System.out.print(a[i][j]+" ");
			}
			System.out.println();
		}
}
}

2. 冒泡排序


//冒泡排序
import java.util.Arrays;
public class Test001 {
	public static void main(String[] args) {
        //创建一个数组
		int[] a = {12,45,2,6,48,23,9};
		method(a);
		System.out.println(Arrays.toString(a));
}
    
        //第二轮2,6,12,23,9,45,48
        //第三轮···
		//可以发现比较的轮数为数组长度a.length-1
	private static void method(int[] a) {
		//定义变量i,表示比较的轮数
		for(int i =1; i<a.length; i++) {
			for(int j = 0; j<a.length-1; j++) {
				//比较相邻元素的大小,并交换值
			if( a[j]>a[j+1] ) {
				int t = a[j];
				a[j] = a[j+1];
				a[j+1] = t;
				}
			}
		}
	}
}

总结

本篇文章的内容就到这里了,希望能给你带来帮助,也希望您能够多多关注编程网的其他内容!

--结束END--

本文标题: java数组基础详解

本文链接: https://lsjlt.com/news/129163.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • java数组基础详解
    目录数组一. 数组概述二. 数组声明和创建三. 内存分析1.JAVA内存有:堆,栈,方法区····2.静态初始化:创建+赋值3.动态初始化:前面其实就是动态初始化,是分开写的。没有赋...
    99+
    2024-04-02
  • Java基础之数组详解
    目录前言二.创建数组三.数组的使用四.数组的遍历五.数组作为方法的参数六.数组相关方法Arrays前言 我们了解数组这个概念之前,我们先思考下面几个问题。 如果我们需要两个数据,那么...
    99+
    2024-04-02
  • java基础-数组扩容详解
    目录数组与链表的比较:ArrayList:LinkedList:总结数组与链表的比较: 数组通过下标访问的话是O(1) 数组一旦声明 长度就是固定的 数组的...
    99+
    2024-04-02
  • Java基础语法之二维数组详解
    目录一、二维数组二、二维数组的声明与初始化2.1 声明2.2 初始化2.2.1 静态初始化2.2.2 动态初始化三、二维数组的遍历四、二维数组的内存图分析五、数组操作的常见异常六、总...
    99+
    2024-04-02
  • java方法与数组基础使用详解
    目录一、方法的使用1、方法的定义2、方法重载二、数组的定义和使用1、数组的基本概念(1)数组的创建(2)数组的初始化(3)数组的遍历2、数组是引用类型(JVM的内存分布)3、引用变量...
    99+
    2024-04-02
  • 【Java基础】- HttpURLConnection详解
    【Java基础】- HttpURLConnection详解 文章目录 【Java基础】- HttpURLConnection详解一、HttpURLConnection简述二、HttpURLCo...
    99+
    2023-09-09
    java servlet 开发语言 HttpURL
  • 从基础学java--数组
    目录Java数组1、数组的定义1.1、数组的声明创建1.2、内存分析1.3、数组的三种初始化1.4、 数组的基本特点1.5、数组边界2、数组的使用2.1、For-Each循环2.2、...
    99+
    2024-04-02
  • 【Java 基础】引用型数组、Java 继承、super 关键字详解
    《Java 零基础入门到精通》专栏持续更新中。通过本专栏你将学习到 Java 从入门到进阶再到实战的全套完整内容,所有内容均将集中于此专栏。无论是初学者还是有经验的开发人员,都可从本专栏获益。 ...
    99+
    2023-08-31
    java 开发语言 后端
  • 【Java 基础篇】Java Collection详解
    文章目录 导言一、Collection 简介二、List 接口三、Set 接口四、Map 接口总结 导言 Java的Collection框架是一组用于存储和操作对象的接口和类。它提供了...
    99+
    2023-09-14
    java 开发语言 jvm
  • 【Java 基础篇】Java Map 详解
    文章目录 导言一、Map 概述二、HashMap三、TreeMap四、LinkedHashMap总结 导言 在Java的集合框架中,Map接口用于存储键值对,提供了一种基于键进行查找和操作的数据结构。Map接口的实现类提供了...
    99+
    2023-08-30
    java 开发语言 数据结构
  • 【Java 基础篇】Java List 详解
    文章目录 导言一、List 概述二、ArrayList三、LinkedList四、Vector总结 导言 在Java的集合框架中,List接口是一个有序、可重复的集合,它扩展了Coll...
    99+
    2023-09-11
    java list 数据结构
  • 【Java 基础篇】Java Set 详解
    文章目录 导言一、Set 概述二、HashSet三、TreeSet四、LinkedHashSet总结 导言 在Java的集合框架中,Set接口是一个无序、不可重复的集合,它扩展了Col...
    99+
    2023-10-18
    java 开发语言 数据结构
  • 新手了解java 数组基础知识
    目录1、数组的定义2、array 遍历3、List和array 之间的转换1、数组转list2、list 转数组3、Arrays工具类4、可能遇到的问题总结1、数组的定义 ...
    99+
    2024-04-02
  • Java零基础入门数组
    目录认识数组数组的初始化默认初始化静态初始化动态初始化数组有关的问题数组的遍历求最值问题查询子元素Arrays工具类二维数组二维数组初始方式二维数组的遍历认识数组 数组的定义 数组是...
    99+
    2024-04-02
  • Java基础之StringBuffer详解
    目录一、前言二、用法三、结果四、长度 容量五、IStringBuffer接口六、value和capacity一、前言 StringBuffer是可变长的字符串 1.append 追加...
    99+
    2024-04-02
  • Java基础之Maven详解
    目录一、Maven环境的搭建1. 为什么要学习Maven?2. Maven项目架构管理工具3. 下载安装Maven4. 配置环境变量5. 阿里云...
    99+
    2024-04-02
  • Java基础之TreeMap详解
    目录一、写在前面二、定义三、成员变量四、内部类五、构造器六、成员方法一、写在前面 TreeMap的底层数据结构是红黑树,且TreeMap可以实现集合元素的排序。 所以TreeMap...
    99+
    2024-04-02
  • Java基础之ClassLoader详解
    目录一、ClassLoader简介二、内置的CLassLoader的类型三、BootstrapClassLoader四、ExtClassLoader五、AppClassLoader六...
    99+
    2024-04-02
  • Java基础之FastJson详解
    目录一、fastJson将json格式字符串转化成List集合二、fastJson将json格式字符串转化成对象三、FastJson将对象或集合转化成json格式字符串四、FastJ...
    99+
    2024-04-02
  • Java基础:流Stream详解
    目录写在前面一、"流"概念二、流的分类1、按流的方向分为:输入流、输出流2、按流处理数据的单位分为:字节流、字符流3、按流的功能分为:节点流(又称低级流)、过滤流(又称高级流、处理流...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作