11:java学习笔记:1D array(1维数组)

11.1array是什么

array是线性排列 的数据容器,用来存储一组**同一类型的数据元素。**数组会大量的简化一些繁杂的代码。

11.2 怎么样创建与初始化数组

11.2.1 创建一个数组

java 复制代码
public class l1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int [] nums = new int[5];

	}

}

这样子,创建了一个数组,这个数组是[0,0,0,0,0,0] 因为没有任何初始化的条件,没有任何值放进去,所以它没有任何值。

11.2.2初始化数组

java 复制代码
public class l1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int [] nums = new int[5];
		nums[0] =10;
		nums[1]=20;
		nums[2]=30;

	}

}

初步赋值,有两个方式第一个就是多步骤的,因为在数组中每一个数字都有一个下标,原来的数组是[0,0,0,0,0]那么第一个的下标是0,所以需要赋值的话,使用 nums[0]=10;那么第零个下标的数字(也就是第一个数字)就变成10,那么经过这个代码之后,数组变成了[10,20,30,0,0]了。

第二种方法,在创建的时候直接初始化

java 复制代码
public class l1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int [] nums = {10,20,30,40,50};
		

	}

}

那么这样的话,这个数组被创建出来的时候就是10,20,30,40,50这几个数字了。

所以这个数组是这样的

下标是一个非常容易错的点。在数组中,第一个数字的下标是0!

还有其他类型的 比如说double,int 等等都是可以有数组的,所以如果是double就变成小数就行。

11.3 怎么样使用(CRUD原则)

11.3.1什么是CRUD原则

C= Create(增)

R = Read(查)

U = Update(改变/更新)

D = Delete(删)

在中文中,更多说的是 增删改查

在一维数组中呢,一般长度已经设定好了,在一开始的时候已经设定好了,所以一般不太去改变,如果想要改变,一般使用动态数组(arraylist),而不是一维数组.(当然想要改变当然也是可以的,不常用,也很麻烦,你想要改变数组长度,直接使用arraylist就行)

所以增和删在1D array中都不太常见。

11.3.1.1 改

在一个数组中 如何改变一个array的数字,其实很简单。

java 复制代码
public class l1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int [] nums = {10,20,30,40,50};
		nums[1]=25;
		

	}

}

在1这个小标这里,变成了25。

那么下标为1的就改变了,(也就是第二个数字被改变了)

11.3.1.2 查
11.3.1.2.1 基本查询

基本查询,想要知道,下标为1现在到底是什么数字了,

java 复制代码
public class l1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int [] nums = {10,20,30,40,50};
		nums[1]=25;
		System.out.println(nums[1]);

	}

}

那么输出是

那么输出就是25,下标为1就改成了25了。

11.3.1.2.2 长度查询

长度在一开始其实就知道了,但是如果想要知道长度,打印出来长度的话,可以使用length

java 复制代码
public class l1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int [] nums = {10,20,30,40,50};
		nums[1]=25;
		System.out.println(nums[1]);
		System.out.println(nums.length);

	}

}

那么打印出来的结果

上面那个就是下标为1的数字,下面那个就是数组的长度

11.3.1.2.3遍历

遍历数组,是非常重要的一个代码

因为如果想要知道数字所有的数字,并且进行处理,(比较大小啊,算平均数啊 算众数啊等等)必须让数组的数字拿出来,摆在台面上,进行处理,如果直接输出,会导致有乱七八糟的东西出现

java 复制代码
public class l1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int [] nums = {10,20,30,40,50};
		nums[1]=25;
		System.out.println(nums[1]);
		System.out.println(nums);

	}

}

输出就是

就是一个乱码,(不用理解!! [代表的是 数组 I 是int的含义说明之前的是一个int的数组 @分隔符 28a418fc指的是哈希值)

所以这个不能满足我们的想法,所以需要改变,在之前写了 说把所有数字带到台面上,这个其实是循环的结构的特性(if条件语句是分类讨论,循环语句是把所有情况一个一个放在台面上 然后处理)

for循环

java 复制代码
public class l1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int [] nums = {10,20,30,40,50};
		nums[1]=25;
		System.out.println(nums[1]);
		for(int i = 0;i< nums.length;i++) {
			System.out.println("nums这个列表是 " + nums[i]);
		}

	}

}

那么这个就是for循环遍历了一遍列表

所以这个就打印出来了 数字 之后在题目中就可以应用了

推荐的是使用for-each增强方法(使用一个num来接住nums所有放在台面的数字 然后一一打印出来)

