文章目录

  • 一、数组定义格式
    • 1.一维数组
    • 2.二维数组
  • 二、数组初始化
    • 1.数组的动态初始化
    • 2.数组的静态初始化
  • 三、数组元素访问
  • 四、内存分配
  • 五、数组的遍历
  • 六、排序
    • 1.冒泡排序
    • 2.插入排序
    • 3.选择排序
  • 七、方法
    • 1.带返回值方法定义和调用
    • 2.重载
    • 3.形参和实参

一、数组定义格式

数组就是存储数据长度固定的容器,存储多个数据的数据类型要一致。

1.一维数组

格式:

//第一种: 数据类型[] 数组名int[] a;
/*定义了一个int型的数组,数组名是a*///第二种:数据类型 数组名[]int a[];

2.二维数组

在Java中二维数组被看作为数组的数组,即二维数组为一个特殊的一维数组,其每个元素又是一个一维数组。

格式:

//第一种:数据类型  数组名[][]
int a[][];//第二种:数据类型[][] 数组名
int[][] a;

二、数组初始化

Java中的数组必须先初始化然后才能使用,所谓的初始化就是为数组中的数组元素分配内存空间,并为每个数组元素赋值,数组初始化的方式有动态初始化和静态初始化。

1.数组的动态初始化

初始化时只指定数组长度,由系统为数组分配初始值。

1、一维数组的动态初始化的格式:数据类型 [ ] 变量名 = new 数据类型[数组长度];
范例:

       int [ ]   a   =  new  int[3];

等号左边:

  • int:数组的数据类型

  • [ ]:代表这是一个数组

  • arr:代表数组的名称

等号右边:

  • new:为数组开辟内存空间

  • int:数组的数据类型

  • [ ]:代表这是一个数组

  • 3:代表数组的长度

2、二维数组的初始化,和一维数组一样,可以通过三种方式来指定元素的初值。

int[][] a=new int[4][4]

上面代码代表一个四行四列的二维数组。

:定义一个4行4列的二维数组,将对角线的值赋为1,其他为0

public class for4 {public static void main(String[] args) {int[][] a = new int[4][4];for (int i = 0; i < a.length; i++) {for (int j = 0; j < a[i].length; i++) {if (j == i) {a[j] = 1;}else{a[j]= 0;System.out.println(a[j] + " ");}}System.out.println("\n");}}
}

2.数组的静态初始化

初始化时指定每个数组元素的初始值,由系统决定数组长度。

完整格式:数据类型[] 数组名 = new 数据类型[]{元素…}
简化格式:数据类型[] 数组名 = {元素…}
int[] a={1,4,6,5};

数组的两种初始化格式的区别
动态初始化:只给定数组长度,由系统分配默认初始化值
静态初始化:创建数组时,直接将元素确定

三、数组元素访问

1、数组变量访问格式是:数组名

访问数组内元素的格式是:数组名[索引]

索引是数组中数据的编号方式用于访问数组中的数据使用,数组名[索引]等同于变量名,是一种特殊的变量名
特征①:索引从0开始
特征②:索引是连续的
特征③:索引逐一增加,每次加1

2、获取二维数组中的元素

当需要获取二维数组中元素的值时,可以使用下标来获取。

public class sz {public static void main(String[] args) {int[][] a= {{34,56,34,1},{3,8,7,1},{1,5,4,3},{7,9,5,3}};System.out.println("第一行第三列的值为:"+a[0][2]);}
}
输出结果为:第一行第三列的值为:34

由于数组下标起始值为0,因此获取指定位置的元素时记得为下标减1 。

除了获取单个的元素,还可以通过控制下标来实现单独获取某一行或某一列中所有元素的元素,获取指定行的元素时,需要将行数固定,然后只遍历该行中全部列即可。获取指定列元素与获取指定行的元素相似,保持列不变,遍历每一行的该列即可。

四、内存分配

Java 程序在运行时,需要在内存中分配空间。为了提高运算效率,就对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式。内存是计算机中的重要原件,临时存储区域,作用是运行程序。

​我们编写的程序是存放在硬盘中的,在硬盘中的程序是不会运行的,必须放进内存中才能运行,运行完毕后会清空内存。
Java虚拟机要运行程序,必须要对内存进行空间的分配和管理。

目前我们只需要记住两个内存,分别是:栈内存和堆内存
1、堆内存:栈内存:存储局部变量定义在方法中的变量,例如:a
使用完毕,立即消失

2、堆内存:存储new出来的内容(实体,对象)数组在初始化时,会为存储空间添加默认值,以下是不同数据类型的默认值:

