Java编程之数组

简介: # 数组(容器)数组是一组数据类型相同的数据的组合,将这些数据统一的管理起来数组本身是一个引用数据类型,数组内存储的类型可以是基本类型 也可以是引用类型 数组的特点 1.数组本身是一个引用数据类型 2.数组是在堆内存中的一串连续的地址存在 3.数组在初始化时必须指定长度 4.堆内存的数组空间长度一旦确定 不能再次发生改变 5.栈内存的变量中存储的是数组的地址引用 6.数组内部存储的类型可以是基本的 也可以是引用

# 数组(容器)

数组是一组数据类型相同的数据的组合,将这些数据统一的管理起来

数组本身是一个引用数据类型,数组内存储的类型可以是基本类型 也可以是引用类型

数组的特点

1.数组本身是一个引用数据类型

2.数组是在堆内存中的一串连续的地址存在

3.数组在初始化时必须指定长度

4.堆内存的数组空间长度一旦确定  不能再次发生改变

5.栈内存的变量中存储的是数组的地址引用

6.数组内部存储的类型可以是基本的 也可以是引用

## 1.数组的定义(声明)

 数据类型[]  数组名字;

 int[] x;

 char[] y;

 boolean[] z;

 String[] m;

## 2.数组的赋值(初始化)

 静态初始化     有长度  有元素

  int[] array = {10,20,30,40,50};

  int[] array = new int[]{10,20,30};

 动态初始化     有长度  没有元素(不是真的没有 默认值)

  int[] array = new int[5];

  整数默认值---0

  浮点数默认值---0.0

  字符型默认值---  0---char   97-a  65-A  48-'0'

  布尔型默认值---  false

  引用数据默认值--- null String[]

## 3.数组元素的访问

 通过元素在数组中的位置来访问

 存值/取值

 位置---->index索引

 索引是有取值范围    [从0开始-----数组长度-1]

 如果数组的索引超出了上述范围

 会出现一个运行时异常   ArrayIndexOutOfBoundsException

## 4.数组元素的遍历(轮询)

 通过循环的方式访问数组的每一个元素

 for( ; ; ){

 }

 JDK1.5版本之后   新的特性   增强for循环  加强for   forEach

 for(自己定义的变量(接收数组内每一个元素) : 遍历的数组array){

 }

 正常的for循环以及加强的for循环都需要非常熟练

 1.正常的for   有三个必要条件  index索引  找到某一个元素的位置

      可以通过index直接访问数组的某一个位置   存值  取值都可以

      不好在于写法相对来说比较麻烦

 2.增强的for   有两个条件    用来取值的变量  用来遍历的数组  没有index索引

      好处写法相对比较容易

      不好只能取值  不能存值

      没有index索引  找不到元素到底是哪一个

## 5.基本数据类型和引用数据类型在内存结构上的区别

所有的变量空间都存储在栈内存

变量空间可以存储基本数据类型  也可以存储引用数据类型

如果变量空间存储的是基本数据类型  存储的是值  

       一个变量的值改变  另一个不会跟着改变

如果变量空间存储的是引用数据类型  存储的是引用(地址)

       一个变量地址对应的值改变 另一个跟着改变

基本类型&引用类型内存区别.jpg

## 练习

  •   新建一个数组,把数组里的数取出来,再按照倒序的排列方式放进去
  •   解析代码如下:
publicclassWe{
publicstaticvoidmain (String[] agrs){
int[] array= {1,2,3,4};
for(inti=0;i<array.length/2;i++){//控制交换的次数 数组长度的一半intx=array[i];
array[i] =array[(array.length-1)-i];
array[(array.length-1)-i] =x;
            }
for(intv:array){
System.out.println(v);
            }
        }
}
  • 运行一下看看:

image.png

  • 各位读者可以自己试着自己编写一些小程序
  • 用程序实现一些功能
  • 我们下期再见
