java基础(数组的操作)

Java从入门到精通 第六章 数组 Java从入门到精通 第六章 数组 数组是具有相同数据类型的一组数据的集合,因此数组中的每个元素具有相同的数据类型。在Java中虽然基本数据类型不是对象,但由基本数据类型组成的数组确是对象。 一、一维数组的创建及使用 1)创建一维数组 数组作为对象允许使用new关键字进行内存分配。在使用数组之前,必须首先定义数组变量所属的类型。 1.先声明,再用new运算符进行内存分配 声明一维数组有下列两种方式: 符号"[ ]“指明该变量是一个数组类型变量。单个”[ ]"表示要创建的数组是一个一维数组。 数组元素类型 数 阅读详情

java基础(数组的操作)

第一部分

1、选择排序

1.1、选择排序主要的针对的是数组的排序,因为数组有角标,可以通过角标方便对数组进行操作;

1.2、选择排序主要的思想是:

根据数组的角标来一次进行比较,如:用0角标的元素分别和1、2.......角标的元素进行比较,元素最小的值进行换位操作后放在0角标的位置上,那么现在在0角标的元素就不需要再参加比较了,然后就是用1角标位的元素和其他角标的元素进行比较,以此类推最左边的就是最小值,最右边就是最大值;

1.3、选择排序特点:第一个元素和其他的元素进行比较,然后第二个元素和后面的元素依次进行比较,但是每次比较的次数逐渐较少,这是就是大圈套小圈的原理,也就是for语句的嵌套循环;
选择排序方法的返回值类型是void,因为它们操作的都是同一个数组,只不过是数组的顺序发生了变化,但是函数操作的还是同一个数组;自始至终在堆内存中就是一个实体,只不过是多个引用在同时操作一个数组;
1.4、用图形表示:
1.5、代码体现
class ArrayTest 
{
	public static void selectSort(int[] arr) 
	{
//		外循环控制的是比较的次数
		for (int x=0; x<arr.length-1; x++)
		{
//			内循环将第一个元素和其他的元素挨个进行比较
//			x+1保证的是前后两个元素进行的比较
			for (int y=x+1; y<arr.length; y++)
			{
//				用外循环的第一个元素和内循环的每个元素进行比较				
				if(arr[x]>arr[y])
				{
					int temp = arr[x];
					arr[x] = arr[y];
					arr[y] = temp;
				}
			}
		}
	}
	public static void main(String[] args)
	{
		int[] arr ={5,1,6,4,2,8,9};
//		排序前
		printArr(arr);
//		排序
		selectSort(arr);
//		排序后
		printArr(arr);
		
	}
//	把打印语句封装起来
	public static void printArr(int[] arr)
	{
		System.out.print("[");
		for (int x=0; x<arr.length; x++)
		{
			if(x!=arr.length-1)
				System.out.print(arr[x]+",");
			else
				System.out.println("]");
		}
	}
}

1.6、运行的结果

1.7、选择排序的特点:内循环结束一次,最值出现在头角标的位置上;

1.8、总结

1.8.1、选择排序的特点:当拍完顺序以后最值要么在最右边,要么在最左边;

1.8.2、选择排序用到了大圈套小圈的原理,也就是for循环嵌套;

1.8.3、注意在内循环和外循环的初始化值和判断条件;

1.8.4、当一个类里面出现多个功能时时,要将这些功能进行封装,提高了代码的复用性;

2、冒泡排序