整数:0
浮点数:0.0
布尔:false
字符:空字符
引用数据类型:null

每一个new出来的东西都有一个地址值使用完毕,会在垃圾回收器空闲时被回收

五、数组的遍历

1、一维数组的遍历

数组遍历就是将数组中的每个元素分别获取出来,就是遍历。遍历也是数组操作中的基石。

public class sz {public static void main(String[] args) {int[] a={1,2,3,4};for(int i=0;i<a.length;i++){//a.length:获取数组的长度System.out.println(a[i]+",");}}
}
遍历结果为:1,2,3,4

数组的索引是 0 到 lenght-1 ,可以作为循环的条件出现。
遍历数组时要注意循环次数是否在索引范围内,否则会发生索引越界,所谓的索引越界就是访问了数组中不存在的索引对应的元素,造成索引越界问题。

:找出数组中的最小值

public class sz {public static void main(String[] args) {//定义数组int[] a={45,67,32,46,43};int min= a[0];//遍历数组,与数组中剩余的数据逐个比对,每次比对将最大值保存到变量中for(int i=0;i<a.length;i++) {if (a[i] < min) {min = a[i];}}System.out.println(min);}
}
输出结果:32

2、二维数组的遍历

在二维数组中,直接使用 length 属性获取的是数组的行数,在指定的索引后加上 length(如 a[0].length)表示的是该行拥有多少个元素,即列数。

如果要获取二维数组中的全部元素,最简单、最常用的办法就是使用 for 语句。在一维数组全部输出时,我们使用一层 for 循环,而二维数组要想全部输出,则使用嵌套 for 循环(2 层 for 循环)。

public class sz {public static void main(String[] args) {int[][] a= {{34,56,34,1},{3,8,7,1},{1,5,4,3},{7,9,5,3}};for(int i=0;i<a.length;i++){for(int j=0;j<a[i].length;j++){System.out.println("a["+i+"]"+"["+j+"]="+a[i][j]);}}}
}

在遍历二维数组时,第一个 for 循环语句表示以行进行循环,第二个 for 循环语句表示以列进行循环。

例:键盘录入行数打印杨辉三角形

import java.util.Scanner;
public class for3 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("请输入三角形的行数:");int a=sc.nextInt();int[][] arr = new int[a][a];for (int i = 0; i < a; i++) {for (int j = 0; j <= i; j++) {if (j == 0 || j == i) {arr[i][j] = 1;} else {arr[i][j] = arr[i - 1][j] + arr[i - 1][j - 1];}System.out.print(arr[i][j] + " \t");}System.out.println();}}}输出结果为:
请输入三角形的行数:
41
1   1
1   2   1
1   3   3   1

六、排序

1.冒泡排序

两两相比较,将较大值放在后面,每一次循环将最大的一个数值放在最后面:

public class sz {public static void main(String[] args) {int[] a = {3,5,7,8,2,4};buddleSort(a);//打印printSort(a);}public static void buddleSort(int[] a) {int temp;for (int i = a.length - 1; i > 0; i--) {for (int j = 0; j < i; j++) {if (a[j] > a[j + 1]) {temp = a[j];a[j] = a[j+ 1];a[j+1] = temp;}}}}// 数组打印public static void printSort(int[] a) {for (int i = 0; i < a.length; i++) {System.out.print(a[i] + " ");}System.out.println();}}

2.插入排序

将待插入的元素,依次与已排序好的元素从后到前进行比较,如果当前元素值比待插入的元素值大,则将移位到与其相邻的后一个位置,否则直接将待插元素插入当前元素相邻的后一位置,因为说明已经找到插入点的最终位置

public class sz {public static void main(String[] args) {int[] a = {3,5,7,8,2,4};insertSort(a);//打印printSort(a);}public static void insertSort(int[] a) {for (int i = 1; i < a.length; i++) {int temp = a[i], j;for (j = i - 1; j >= 0; j--) {if (a[j] > temp) {a[j+1] = a[j];} else {break;}}a[j+1] = temp;}}// 数组打印public static void printSort(int[] a) {for (int i = 0; i < a.length; i++) {System.out.print(a[i] + " ");}System.out.println();}}

3.选择排序

首先在未排序数列中找到最小元素,然后将其与数列的首部元素进行交换,然后,在剩余未排序元素中继续找出最小元素,将其与已排序数列的末尾位置元素交换。以此类推,直至所有元素圴排序完毕。

public class sz {public static void main(String[] args) {int[] a = {3,5,7,8,2,4};choiceSort(a);printSort(a);}public static void choiceSort(int[] a) {for (int i = 1; i < a.length; i++) {int k = 0;int j;for (j = 0; j <= a.length - i; j ++) {if (a[k] < a[j])k = j;}if (k != j) {int temp = a[k];a[k] = a[j-1];a[j-1] = temp;}}}public static void printSort(int[] a) {for (int i = 0; i < a.length; i++) {System.out.print(a[i] + " ");}System.out.println();}}

七、方法

方法是将具有独立功能的代码块组织成为一个整体,使其具有特殊功能的代码集,方法包含一个方法头和一个方法体
A : 方法必须创建才可以使用,该过程称之为(方法定义)
B:方法创建后不能直接运行,需要手动调用,才可以执行,该过程称之为(方法调用),方法必须先定义后调用。
1)、定义格式

