数组的初始化及其基本属性

数组的初始化及其基本属性数组的初始化及其基本属性1.数组:属于引用类型,就是一个存放同类型变量数据的容器。(容器概念以后再补)2.数组初始化第一种:数据类型[]数组名=new数据类型[数据长度];(动态初始

大家好,又见面了,我是你们的朋友全栈君。

数组的初始化及其基本属性

1. 数组:属于引用类型,就是一个存放同类型变量数据的容器。(容器概念以后再补)

2. 数组初始化

第一种:数据类型[] 数组名 = new 数据类型[数据长度];(动态初始化过程)
int[] arr = new int [5];
第二种:数据类型 数组名[] = {数据1,数据2,数据3……};(静态初始化过程)
int arr[] = {1,2,3,4,5};
动态初始化:我们自己指定了数组长度,系统会自动开辟相应的内存空间,并且给所有位置分配一个默认值。
静态初始化:我们在初始化开始就给定了数组值,系统会根据值的数量,开辟内存空,所以不需要我们指定数组长度。
静态对象还可以用在匿名对象上(参考面向对象的匿名对象)

例:String str = Arrays.toString(new int[] {1,2,3,4,5})(这里的数组没有名字,是临时定义的)

3.访问数组的元素

数组名[下标/索引]引用存储数据的地址(实际上就是使用了指针,而Java中没有指针,故使用引用对象)。

例:int arr[] ={1,2,3,4,5};
 	System.out.println(Arrays.toString(arr));
输出:
	[1,2,3,4,5]
	int arr1[]=arr; //这里是把数组arr引用对象的地址给了arr1,所以这俩数组实际上都是一个东西,
					//对其中一个修改,两边引用的数组都会发生改变。
	arr1[0]=5;
	System.out.println(Arrays.toString(arr));
	System.out.println(Arrays.toString(arr1));
输出:
	[5,2,3,4,5]
	[5,2,3,4,5]

当引用对象赋值给其他对象时,修改的是地址上的数据,所以只要引用这个对象的值都会发生变化。
这里得说说引用传递,值传递。
引用传递:引用传递最终操作的是引用指向JVM虚拟机堆里面存储的数据,所有引用这组数据的引用对象都会受到影响。
值传递:直接对数据进行操作,改变的只是装着这个值的单个变量。

4.数组的基本操作

首先建立一个数组

package com.study.monday;

import java.util.Arrays;
import java.util.Scanner;

public class ArrayPractice2 {

	public static void main(String[] args) {
		/*
		 * 有一个数列:8,4,2,1,23,344,12
		 * 求出最大值 
		 * 数组查找
		 * 数组排序
		 */
		int[] arr= {8,4,2,1,23,344,12};
		System.out.println("最大值为:" + getArrMax(arr));		//获取最大值
		ascOrder(arr);		//升序排列数组
		descOrder(arr);		//降序排列数组
		lookupArr(arr);		//查找数组中是否存在相同的数值
	}

遍历数组的用法,主要是利用for循环来对数组每一个数进行访问使用。

	/*
	 * 方法名:getArrMax
	 * 功能:求出数组的最大值max
	 * 返回值类型:int
	 */
	public static int getArrMax(int arr3[]) {
		int max = arr3[0];
		for (int i = 1; i < arr3.length; i++) {
			max = max > arr3[i] ? max : arr3[i];
		}
		return max;
	}

对数组的排序(冒泡法),检索。(排序、查找单独写一篇详细记录)

	/*
	 * 方法名:lookupArr
	 * 功能:键盘输入一个值,查看数组内是否有相同的值
	 * 返回值类型:void
	 */
	public static void lookupArr(int arr5[]) {
		Scanner input = new Scanner(System.in);
		int a = input.nextInt();
		for (int i = 0; i < arr5.length; i++) {
			if (a == arr5[i]) {
				System.out.println("有!!在a[" + i + "]");
			}
		}
	}
	/*
	 * 方法名:ascOrder
	 * 功能:对数组进行升序排列,并且输出
	 * 返回值类型:void
	 */
	public static void ascOrder(int arr6[]) {
		int a;
		for (int i = 0; i < arr6.length; i++) {
			for (int j = 0; j < arr6.length -1-i; j++) {
				if (arr6[j] > arr6[j + 1]) {
					a = arr6[j];
					arr6[j] = arr6[j + 1];
				    arr6[j + 1] = a;
				}
			}
		}
		System.out.print("升序排列为:");
		printArray(arr6);
	}


这些就是上课老师讲的,我自己理解的,最后汇总出来的。有些东西是老师的,有些是我自己的,我只是把自己认为比较重要的写出来了。关于最后的数组排序,查询,还有上面提到过的程序效率问题,决定单独再写一篇来自己总结一下,八大排序,二分法查询,目前自己已知的程序效率算法。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/154798.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • mybatis 设置jdbcType与JavaType和JdbcType对应表

    mybatis 设置jdbcType与JavaType和JdbcType对应表使用mybatis对mysql数据库进行增删改查时,如果传递的参数存在空值,那么会报空值异常: select*fromuserwhere1=1and &lt;iftest="params.userCode!=nullandparams.userCode.trim()!=”"&gt;anduserCode=#{params.userCode}…

    2022年10月20日
  • IsoAlgo3d – A PCF 3D Viewer for Desktop, Tablet and Smart phone

    IsoAlgo3d – A PCF 3D Viewer for Desktop, Tablet and Smart phone

  • phpstorm激活码2021.5【注册码】[通俗易懂]

    phpstorm激活码2021.5【注册码】,https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

  • Java面试题整理,2021年腾讯Java高级面试题及答案[通俗易懂]

    Java面试题整理,2021年腾讯Java高级面试题及答案[通俗易懂]正文如果你参加过一些大厂面试,肯定会遇到一些开放性的问题:1、写一段程序,让其运行时的表现为触发了5次YoungGC、3次FullGC、然后3次YoungGC;2、如果一个Java进程突然消失了,你会怎么去排查这种问题?3、给了一段Spring加载Bean的代码片段,阐述一下具体的执行流程?是不是看上去很难,是不是和自己准备的“题库”中的问题不一样?不知道从何处下手?如果你有这种感觉,那么说明你的技术还需要继续修炼。面对如此多的技术面试,怎么样才能说自己的技术已经过关了呢?只有

  • Lamda表达式详解

    Lamda表达式详解Lamda表达式1、λ希腊字母表中排序第十一位的字母,英语名称为Lamda2、避免匿名内部类定义过多3、可以让你的代码看起来很简洁4、去掉了一堆没有意义的代码,留下核心的逻辑3、其实质属于函数式编程的概念(params)->expression[表达式](params)->statement[语句](params)->{statements}a->System.out.println(“ilikelamda–>”+a)newTh

  • java soa是什么_如何通俗易懂地解释什么是SOA?

    java soa是什么_如何通俗易懂地解释什么是SOA?对于SOA,感觉这个概念性的东西没那么容易理解,看了各位大神的解释感觉很多都说的很抽象,所以想尝试用自己的语言解释下,仅做参考。SOA粗暴理解:把系统按照实际业务,拆分成刚刚好大小的、合适的、独立部署的模块,每个模块之间相互独立。比如现我有一个数据库,一个JavaWeb(或者PHP等)的网站客户端,一个安卓app客户端,一个IOS客户端。现在我要从这个数据库中获取注册用户列表,如果不用SOA的设计…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号