java 复制代码
public class l1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int [] nums = {10,20,30,40,50};
		nums[1]=25;
		int sum = 0;
		System.out.println(nums[1]);
		for(int i = 0;i< nums.length;i++) {
			System.out.println("nums这个列表是 " + nums[i]);
		}
		
		for(int num :nums) {
			System.out.println(num);
			sum+=num;
		}
		System.out.println(sum);

	}

}

同样我用来方法 写了sum 和的方法。

11.4在function中的使用

array(数组)本质上是一个数据类型,和int,double,string一样的,所以在方法中涉及到其他数据类型的,数组也有

11.4.1数组作为参数

java 复制代码
public class l1 {
	public static void sum(int [] nums) {
		int sum = 0;
		for(int num :nums) {
			System.out.println(num);
			sum+=num;
		}
		System.out.println(sum);
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int [] nums = {10,20,30,40,50};
		nums[1]=25;
		
		System.out.println(nums[1]);
		for(int i = 0;i< nums.length;i++) {
			System.out.println("nums这个列表是 " + nums[i]);
		}
		sum(nums);

	}

}

在sum()方法中带有参数,同样我使用了sum作为一个容器的方法,所以通过for-each增强来循环与加在一起,最后就是答案。

11.4.2数组作为返回值

int,double等等都能作为返回值,数组也行

java 复制代码
public class l1 {
	public static void sum(int [] nums) {
		int sum = 0;
		for(int num :nums) {
			System.out.println(num);
			sum+=num;
		}
		System.out.println(sum);
	}
	public static int[] getArray() {
	    int[] arr = {1, 2, 3, 4};
	    return arr;
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int [] nums = {10,20,30,40,50};
		nums[1]=25;
		
		System.out.println(nums[1]);
		for(int i = 0;i< nums.length;i++) {
			System.out.println("nums这个列表是 " + nums[i]);
		}
		sum(nums);

	}

}

也是成立的,但之后需要使用for增强语句把数组中的数字一个一个打印出来

11.5基本的例题

11.5.1求平均数

java 复制代码
public class l1 {
	public static void average(int [] nums) {
		int sum = 0;
		for(int num :nums) {
			System.out.println(num);
			sum+=num;
		}
		System.out.println(sum);
		System.out.println(sum/nums.length);
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int [] nums = {10,20,30,40,50};
		nums[1]=25;
		
		System.out.println(nums[1]);
		for(int i = 0;i< nums.length;i++) {
			System.out.println("nums这个列表是 " + nums[i]);
		}
		average(nums);

	}

}

在方法中直接可以写,for增强循环之后,sum/nums.length(这个就是nums中有多少数字)所以除出来就是平均数

11.5.2 求最大值

本质上使用车轮战术就行,max定义为最小值,然后一一去对比

java 复制代码
public class l1 {
	public static void average(int [] nums) {
		int sum = 0;
		for(int num :nums) {
			System.out.println(num);
			sum+=num;
		}
		System.out.println(sum);
		System.out.println(sum/nums.length);
	}
	
	public static void max(int [] nums) {
		int max = Integer.MIN_VALUE;
		for(int num : nums) {
			if(num>max) {
				max = num;
			}
		}
		System.out.println(max);
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int [] nums = {10,20,30,40,50};
		nums[1]=25;
		
		System.out.println(nums[1]);
		for(int i = 0;i< nums.length;i++) {
			System.out.println("nums这个列表是 " + nums[i]);
		}
		average(nums);
		max(nums);

	}

}

结果就是

相关推荐
wxh_无香花自开2 小时前
chromedp 笔记
笔记·golang·网络爬虫·chromedp
kfepiza2 小时前
JavaScript将String转为base64 笔记250802
开发语言·javascript·笔记
Warren982 小时前
Vue2博客项目笔记(第一天)
java·开发语言·javascript·vue.js·windows·笔记·ecmascript
stillaliveQEJ4 小时前
【JavaEE】多线程(一)
java·java-ee
present--014 小时前
【JAVA EE初阶】多线程(下)
java·java-ee
Chan165 小时前
【智能协同云图库】第七期:基于AI调用阿里云百炼大模型,实现AI图片编辑功能
java·人工智能·spring boot·后端·spring·ai·ai作画
sakabu6 小时前
cJSON库应用
c语言·笔记·学习
hrrrrb7 小时前
【Spring Boot 快速入门】六、配置文件
java·spring boot·intellij-idea
Asu52027 小时前
思途Mybatis学习 0805
java·spring boot·学习·mybatis