    public static void 方法名( 参数  ) {方法体;   }// 方法所包裹的逻辑代码

2)、调用格式

在mian方法中,通过方法名调用方法名( 参数);

方法的参数可以是一个或多个,多个参数中间需要用“,”隔开。调用带参数的方法,传入的参数,无论是类型还是数量,都需要跟定义的参数类型匹配,传入的参数可以是变量,也可以是常量。

:某公司每月标准上班时间是160小时,每小时工资是30元。
如果上班时间超出了160小时,超出部分每小时按1.5倍工资发放。请编写程序计算员工月工资。(用方法实现)

 public class for2 {public static void main(String[] args) {gve(1000);}//定义一个方法,方法名为gvepublic static void gve ( double h) {double sum = 0;//方法中两个变量h用于保存反弹高度,sum用于保存总高度for (int i = 0; i < 10; i++) {sum = sum + h + h / 2 ;h = h / 2;}sum = sum - h;System.out.println("第十次反弹高度是" + h + "米");System.out.println("一共经过" + sum + "米");}
}

每个方法在被调用执行的时候,都会进入栈内存,并且拥有自己独立的内存空间,方法内部代码调用完毕之后,会从栈内存中弹栈消失。

1.带返回值方法定义和调用

1、方法的返回值类型,和返回值的关系
对应关系,方法的返回值类型,必须跟返回值的类型对应,否则引发编译错误
2、返回值的接收
带有返回值的方法调用之后,会产生一个运算后的结果,这个结果没有接收被使用的话,将毫无意义。
3、return关键字的作用
return关键字用于将方法运算的结果,返还给调用处。

定义格式:

public static 数据类型 方法名 ( 参数 ) { return 数据 ;
}

方法定义时return后面的返回值与方法定义上的数据类型要匹配。

调用格式:

方法名 ( 参数 ) ;
gve(7);数据类型 变量名 = 方法名 ( 参数 ) ;
int c=gve(5);

方法不能嵌套定义,void表示无返回值,可以省略return,也可以单独的书写return,后面不加数据。

2.重载

方法重载指同一个类中定义的多个方法之间的关系,满足下列条件的多个方法相互构成重载

  • 多个方法在同一个类中

  • 多个方法具有相同的方法名

  • 多个方法的参数不相同,类型不同或者数量不同

  • 重载仅对应方法的定义,与方法的调用无关,调用方式参照标准格式

  • 重载仅针对同一个类中方法的名称与参数进行识别,与返回值无关,换句话说不能通过返回值来判定两个方法是否相互构成重载

public class sz {public static int min ( int a){}public static void min ( int a){}}//此方法的参数相同是错的
public class sz1 {public static int min(int a) {}
}public class sz2 {public static void min ( int a){}}//方法不能嵌套,所以也是错的

例:

public class sz {public static void main(String[] args) {//方法调用System.out.println(compare(10, 20));System.out.println(compare((byte) 10, (byte) 20));//参数前如果不加数据类型,则默认为int型System.out.println(compare((short) 10, (short) 20));System.out.println(compare(10L, 20L));}//定义一个名为compare的方法public static boolean compare(int a, int b) {System.out.println("int");return a == b;}public static boolean compare(byte a, byte b) {System.out.println("byte");return a == b;}public static boolean compare(short a, short b) {System.out.println("short");return a == b;}public static boolean compare(long a, long b) {System.out.println("long");return a == b;}
}

3.形参和实参

形参:
全称叫做形式参数,指的是定义方法的时候,方法小括号中定义的参数
例如:

public static void method(int num){}

实参:
全程为实际参数,指的是调用方法的时候,传入的具体数值。
例如:

method(10);

数组的基本内容和方法相关推荐

  1. android 清空数组缓存,Android数据持久化之读写SD卡中内容的方法详解

    本文实例讲述了Android数据持久化之读写SD卡中内容的方法.分享给大家供大家参考,具体如下: 前面文章里讲的那三个方法:openFileOutput.openFileInput虽然都能通过流对象O ...

