2018-04-25

不悔梦归处,只恨未尽心

数组

一、一维数组

  

  1. 数组的含义:具有相同类型的多个变量按有序形式组织起来的数据形式。(数组是用来存储固定大小的同类型元素。)
  2. 数组的定义:

    方式1(推荐使用):数组元素类型[] 数组名称;  如:int[] ages;  (可以把 int[] 看成一个整体,看成一种数据类型,int类型的数组)

    方式2:数组元素类型 数组名称[];  如:int ages[];

    数组必须初始化才能使用,因为初始化表示在内存存中分配空间。

  3.数组的初始化:

    数组是定长的:一旦初始化完成,数组的长度(数组元素个数)就固定了,不能改变。如果需要更改,只能重新初始化。

  

    

    

  • 静态初始化

       由程序员为每一个数组元素设置初始值,而数组的长度由系统自动分配

       语法:数组元素类型[] 数组名 = new 数组元素类型[]{元素1,元素2,元素3,...};  new关键字:在堆空间开辟一块内存区域,用来存储数据。

          举例:int[] num = new int[]{1,3,5,7,9};  

          简单写法(必须申明的同时并初始化,不能先声明后初始化):int[] num = {1,3,5,7,9};

  • 动态初始化   

      由程序员设置数组元素个数(数组长度),而每一个数组元素的初始值由系统决定。        

       语法:数组元素类型[] 数组名 = new 数组元素类型[length];      

       举例:int[] num = new int[100];

  4.静态初始化内存分析

  

  5.动态初始化内存分析

  

  6.数组的基本操作

  • 获取数组元素

      元素类型 变量 = 数组名[index];  index表示索引

  • 设置元素

      数组名[index] = 值;

  • 遍历数组

       建议使用for循环遍历

  • 数组长度

       int num = 数组名.length;  (length是属性,不是方法)

  • 索引范围  

       [0,length-1]  从0开始,逐一递增

数组基本操作的代码:

 1 //数组的基本操作
 2
 3 class ArrayDemo
 4 {
 5     public static void main(String[] args){
 6
 7         int[] num1 = new int[]{1,3,5,7,9};
 8
 9         System.out.println("数组的长度=" + num1.length);
10         System.out.println("数组第一个元素=" + num1[0]);//获取数组元素
11
12         //修改(设置)num1数组的第一个元素
13         num1[0] = 100;
14         System.out.println("数组第一个元素=" + num1[0]);//获取数组元素
15
16         System.out.println("----------------------------");
17
18         //遍历数组
19         System.out.println("数组第一个元素=" + num1[0]);
20         System.out.println("数组第二个元素=" + num1[1]);
21         System.out.println("数组第三个元素=" + num1[2]);
22         System.out.println("数组第四个元素=" + num1[3]);
23         System.out.println("数组第五个元素=" + num1[4]);
24
25         System.out.println("----------------------------");
26
27         //使用for循环遍历数组
28         for(int index = 0; index < num1.length; index++){
29             System.out.println(num1[index]);
30         }
31      }
32 }

输出结果:

  

  7. 操作数组常见异常

  • NullPointerException:空指针异常(空引用异常)  

      当数组没有初始化,就直接操作数组,就会出现空指针异常  

      如: int[] bs = null;

        System.out.println(bs.length);

  • ArrayIndexOutOfBoundsException:数组的索引越界异常

      如: int[] a = {100};

         System.out.println(a[-1]);

  

  8.获取数组最大和最小元素

    输出结果:10

 1 class ArrayDemo2
 2 {
 3
 4     //获取数组最大元素
 5     public static int getMax(int[] num){
 6         int max = num[0];//假设第一个元素是最大值
 7         for(int index = 1; index < num.length; index++){
 8             if(num[index] > max){
 9                 max = num[index];    //把最大值存储在max变量里
10             }
11         }
12         return max;
13
14     }
15
16     public static void main(String[] args)
17     {
18
19         int[] num = new int[]{-3,0,2,1,10};
20
21         int max = ArrayDemo2.getMax(num);
22         System.out.println(max);
23     }
24 }

  9.按格式打印数组元素

 1 class ArrayDemo2
 2 {
 3
 4
 5
 6     public static void main(String[] args)
 7     {
 8
 9
10         String[] arr = {"A","B","C","D","E"};
11         ArrayDemo2.printArrary(arr);
12     }
13     static void printArrary(String[] arr){
14         //如果数组为空,则输出null
15         if(arr == null){
16             System.out.println("null");
17             return;    //结束方法
18         }
19
20         String ret = "[";
21         //遍历数组
22         for(int index = 0; index < arr.length; index++){
23             ret = ret + arr[index];
24             //如果当前index不是最后一个索引,则拼接“,”
25             if(index != arr.length-1){
26                 ret = ret + ", ";
27             }
28         }
29         ret = ret + "]";
30
31     System.out.println(ret);
32     }
33 }