2.1、冒泡排序的原理:相邻的两个元素进行比较,如果符合条件的话,那么就交换位置;每次都是相邻的两个元素进行比较,但是每次比较过后,下一次比较就少了一个元素参与比较,
2.2、用图形表示:
1.3、代码体现
class BubbleSort 
{	public static void main(String[] args) 
	{
		int[] arr ={8,212444,667,43,6443,1667,2323};
		printArray(arr);
		//冒泡排序
		bubbleSort(arr);
		printArray(arr);
	}
	public static void bubbleSort(int[] arr)
	{
		for (int x=0; x<arr.length-1; x++)
		{
//			-x:是让每次循环的元素一次减少,-1是防止内循环的角标越界。
			for (int y=0; y<arr.length-x-1; y++)
			{
//				相邻的两个元素进行比较
				if(arr[y]>arr[y+1])
				{
					int temp = arr[y];
					arr[y] = arr[y+1];
					arr[y+1] = temp;
				}
			}
		}
	}
	//对排好顺序的数据进行打印。
	public static void printArray(int[] arr)//返回值类型是void的,不要return
	{
		System.out.print("[");
		for (int x=0; x<arr.length; x++)
		{
			if(x!=arr.length-1)
			{
				System.out.print(arr[x]+",");
			}
			else
				System.out.println(arr[x]+"]");
		}
	}

}

1.4、运行后的结果

1.5、总结

1.5.1、冒泡排序的思想是相邻两个元素进行比较,用到的嵌套循环的思想,在比较完第一圈以后,最值出现在了最右边,在排序完了以后,最大值和最小值出现在了左右两边;

1.5.2、如果符合条件的话,那么就要交换位置;

1.5.3、注意在循环的初始化值和循环的条件;

1.5.4、如果是按照右大到小的顺序进行排序的话,那么就要改变交换元素的条件;

3、排序的总结

3.1、排序算法:冒泡排序,选择排序,快速排序,插入排序,希尔排序;

3.2、在以上的这些排序里面,它们中效率较高的是冒泡排序,效率最高的是希尔排序;

3.3、这些排序的比较方式差不多,但是它们的比较方式不同,正是由于这个原因,它们的比较效率就不同

第二部分

1、获取最大值

1.1、思路:
  • 获取最值需要进行比较,每一次比较都会有一个较大的值,因为该值不确定通过临时一个变量进行存储;
  • 让数组中的每一个元素都和这个变量中的值进行比较,如果大于了变量中的值,就用该变量记录较大值;
  • 当所有元素都比较完成,那么该变量中的存储的就是数组中的最大值了;
1.2、步骤:
  • 定义变量,初始化为数组中任意一个元素即可;
  • 通过循环语句对数组进行遍历;
  • 在遍历过程中定义判断条件,如果遍历到的元素比变量中的元素大,那么就复制给该变量;
1.3、代码展现
/*
获取数组中的最值。
*/

class  ArrayTest
{
	public static void main(String[] args) 
	{
		int[] arr ={4,32,56,87,86,53};
		System.out.println(getMax(arr));
	}


	public static int getMax(int[] arr)
	{
		int max =arr[0];//定义一个变量,初始化为数组中的一个元素。
		for(int x=1;x<arr.length;x++)//对数组进行遍历
		{
			if(arr[x]>max)//如果数组里面的值大于变量的值。
				max=arr[x];//那么就用变量记住这个值。
		}
		return max;//返回一个值。
	}
}

1.4、运行结果

2、获取最小值

2.1代码体现

/*
获取数组中的最小值。
*/

class  ArrayTest
{
	public static void main(String[] args) 
	{
		int[] arr ={4,32,56,87,86,53};
		System.out.println(getMin(arr));
	}


	public static int getMin(int[] arr)
	{
		int min =arr[0];//定义一个变量,初始化为数组中的一个元素。
		for(int x=1;x<arr.length;x++)//对数组进行遍历
		{
			if(arr[x]<min)//如果数组里面的值小变量的值。
				min=arr[x];//那么就用变量记住这个值。
		}
		return min;//返回一个值。
	}
}
 

2.2、运行结果

第三部分

1、一般的查找

1.1、一般查找的过程是在遍历的过程中找到元素的位置,因此在函数的返回值类型是int类型,返回来的是元素所在位置的角标值,但是函数的传入的参数分别是需要折半的数组和需要查找的元素的位置;
1.2、用代码实现
</pre><pre name="code" class="java">class  ArrayTest4
{
	public static void main(String[] args) 
	{
		int[] arr ={5,2,67,97,54,224};
		int index = getIndex(arr,54);
//
		System.out.println("index="+index);//查找的是角标,如果存在就返回角标,不存在就返回-1;
	
	}

	//定于功能,获取key第一次出现在数组中的位置,
	public static int getIndex(int[] arr,int key)
	{
		for(int x=0;x<arr.length;x++)
		{
			if(arr[x]==key)
				return x;
		}
//		如果没有找到该元素,那么就用-1来代表
		return -1;
	}

}