  2. php 删除指定html标签,总结php删除html标签和标签内的内容的方法

    经常扒别人网站文章的坑们:我是指那种批量式采集的压根不看内容的,少不了都会用到删除html标签的函数:这里介绍3种不同用途上的方法: $str=' 这里是p标签 这里是a标签 '; 1:删除全部或者保 ...

  3. python怎么读文件夹下的文件夹-python2.7读取文件夹下所有文件名称及内容的方法...

    最近稍稍有点空闲时间,于是重新温习了一下之前学习过的python基础.废话不多说,记录一下自己的所得. 首先,安装什么的不在本人的温习范围,另,本人使用的是windows下的python2.7版本,且 ...

  4. 如何将字符数组里的内容转换成uint8的类型?将一个字符数组里面的所有元素变成一个字符串?

      1. 如何将字符数组里的内容转换成uint8的类型? time_t t; struct tm *p;t=atoi(myTime);//myTime里面放的是一个时间戳:char myTime[11 ...

  5. php 去重_php求两数组交集的四种方法详解

    题目:给定两个数组,编写一个函数来计算它们的交集. 示例 1: 输入: nums1 = [1,2,2,1],nums2 = [2,2] 输出: [2] 示例 2: 输入: nums1 = [4,9,5 ...

  6. java 两个数组去重复数据_Java实现数组去除重复数据的方法详解

    本文实例讲述了Java实现数组去除重复数据的方法.分享给大家供大家参考,具体如下: 前一段时间被面试问到:如果一个数组中有重复元素,用什么方法可以去重?一时间会想到用一种方法,但是后来查阅资料后发现, ...

  7. python 写txt 换行_python 批配换行Numpy数组的保存与读取方法

    1. 数组以二进制格式保存 np.save和np.load是读写磁盘数组数据的两个主要函数.默认情况下,数组以未压缩的原始二进制格式保存在扩展名为npy的文件中,以数组a为例 np.save(&quo ...

  8. 删除指定下标的元素c语言,PHP删除数组中指定下标的元素方法

    1.前面有讲数组作为堆栈和队列时的删除元素操作,即按顺序有规律的进行删除.那么,如果需要从数组的中间位置删除某个元素该如何操作呢?就需要我们今天要讲的unset()函数了. 2.unset()函数允许 ...

  9. php 两个数组中不同的元素,PHP实现查询两个数组中不同元素的方法

    这篇文章主要介绍了PHP实现查询两个数组中不同元素的方法,涉及PHP数组差集运算与数组合并的相关技巧,需要的朋友可以参考下 本文实例讲述了PHP实现查询两个数组中不同元素的方法.分享给大家供大家参考, ...

最新文章

  1. hibernate 一对一(One-to-One)
  2. Java方法案例--比较两个值是否相等
  3. 【机房收费系统】多么痛的领悟
  4. c++ 多核cpu序列号_关于 CPU 的一些基本知识总结
  5. ReentrantLock的使用场景
  6. j2ee高并发时使用全局变量需要注意的问题
  7. MariaDB基础详解
  8. 算法:平衡二叉树110. Balanced Binary Tree
  9. 计算机系统导论(持续更新)
  10. PLC梯形图设计全自动洗衣机S7-1200博途以及PLC仿真实现之 1. 创建新工程
  11. aspose-cells-8.52问题记录,excel转pdf,字体,格式
  12. 综合布线施工工艺--
  13. Boot与App程序设计
  14. mysql候选关键字_MySQL——(SQL语句)
  15. c语言实现鼠标驱动,用C语言写的鼠标驱动程序.doc
  16. 计算机打不开sai文件夹,解决 Excel打开桌面文件 显示“无法找到C:\Documents.xls。请检查文件名的...”错误...
  17. ueditor统计字数中文_UEditor编辑器 字符数统计和字符数限制 问题
  18. informix GBase -179 ISAM error: No free disk space for sort.
  19. Android--kotlin基础(三)
  20. 如何建立Qt Creator交叉编译嵌入式Linux

热门文章

  1. 报告发现欧洲几乎占据一半的ICO融资额
  2. [向卓越管理者迈步]-尽心与尽力
  3. 5G时代,救护车如何实现远程联网
  4. c++ string int转化 #define INTMAX 0x7fffffff
  5. 微信小程序跳转到外部链接或者其他网页
  6. Git更新代码到本地
  7. DMRS和SRS的不同
  8. 22.12.20补卡 POJ - 1287 Networking
  9. Debian 音量调节工具
  10. 学生正确使用计算机法方,浅谈计算机技术在教育中的多方应用