输出结果:

  10.逆序排列数组元素

 1 class ArrayDemo2
 2 {
 3
 4     public static void main(String[] args)
 5     {
 6         String[] arr = {"A","B","C","D","E"};
 7         ArrayDemo2.printArrary(arr);
 8         String[] newArr = ArrayDemo2.reverse(arr);
 9         ArrayDemo2.printArrary(newArr);
10     }
11     static void printArrary(String[] arr){
12          //如果数组为空,则输出null
13          if(arr == null){
14              System.out.println("null");
15              return;    //结束方法
16          }
17
18          String ret = "[";
19          //遍历数组
20         for(int index = 0; index < arr.length; index++){
21              ret = ret + arr[index];
22              //如果当前index不是最后一个索引,则拼接“,”
23              if(index != arr.length-1){
24                  ret = ret + ", ";
25              }
26          }
27          ret = ret + "]";
28
29      System.out.println(ret);
30     }
31
32     static String[] reverse(String[] oldArr){
33
34         //创建一个新数组,用来存放就数组逆序之后的元素
35         String[] newArr = new String[oldArr.length];
36         for(int index = oldArr.length-1; index >= 0; index--){
37             newArr[oldArr.length-1-index] = oldArr[index];
38         }
39         return newArr;
40     }
41 }

输出结果:

  11.元素出现索引(线性搜索)

class ArraySearchDemo
{public static void main(String[] args) {int[] arr = {10,20,30,10,50,-30,10};int beginIndex = ArraySearchDemo.indexOf(arr,10);System.out.println(beginIndex);int endIndex = ArraySearchDemo.lastIndexOf(arr,10);System.out.println(endIndex);}/*查询key元素在arr数组中第一次出现的位置参数:arr:从哪一个数组中去做查询key:当前去查询的元素返回:如果key存在于arr数组中,则返回第一次出现的索引如果key不存在于arr数组中,则返回-1*/static int indexOf(int[] arr,int key){for(int index = 0; index < arr.length; index++){if(arr[index] == key){return index;}}return -1;}//获取key参数在arr数组中最后出现的索引位置static int lastIndexOf(int[] arr,int key){for(int index = arr.length-1; index >= 0; index--){if(arr[index] == key){return index;}}return -1;}
}

输出结果:

    

转载于:https://www.cnblogs.com/sunNoI/p/8942465.html

