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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/254766.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

create_metrology_model创建测量几何形状所需的数据结构(原理)

目录create_metrology_model&#xff08;算子&#xff09;描述二维计量的基本原理创建计量模型数据结构提供近似值修改模型参数修改对象参数对齐计量模型应用测量访问结果清理记忆注意参数create_metrology_model&#xff08;算子&#xff09; create_metrology_model - 创建测…

iOS开发UI篇—字典转模型

一、能完成功能的“问题代码” 1.从plist中加载的数据 2.实现的代码 1 //2 // LFViewController.m3 // 03-应用管理4 //5 // Created by apple on 14-5-22.6 // Copyright (c) 2014年 heima. All rights reserved.7 //8 9 #import "LFViewController.h" 10 11 i…

Codechef:Path Triples On Tree

Path Triples On Tree 题意是求树上都不相交或者都相交的路径三元组数量。 发现blog里没什么树形dp题&#xff0c;也没有cc题&#xff0c;所以来丢一道cc上的树形dp题。 比较暴力&#xff0c;比较恶心 #include<cstdio> #include<algorithm> #define MN 300001 #de…

grbl

第一次发帖...之前上论坛都是查资料的&#xff0c;发现gcode这一块资料比较少先说一下Gcode:Gcode在工业控制上用的很多&#xff0c;是一种通用的控制指令&#xff0c;数控机床上经常用&#xff0c;在我diy雕刻机&#xff08;打印机之类的&#xff09;的时候要用到&#xff0c;…

mybitis实现增,删,改,查,模糊查询的两种方式:(2)

方式二&#xff1a;mapper代理接口方式 这种方式只需要xml接口&#xff08;不用写实体类&#xff09;但是需要符合三个规范 使用mapper代理接口方式在同一目录下&#xff08;可以创建一个源文件夹&#xff0c;达到类文件和xml文件分类的作用&#xff09;xml中namespace&#xf…

C语言中的静态函数的作用

转载 在C语言中为什么要用静态函数(static function)&#xff1f;如果不用这个static关键字&#xff0c;好象没有关系。那么&#xff0c;用了static以后&#xff0c;有什么作用呢&#xff1f;我们知道&#xff0c;用了static的变量&#xff0c;叫做静态变量&#xff0c;其意义是…

c++11 原子类型与原子操作

1、原子类型和原子操作&#xff08;1&#xff09;类型&#xff08;2&#xff09;操作&#xff08;3&#xff09;详述● 原子类型只能从其模板参数类型中进行构造&#xff0c;标准不允许原子类型进行拷贝构造、移动构造&#xff0c;以及使用operator等● atomic_flag 是一个原子…

依弗科(上海)机电设备有限公司

机器人喷涂倒计时&#xff0c;上帝帮我实现愿望吧 阿门 &#xfeff;&#xfeff;&#xfeff;&#xfeff;

CoDeSys

&#xfeff;&#xfeff;CoDeSys是全球最著名的PLC内核软件研发厂家德国的3S&#xff08;SMART&#xff0c;SOFTWARE&#xff0c;SOLUTIONS&#xff09;公司出的一款与制造商无关的IEC 61131-1编程软件。CoDeSys 支持完整版本的IEC61131标准的编程环境&#xff0c;支持标准的六…

使用halcon结合机械XY轴对相机进行9点标定

小哥哥小姐姐觉得有用点个赞呗&#xff01; 先在halcon中计算仿射变换矩阵并验证 //在图像中找到的模板中心位置 PicX:[1680.721,2065.147,911.499,526.798,1290.920,1285.731,1300.953] PicY:[968.321,964.366,976.283,980.035, 587.055,394.727,1355.487] //与图像中查找…

Ubuntu Linux 提出新的发布模式——测试周

2019独角兽企业重金招聘Python工程师标准>>> 导读开源技术项目最大的优势之一就是社区的每个人都可以自由地提出想法&#xff0c;如果获得社区支持&#xff0c;它可以变成现实。著名的 Ubuntu 开发人员 Simon Quigley 就提出了一个可能改变 Ubuntu Linux 开发过程的…

【转】小白级的CocoaPods安装和使用教程

原文网址&#xff1a;http://www.jianshu.com/p/e2f65848dddc 百度有很多CocoaPods的安装教程.第一次看的时候,确实有点摸不透的感觉.经过思考,一步一步来实践,前后花了三十几分钟,才顺利使用..所以想了想,我还是写一个小白级的教程吧.细到每一个细节都说明. 让你不用10分钟解决…

常见错误总结

少打头文件 少打using namespace std; 命名冲突&#xff0c;全局变量与局部变量命名一致&#xff0c;导致使用的值不是期望值 边读边写&#xff0c;导致改后读&#xff0c;覆盖写入的值 长整数移位溢出&#xff0c;1<<63是错误的&#xff0c;应该写成1ll<<63 循环变…

HALCON相机标定相机内参相机外参

目录相机标定1.相机标定是什么2.怎么使用halcon进行相机内外参标定&#xff1f;&#xff08;1&#xff09;搭建硬件1.**相机连好电脑&#xff0c;用相机厂家软件打开相机&#xff0c;检查一下相机是否正常。**2.**接下来使用halcon连接相机**&#xff08;2&#xff09;开始标定…

angular change the url , prevent reloading

http://stackoverflow.com/questions/14974271/can-you-change-a-path-without-reloading-the-controller-in-angularjs $location.search({vln: $scope.vln_id}, false);会改变url中 &#xff1f; 后面的 搜索参数&#xff0c;但是controller不会重新实例化。angular 官方文档…

C#圆形卡尺测量程序基于halcon

废话不多说上源码 觉得帖子有用给点个赞哈 先来个效果图 下边的是源码&#xff0c;自己新建一个文件粘贴进去&#xff0c;包含到您现在的项目 中。这串源码后边是使用方法。 using System; using System.Collections.Generic; using System.Linq; using System.Text; usin…

科维PLC运行时系统ProConOS embedded CLR 2.2 特定应用

ProConOS embedded CLR是新型的开放式标准化PLC运行时系统&#xff0c;符合IEC 61131标准&#xff0c;可执行不同的自动化任务&#xff08;PLC、PAC、运动控制、CNC、机器人和传感器&#xff09;。   通过采用国际标准的微软中间语言&#xff08;依据IEC/ISO 23271标准为MSIL…

set()与get()详细解答(C#)

这几天在搬砖时候用到了set()与get()&#xff0c;同事问了我一些问题&#xff0c;我打算在博客中总结一下。 觉得帮助到了您&#xff0c;帮我点个赞哦。 属性访问器 其实说白了就是操作一个属性&#xff0c;更通俗一点说就是对一个变量的取值与赋值。 先来看get() get 访问…

如何判断一条曲线是否自己相交?

今天看到群里有人在问这个问题&#xff0c;想了一个解决办法。 我们首先作假设&#xff0c;如果一条曲线有交点&#xff0c;那么它就是相交的对吧。可能大家想的都是这样&#xff0c;就开始找各种方法去识别交点。 我们换个角度想一下&#xff1a;是不是我们判断这条曲线是否带…

hdu 5813 Elegant Construction

水题 题意&#xff1a;有n个城市&#xff0c;给你每个城市能到达城市的数量&#xff0c;要你构图&#xff0c;输出有向边&#xff0c;要求无环&#xff0c;输出任意的解 例&#xff1a; Sample Input 332 1 021 143 1 1 0Sample OutputCase #1: Yes21 22 3Case #2: NoCase #3: …