1.3、运行的结果

2、折半查找

2.1、折半查找的思想:我想在0~100之间需要一个数,那么这时就将0~100折半查找,就是50,这样的查找就大大的缩小了范围,也就是提高了效率,但是折半查找有一个前提就是这个数组必须是有序的数组;
2.2、折半的步骤:要在一个有序的数组中需要查找一个元素的角标,折半查找,如果发现这个需要找的元素的值比折半后查找的值要大的话,那么左边的就要移到中间角标+1的位置,如果发现要找的元素比中间的元素要小的话,那么右边大的那么就要移到中间角标-1的位置,继续查找;
2.3、代码体现
class  ArrayTest4
{
	public static void main(String[] args) 
	{
//		int[] arr ={5,2,67,97,54,224};
//		int index = getIndex(arr,54);
////
//		System.out.println("index="+index);//查找的是角标,如果存在就返回角标,不存在就返回-1;
	
		int[] arr = {4,7,89,456,7886,43335};
		int index = halfSearch(arr,43335);
//		int index = index_2(arr,456);
		System.out.println("index="+index);//查找的是角标,如果存在就返回角标,不存在就返回-1;
	
	}
	public static int halfSearch(int[] arr,int key)
	{
		int min,max,mid;
		min =0;
		max =arr.length-1;
		mid =(min+max)/2;
		
		//用的条件是中间值不等于key来完成的。
		while(arr[mid]!=key)//这边用的是中间角标的元素和指定的值进行比较,
		{
			if(key>arr[mid])
				min = mid+1;
			else if(key<arr[mid])//是元素和指定的值进行比较。
				max = mid-1;
			
			//做了两次判断,
			if(min>max)
				return -1;
			mid =(max+min)/2;//循环进行折半。
		}
		return mid;//返回一个中间值。
	}
}

2.3、运行结果

3、查找总结

1、一般的查找是需要查找的元素和数组中的元素依次进行比较,如果元素相同的话,那么就返回该元素的角标值,如果没有该元素的话,那么就返回-1;
2、折半查找:可以大大的提高了查找的效率;进行循环折半查找,如果找到了,就返回该元素的角标值,如果没有找到,那么就返回-1;
3、面试题:如果想要将一个元素插入到一个有序数组中而且还有保证元素的有序,思路:通过折半的形式,查找角标在数组中的位置,如果存在,那么就存在的位置插入即可,如果不存在,那么就返回最小角标值,这个值就是要插入的位置。
Java零基础-数组:数组的遍历和操作 数组是一种常见的数据结构,它能够同时存储多个相同类型的变量。在Java开发中,数组是一种重要的数据结构,对于初学者来说,掌握好数组的遍历和操作是很有必要的。本文将从基础开始介绍Java中数组的遍历和操作的方法和技巧。本文将介绍Java中数组的遍历和操作的基本概念和常用方法。首先,我们将简单介绍数组的定义和初始化方式。然后,我们将详细解析数组的遍历和操作的代码示例,包括如何遍历数组以及如何对数组进行常见的操作,例如查找最大值、最小值、求和等等。最后,我们将介绍数组的应用场景案例,并进行优缺点的分析。 阅读详情

相关推荐

Java零基础数组篇[2] - 数组的基本操作

  今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。  我是一名后端开发爱好者,工作日常接触到最多的就是Java语言啦,所以我都尽量抽业余时间把自己所学到所会的,通过文章的形式进行输出,希望以这种方式帮助到更多的初学者或者想入门的小伙伴们,同时也能对自己的技术进行沉淀,加以复盘,查缺补漏。  在之前的文章中,我们对Java数组的学习进行了系统的规划,将数组相关的学习内容分为几个主要部分:数组的基础概念、数组的基本操作、数组

