Java数组入门:IDEA中数组的定义与动态初始化

需积分: 0 0 下载量 94 浏览量 更新于2024-08-04 收藏 342KB PDF 举报
"IDEA工具, 数组, Java编程, 动态初始化, 数组访问, 内存分配" 在编程领域,数组是一种基础且重要的数据结构,它允许程序员存储和管理固定数量相同类型的数据。在Java编程中,数组的概念和使用是不可或缺的知识点。在IDEA(IntelliJ IDEA)这样的集成开发环境中,我们可以更高效地编写和调试涉及数组的代码。 数组1.1什么是数组【理解】 数组是一个固定大小的容器,用于存储一组相同类型的元素。这些元素通过它们在数组中的位置,即索引来访问。在Java中,数组一旦创建,其长度是不可变的。 1.2数组定义格式【记忆】 在Java中,有两种定义数组的基本方式: 1.2.1 第一种:数据类型[]数组名,例如 `int[] arr;` 1.2.2 第二种:数据类型数组名[],例如 `int arr[];` 这两种方式在功能上是等价的,但第一种方式更符合Java的风格。 1.3数组动态初始化【应用】 1.3.1 动态初始化是指在声明数组时只指定长度,不指定具体值。Java会为数组的所有元素自动提供默认初始化值,如整型数组的默认值为0,引用类型为null。 1.3.2 动态初始化的格式:`数据类型[] 数组名 = new 数据类型[数组长度];` 比如 `int[] arr = new int[3];` 1.4数组元素访问【应用】 1.4.1 索引是数组中每个元素的唯一标识,从0开始,直到数组长度减1。例如,对于一个长度为3的数组,索引为0、1和2。 1.4.2 访问数组元素的格式是 `数组名[索引]`。例如,要访问上述数组的第一个元素,使用 `arr[0]`。 1.5内存分配【理解】 了解内存分配对于理解程序执行至关重要。在Java中,数组和对象通常存储在堆内存中。当声明并初始化一个数组时,`new` 关键字负责在堆中分配足够的空间来存放指定数量的元素。 在上述代码示例中: ```java public class ArrayDemo { public static void main(String[] args) { int[] arr = new int[3]; // 在堆中为数组分配内存 System.out.println(arr); // 打印数组的引用,不是实际的元素值 System.out.println(arr[0]); // 访问并打印第一个元素 System.out.println(arr[1]); // 访问并打印第二个元素 System.out.println(arr[2]); // 访问并打印第三个元素 } } ``` 这段代码展示了如何在IDEA中创建和访问一个整型数组。`System.out.println(arr)` 打印的是数组对象在内存中的地址,而不是元素的值。而`arr[0]`、`arr[1]`和`arr[2]`分别访问数组的三个元素。 此外,内存分为不同的区域,如寄存器、本地方法栈、方法区和堆内存。在Java虚拟机(JVM)中,数组和对象主要在堆内存中分配,而其他如代码和常量等则存储在方法区。理解这些内存区域有助于优化程序性能和避免内存相关的问题。

简化代码:def generate_time_series(start,end,t1,t2): current = start end_item = end time_delta = datetime.timedelta(days=t1,hours=t2) time_series = [current] while current < end_item: next1 = current + time_delta time_series.append(next1) current = next1 return time_series time_hour=generate_time_series(data1.loc[0]['FDT_TIME'],data1.loc[len(data1)-1]['FDT_TIME'],0,1) time_day=generate_time_series(data1.loc[0]['FDT_TIME'],data1.loc[len(data1)-1]['FDT_TIME'],1,0) def VALIDITY(timelist,thedata): datalist1=[] datalist2=[] thedata1=thedata.values for i in range(1,len(timelist)): TFlis=[] for j in range(len(thedata1)): if timelist[i-1]<=thedata1[j][2]<timelist[i]: TFlis.append(thedata1[j][6]) datalist1.append(TFlis) for i in datalist1: datalist2.append((i.count("T"))/len(i)) return datalist2 x1=[] for i in range(0,len(VALIDITY(time_hour, data1))): x1.append(i) x2=[] for i in range(0,len(VALIDITY(time_day, data1))): x2.append(i) plt.rcParams['font.sans-serif']=['SimHei'] plt.figure(figsize=(10,5)) plt.title('一周时间内的小时有效性时序图') plt.plot(x1,VALIDITY(time_hour, data1),color='k') plt.xlabel('时间') plt.ylabel('有效性') plt.xticks(np.arange(0,len(x1),24),['2010-04-18','2010-04-19','2010-04-20','2010-04-21','2010-04-22','2010-04-23','2010-04-24']) plt.show() plt.figure(figsize=(10,5)) plt.title('一周时间内的日有效性时序图') plt.plot(x2,VALIDITY(time_day, data1),color='k') plt.xlabel('时间') plt.ylabel('有效性') plt.xticks(np.arange(0,len(x2)),['2010-04-18','2010-04-19','2010-04-20','2010-04-21','2010-04-22','2010-04-23','2010-04-24']) plt.show()

2023-04-23 上传