一、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.pswp.cn/news/254766.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/254766.shtml
英文地址,請注明出處:http://en.pswp.cn/news/254766.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

http header 具體解釋

HTTP&#xff08;HyperTextTransferProtocol&#xff09;即超文本傳輸協議&#xff0c;眼下網頁傳輸的的通用協議。HTTP協議採用了請求/響應模型&#xff0c;瀏覽器或其它client發出請求&#xff0c;server給與響應。就整個網絡資源傳輸而言&#xff0c;包含message-header和me…

研究生開題報告需要注意的幾點

&#xfeff;&#xfeff;1 畢業論文選題的原則 畢業論文選題一般要求滿足以下原則&#xff1a; ①開拓性:前人沒有專門研究過或雖已研究但尚無理想的結果&#xff0c;有待進一步的探討和研究&#xff0c;或是學術界有分歧&#xff0c;有必要深入研究探討的問題&#xff1b;…

create_metrology_model創建測量幾何形狀所需的數據結構(原理)

目錄create_metrology_model&#xff08;算子&#xff09;描述二維計量的基本原理創建計量模型數據結構提供近似值修改模型參數修改對象參數對齊計量模型應用測量訪問結果清理記憶注意參數create_metrology_model&#xff08;算子&#xff09; create_metrology_model - 創建測…

X264碼率控制流程分析

碼率控制的理論知識&#xff1a;碼率控制的目的和意義&#xff1a;圖像通信中碼率控制的目的&#xff1a;通過調節編碼參數&#xff0c;控制單位時間內的編碼視頻流的數據量&#xff0c;以使產生的比特流符合各種應用的需求。視頻壓縮的效率和視頻內容有很大的關系&#xff0c;…

STL-list

#include "stdafx.h"#include<iostream>#include<string>#include<vector>//vector向量容器#include<deque>#include<list>#include<algorithm>using namespace std;/* list介紹 list容器實現了雙向鏈表的數據結構&#xff0c;數…

Java微信二次開發(九)

多媒體文件上傳與下載 第一步&#xff1a;找到包com.wtz.vo&#xff0c;新建類WeixinMedia.java 1 package com.wtz.vo;2 3 /**4 * author wangtianze QQ:8646200125 * date 2017年4月25日 上午11:10:316 * <p>version:1.0</p>7 * <p>descri…

add_metrology_object_generic將測量對象添加到計量模型中

目錄add_metrology_object_generic&#xff08;算子&#xff09;描述可能的形狀測量區域的定義通用參數參數add_metrology_object_generic&#xff08;算子&#xff09; add_metrology_object_generic - 將計量對象添加到計量模型中。 add_metrology_object_generic&#xff…

關于發那科機器人的FSSB

&#xfeff;&#xfeff;FSSB是指fanuc Serial Servo Bus&#xff0c;即發那科串行伺服總線&#xff08;光纜&#xff09;&#xff0c;連接CNC與伺服放大器。HSSB是指High-Speed Serial Bus&#xff0c;即高速串行總線&#xff08;光纜&#xff09;&#xff0c;連接CNC與外部P…

H264規定了三種主要檔次

H264規定了三種主要檔次&#xff0c;每個檔次支持一組特定的編碼功能&#xff0c;并支持一類特定的應用。 1、基本檔次&#xff08;Baseline Profile&#xff09;&#xff1a;利用I片和P片支持幀內和幀間編碼&#xff0c;支持利用基于上下文的自適應的變長編碼進行的熵編碼&…

get_metrology_object_result 獲取計量模型的測量結果

目錄get_metrology_object_result&#xff08;算子&#xff09;描述result_type&#xff1a;獲取所有參數&#xff1a;獲取特定參數&#xff1a;獲得分數&#xff1a;used_edges&#xff1a;行&#xff1a;列&#xff1a;振幅&#xff1a;angle_direction&#xff1a;參數get_m…

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;其意義是…

[轉] sql server 跨數據庫調用存儲過程

A庫存儲過程&#xff1a; create PROCEDURE [dbo].[spAAAForTest] ( UserName nvarchar(20) null ,LoginPwd nvarchar(60) null ) AS BEGINselect NA AS a, NB AS B, NC AS C;END 同一臺服務器實例&#xff0c;A&#xff0c;B兩個數據庫&#xff0c;…

get_metrology_object_result_contour查詢計量對象的結果輪廓

目錄get_metrology_object_result_contour&#xff08;算子&#xff09;描述參數get_metrology_object_result_contour&#xff08;算子&#xff09; get_metrology_object_result_contour - 查詢計量對象的結果輪廓。 get_metrology_object_result_contour&#xff08;&…

ABB 機器人 壓包指令PackRawBytes 解包指令UnpackRawBytes

ABB 壓包指令PackRawBytes 解包指令UnpackRawBytes PackRawBytes- 將數據導入 rawbytes 數據。 使用方法 PackRawBytes 用于將 num, dnum, byte,或者 string類型的數據&#xff0c;打包到 rawbytes 類型的變量中. 基本舉例 &#xff1a; VAR rawbytes raw_…

C語言中使用靜態函數的好處

靜態函數會被自動分配在一個一直使用的存儲區&#xff0c;直到退出應用程序實例&#xff0c;避免了調用函數時壓棧出棧&#xff0c;速度快很多。 關鍵字“static”&#xff0c;譯成中文就是“靜態的”&#xff0c;所以內部函數又稱靜態函數。但此處“static”的含義不是指存儲方…