喵手的博客 1213

Java中数组的基本操作

二维数组赋初值的时候,数组长度可以不一致,int[3][],表示存3个1维数组,但是每个1维数组长度不一定相等。二维数组中,数组的长度代表数组中一维数组的个数,第二个数则代表一维数组中存放元素的个数。1、声明一个数组,需要在声明时指定长度,并且通过new来完成数组对象创建操作。删,数组长度由于在初始化声明时已经固定了,所以没有办法删除数组中的元素。2、数组不能直接打印输出,直接打印输出的结果是数组在内存中的地址。4、 输出数组中的单个元素,可以使用下标,注意下标从0开始。改,更新数组元素的值。

梦里有阳光 3303

携程登录风控逆向踩坑实录:从滑块到点选验证码,我是如何一步步拿到phantom-token的

本文详细解析了携程登录风控系统的逆向过程,从滑块验证码到点选验证码的破解,再到设备指纹生成和加密协议逆向,最终成功获取phantom-token。文章提供了关键代码示例和实战技巧,帮助开发者理解并绕过复杂的风控机制。

weixin_28049429的博客 969

Java数组常用操作

 1.数组长度  2.数组填充  3.数组复制  4.数组比较  5.数组排序  6.在数组中搜索指定元素  7.把数组转换成字符串 数组的常用操作包括数组的充、复制、比较、排序等。Java提供了相应对数组的操作的系统函数(方法),利用系统函数(方法)可以对数组进行各种操作。 1、数组长度 数组长度指的是数组的大小,也就是数组包含元素的个数。如果想获得数组的长度,可以用其本身的 length 属性获得。使用方法就是在数组名后加 “.length”。代码如下: public class Main

Lilip_的博客 9176

西安交通大学SQ轴承数据集(文末附数据)

西安交通大学SQ轴承数据集

qq_43271683的博客 1万+

信创改造实战:SpringBoot项目迁移到宝兰德BES 9.5.5的完整避坑指南(附依赖配置)

本文详细介绍了将SpringBoot项目迁移到宝兰德BES 9.5.5中间件的完整流程,包括环境准备、依赖调整、Web.xml版本适配、部署配置优化及常见问题解决方案。特别针对信创改造需求,提供了排除Tomcat依赖、处理BES专用starter等实用技巧,帮助开发者顺利完成国产中间件迁移。

weixin_30825581的博客 1095

java数组