一、Java语言基础(4)_方法和数组——数组相关推荐

  1. java语言基础-面向对象编程-方法(廖雪峰老师官网学习记录)

    Java是一种面向对象的编程语言. 面向对象编程,英文是Object-Oriented Programming,简称OOP. 面向对象编程,是一种通过对象的方式,把现实世界映射到计算机模型的一种编程方 ...

  2. java语言中声明布尔型_【Java初探02】——Java语言基础

    本篇博文就Java语言的一些基本元素进行一些记录和阐述,主要讲解一下Java语言的一些基本构成元素和Java的主类结构. Java语言基础的大致组成 java主类结构 基本的数据类型 变量与常量 运算 ...

  3. 计算机java语言教程,计算机JAVA教程二讲Java语言基础知识.doc

    计算机JAVA教程二讲Java语言基础知识 2.1简单数据类型 2.1.1 标识符和保留字 1.标识符 程序员对程序中的各个元素加以命名时使用的命名记号称为标识符(identifier).Java语言 ...

  4. java语言定义一个具备栈功能的类_Java学习笔记 第二章 Java语言基础

    第二章 JAVA语言基础 一.关键字 1.关键字的定义和特点 定义:被Java语言赋予了特殊含义的单词 特点:关键字中所有的字母都为小写 2.用于定义数据类型的关键字 c;ass  interface ...

  5. JAVA——从基础学起(一)Java语言基础

    一 Java语言基础 1.1Java主类结构 (1)Java是面向对象的编程语言,基本组成单元是类,类体中包括属性和方法两部分.每个应用程序都需要含有一个main方法,含有main方法的类叫做主类. ...

  6. Java基础知识——Java语言基础

    ---------------------- ASP.Net+Android+IO开发S. .Net培训.期待与您交流! ---------------------- 2.Java语言基础 Java语 ...

  7. 【java后端学习】java语言基础(夯实基础)

    文章目录 一.基础语法 1 java中的标识符 1.1 变量命名规范 1.2 保留字 2 java中的常量 3 java基本数据类型 4 数组 5 字符及字符串 6 运算符 7 控制语句 for语句 ...

  8. day01计算机基础知识Java语言基础

    计算机基础知识(计算机概述) 计算机基础知识(软件开发和计算机语言概述) 计算机基础知识(人机交互) 计算机基础知识(键盘功能键和快捷键) 计算机基础知识(如何打开DOS控制台) 计算机基础知识(常见 ...

  9. Java语言基础(一)

    Java语言基础组成 关键字 定义:被Java语言赋予了特殊含义的单词. 特点:关键字中所有字母都为小写. 用于定义数据类型的关键字 class interface byte short int lo ...

  10. JAVA 语言基础学习

    JAVA 语言基础 文章目录 JAVA 语言基础 Java概述 Java语言的诞生 JAVA语言的发展 JAVA语言的特点 什么是跨平台性? 跨平台的实现原理 JDK与JRE JDK的下载和安装 Pa ...

最新文章

  1. 我是大富豪php源码,最全大富豪3.4源码【自用可运营】含23款子游戏+可控制输赢工具...
  2. 计算(a+b)*c的值(信息学奥赛一本通-T1007)
  3. 苹果计划在明年推出的高端iPhone机型上应用挖孔屏
  4. 采用“不可能的曲面”!沈义人:OPPO Find X3真机上手有惊喜
  5. nginx配置SSL实现服务器/客户端双向认证
  6. snmp获取设备相关管理信息
  7. php while循环 selecrt下拉框 option默认选中
  8. linux中telnet命令安装包,linux的telnet命令安装
  9. Apple Pay如何使用?全网最完美攻略(图文教程)!
  10. 淘宝用户行为分析——用户画像
  11. reflections歌词翻译_英文歌曲reflection的歌词翻译
  12. 对于Linux内核tty设备的一点理解 【转】
  13. 如何用计算机录视频,怎么用电脑录视频,详细操作教程分享给大家
  14. 吴恩达:如何学习机器学习
  15. 共享文件夹无法打开——服务器存储空间不足,无法处理此命令
  16. 微信分享后端接口简单实现
  17. 提高网页加载速度的一些方法和技巧
  18. (附源码)ssm学生管理系统 毕业设计 141543
  19. /opt/nginx/sbin/nginx: error while loading shared librari
  20. 驱动木马之类的问题 zz

热门文章

  1. java复制的函数会报错,2 面试题之面向对象
  2. python删除第一行_Python删除文件第一行
  3. android 系统倒计时显示时间,Android 依据系统时间整点、半点倒计时
  4. ArcMap 导入 wrl_flmic拍摄的素材如何无损导入电脑
  5. 图形学教程Lecture 2: Review of Linear Algebra知识点总结
  6. 编程书单:十本Python编程语言的入门书籍
  7. 01-spring配置详解
  8. android是32-bit系统还是64-bit系统
  9. (周日赛)Sort the Array
  10. 锅巴H264播放器地址和说明