目录
相关文章
|
14天前
|
安全 Java 开发者
深入理解Java并发编程:线程安全与性能优化
【4月更文挑战第9天】本文将深入探讨Java并发编程的核心概念,包括线程安全和性能优化。我们将详细解析Java中的同步机制,包括synchronized关键字、Lock接口以及并发集合等,并探讨它们如何影响程序的性能。此外,我们还将讨论Java内存模型,以及它如何影响并发程序的行为。最后,我们将提供一些实用的并发编程技巧和最佳实践,帮助开发者编写出既线程安全又高效的Java程序。
22 3
|
15天前
|
Java
Java 并发编程:深入理解线程池
【4月更文挑战第8天】本文将深入探讨 Java 中的线程池技术,包括其工作原理、优势以及如何使用。线程池是 Java 并发编程的重要工具,它可以有效地管理和控制线程的执行,提高系统性能。通过本文的学习,读者将对线程池有更深入的理解,并能在实际开发中灵活运用。
|
11天前
|
安全 算法 Java
深入理解Java并发编程:线程安全与性能优化
【4月更文挑战第11天】 在Java中,高效的并发编程是提升应用性能和响应能力的关键。本文将探讨Java并发的核心概念,包括线程安全、锁机制、线程池以及并发集合等,同时提供实用的编程技巧和最佳实践,帮助开发者在保证线程安全的前提下,优化程序性能。我们将通过分析常见的并发问题,如竞态条件、死锁,以及如何利用现代Java并发工具来避免这些问题,从而构建更加健壮和高效的多线程应用程序。
|
16天前
|
Java
Java并发编程:深入理解线程池
【4月更文挑战第7天】在现代软件开发中,多线程编程已经成为一种不可或缺的技术。为了提高程序性能和资源利用率,Java提供了线程池这一强大工具。本文将深入探讨Java线程池的原理、使用方法以及如何根据实际需求定制线程池,帮助读者更好地理解和应用线程池技术。
15 0
|
2天前
|
存储 Java 程序员
Java 数组
4月更文挑战第16天
|
4天前
|
IDE Java 物联网
《Java 简易速速上手小册》第1章:Java 编程基础(2024 最新版)
《Java 简易速速上手小册》第1章:Java 编程基础(2024 最新版)
10 0
|
4天前
|
安全 Java 开发者
Java并发编程:深入理解Synchronized关键字
【4月更文挑战第19天】 在Java多线程编程中,为了确保数据的一致性和线程安全,我们经常需要使用到同步机制。其中,`synchronized`关键字是最为常见的一种方式,它能够保证在同一时刻只有一个线程可以访问某个对象的特定代码段。本文将深入探讨`synchronized`关键字的原理、用法以及性能影响,并通过具体示例来展示如何在Java程序中有效地应用这一技术。
|
5天前
|
安全 Java 调度
Java并发编程:深入理解线程与锁
【4月更文挑战第18天】本文探讨了Java中的线程和锁机制,包括线程的创建(通过Thread类、Runnable接口或Callable/Future)及其生命周期。Java提供多种锁机制,如`synchronized`关键字、ReentrantLock和ReadWriteLock,以确保并发访问共享资源的安全。此外,文章还介绍了高级并发工具,如Semaphore(控制并发线程数)、CountDownLatch(线程间等待)和CyclicBarrier(同步多个线程)。掌握这些知识对于编写高效、正确的并发程序至关重要。
|
6天前
|
缓存 分布式计算 监控
Java并发编程:深入理解线程池
【4月更文挑战第17天】在Java并发编程中,线程池是一种非常重要的技术,它可以有效地管理和控制线程的执行,提高系统的性能和稳定性。本文将深入探讨Java线程池的工作原理,使用方法以及在实际开发中的应用场景,帮助读者更好地理解和使用Java线程池。
|
6天前
|
Java API 数据库
深研Java异步编程:CompletableFuture与反应式编程范式的融合实践
【4月更文挑战第17天】本文探讨了Java中的CompletableFuture和反应式编程在提升异步编程体验上的作用。CompletableFuture作为Java 8引入的Future扩展,提供了一套流畅的链式API,简化异步操作,如示例所示的非阻塞数据库查询。反应式编程则关注数据流和变化传播,通过Reactor等框架实现高度响应的异步处理。两者结合,如将CompletableFuture转换为Mono或Flux,可以兼顾灵活性和资源管理,适应现代高并发环境的需求。开发者可按需选择和整合这两种技术,优化系统性能和响应能力。

热门文章

最新文章