一:数组遍历 1.for 以及for each 2.遍历数组可以使用for循环,for循环可以访问数组索引,for each循环直接迭代每个数组元素,但无法获取索引; 使用Arrays.toString()可以快速获取数组内容。 二:数组排序 1.冒泡排序 import java.util.Arrays; public class Main { public static v...

小聂敲代码 434

【AI智能体】QClaw 对接GitHub处理自动化任务实战操作详解

QClaw 对接GitHub处理自动化任务实战操作详解

congge 4867

掌握Java中常用的数组操作方法

本文将介绍Java中常用的数组操作方法,通过详细的示例和解释,帮助读者全面理解和掌握这些方法,并提升在数组处理方面的编程能力。

沉淀所学,分享所思,让热爱与成长同行。商务记录AI实战经验,助力开发者快速成长。 热爱AI,希望做出有影响力的技术成果。 技术点亮生活,分享连接价值与机会。 专注AI落地实战,陪你走好技术每一步。 1万+

重回童年的经典系列☀️|【炸弹人小游戏】制作过程+解析 | 收藏起来跟曾经的小伙伴一起梦回童年!

Unity,小游戏开发。 本篇文章对童年经典小游戏——炸弹超人进行制作和解析。不知道有没有勾起你童年的回忆呢!快来和我一起制作这个童年经典的小游戏吧! 敬请品尝!

努力前行,总会成为自己心中的那道光 13万+

微信小程序 - 完美解决“code“:“NO_AUTH“,“message“:“商户号该产品权限未开通,请前往商户平台>产品中心检查后重试“(微信小程序报错问题排查解决)

微信小程序NO_AUTH: 商户号该产品权限未开通,请前往商户平台>产品中心检查后重试?微信小程序提示商户号该产品权限未开通,请前往商户平台>产品中心检查后重试,微信小程序"code":"NO_AUTH"错误码怎么解决,报错信息如下:httpResponseBody[{"code":"NO_AUTH","message":"商户号该产品权限未开通,请前往商户平台>产品中心检查后重试"}],微信小程序支付问题,如何解决这个问题,虚拟支付商户号,虚拟支付商户号里面没有产品支付的页面,排查商户号没问题,商户号配置

🏆 前端领域优质创作者 4444

深入理解Java数组:基础、操作与优化

在这篇博客中,我们将深入探讨Java数组的基本概念、操作和优化。我们将从基础开始,逐步了解数组的创建、初始化、访问和修改,以及如何处理数组的边界问题。最后,我们将讨论一些优化技巧,以提高数组操作的性能。

m0_74332313的博客 1374

Explorer.exe系统错误,电脑重启后刚开始一段时间正常,过一会桌面任务栏就卡死,可以打开任务管理器

联想E14Win10专业版。

本博客,博文仅代表个人操作经验,不能完全解决你的问题,仅供参考,佛系回复。 8048

深入理解Java基础:从输入到数组操作的全面解析

在Java中,数组是一种用于存储多个相同类型数据的容器。创建数组并遍历数组是编程中的常见操作。以下将详细介绍如何创建数组,以及如何使用for循环和for-each循环(也称为增强型for循环)来遍历数组。//简单的定义的同时初始化//完整的定义的同时初始化//定义数组长度但不初始化//int array4[] = {1,2,3,4,5,6} 不推荐//先定义//再说明长度特别的,一旦数组完成了定义,就不能再对数组整体初始化,只能一个一个赋值。与一维数组类似//甚至可以不写明列数。

2402_88195056的博客 907

地平线旭日X3 安装xfce桌面+VNC查看USB摄像头

VNC是Virtual Network Computing的缩写,它是一种使用RFB(Remote Frame Buffer)协议的用于控制远程电脑的图形桌面分享系统。xfce桌面相比于GNOME桌面更加轻量,占用的资源更少,在没有GPU的设备上也可以运行(旭日的Desktop版本从外观上好像就是xfce桌面,具体没有尝试)。可以使用专用的VNC客户端连接到开发板,例如vnc viewer。板子默认带有openssh-server,因此,WiFi热点连接成功后,就可以使用ssh登录开发板了。

bingdund的博客 509

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Java语言基础——数组操作

数组操作数组赋值——杨辉三角数组的复制数组的反转线性查找二分法查找快速排序——待补充 数组赋值——杨辉三角 给数组元素赋值 // 多维数组的使用1:使用二维数组打印一个10行杨辉三角 int[][] arr= new int[10][]; //给数组的元素赋值 for(int i = 0;i<arr.length;i++) { arr[i] = new int[i+1]; //给首末元素赋值 arr[i][0]

ou_yang_mu_ling的博客 320

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Java 基础程序结构详解:从输入输出到数组操作

本文详细介绍了 Java 基础程序结构的核心内容,包括输入输出操作、控制流程语句、大数值处理和数组操作等。这些基础知识是 Java 编程的基石,掌握它们对于进行更复杂的 Java 开发至关重要。在实际开发中,这些基础概念会被频繁使用,因此需要深入理解并熟练掌握。随着学习的深入,你会发现这些基础知识在面向对象编程、集合框架、多线程等高级特性中都有广泛的应用。希望本文能帮助你快速掌握 Java 基础程序结构,为后续的学习打下坚实的基础。

asad6的博客 842

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Java基础:数组的操作之遍历、反转

数组的操作获取数组长度数组的遍历数组的反转 获取数组长度 格式:数组名称.length 得到一个int值,表示数组的长度,也即数组中元素的个数 int len=array.length; // 获得了array的长度,赋值给变量len 数组的遍历 写到这里还是夸一下IDEA用.fori写for循环真舒服 public class Traverse { public static void main(String[] args) { int[] array = {9, 9, 8,

Yqf745873310的博客 274

java web定义数组_Java基础之数组-->>数组常用操作

3.2一维数组3.2.1声明数组数组类型[] 数组名称;int[] username;或者数组类型 数组名称[];int username[];3.2.2初始化一维数组一维数组初始化有两种格式,一种是先声明再赋值,一种是直接声明并赋值int [] array = new int[5]; //创建一个整型数组对象,长度为5;int [] array = {1,2,3,4,5}; ...

weixin_39633452的博客 928

学习Java数组操作:从基础到高级技巧详解

数组是Java中非常基础但也是非常强大的数据结构,熟练掌握数组的操作对于后续学习其他复杂的数据结构(如链表、栈、队列)具有重要意义。

xiaozhi_wei的博客 794

java基础05数组中的常见操作函数

class Demo1 {      /*       定义一个获取int数组中最大值的功能      1:确定结果;返回值类型为int   2;未知内容,要获取哪个数组中的最大值不确定,数组就是未知内容,需要定义成参数。   思路:1:定义一个变量,记录住数组中比较大的元素,因为该元素是不确定的,该变量初始化成任意一个元素即可,          2;遍历数组,让数组中

li1367356的博客 1078

Java数组操作:基础与进阶指南

通过本文,我们详细介绍了Java数组的基础操作和进阶技巧,包括数组的声明、初始化、访问、遍历、排序和复制等常用操作。掌握这些技能将帮助你更有效地处理和管理数组数据,提升Java编程的效率和质量。大家好,我是微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将深入探讨Java数组的基础操作和进阶技巧,帮助你更好地理解和利用Java中的数组功能。数组在Java中是对象,它们存储在堆内存中,并且具有固定的长度,一旦创建后长度不能改变。属性可以获取数组的长度。方法对数组进行排序。

技术研究中心 594

Java基础-数组操作

Java基础Java基础-数组操作原创诗词遍历数组数组排序冒泡排序法交换变量使用Arrays.sort对数组排序修改了数组本身总结多维数组二维数组三维数组代码演习总结命令行参数总结 Java基础-数组操作 原创诗词 《送别》 作者:沙家大少 大风难进深院墙,肢体难胜夏日署。一日嘈嚷多少事?静坐静想浑不知! 多日相识算相知,心愿不要就此辞。世事本无月圆日,鸾飞蝶舞是梦时。 恨风恨雨恨秋月,最深却数永难见。愿君日后能安好,他日再见莫不识! 如果这篇文章对您有帮助,或是觉得小弟诗词天赋还可以,还请求点个赞! 知

沙家大少 1214

数组基础操作的JAVA实现

数组:(引用类型的变量) 定义语法:int[] a; int a[]; 赋值:int[] a={1,2,3,4,5}; Int[] a=new int[5]; //默认值 //0的类型含义 如果元素没有初始化,元素的值就是元素类型默认值 Int[] a=new int []{1,2,3,4,5}; 四种变量: 形参 (栈) int [] a=null; 局部变量 ...

qq_44828749的博客 253

java怎么数组缩容_JavaSE学习(五):数组及其基础操作

第一节数组1.1数组定义将具有相同数据类型的数据集中再一个容器中,这个容器我们称之为数组。数组也是引用数据类型中的一种。1.2 数组的声明的方式1、方式一:数据类型[] 数组名 = new 数据类型[数组的长度];2、方式二:数据类型[] 数组名 = {数值1,数值2...};3、方式三:数据类型[] 数组名 = new 数据类型[] {数值1,数值2....};1.3 Java中的三种注释方式...

weixin_36234970的博客 862
上一篇: java概述与基础知识
下一篇: Java-面向对象(1)
fyldragonfyl
博客等级 码龄12年 9粉丝 68原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值