函數、記憶體、一維數組、二維數組【4】

来源:http://www.cnblogs.com/pipi-changing/archive/2016/04/10/5373768.html
-Advertisement-
Play Games

本文原創作者:pipi-changing 本文原創出處:http://www.cnblogs.com/pipi-changing/ 本文版權歸作者和博客園共有,未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接 ,否則保留追究法律責任的權利。 函數的定義 什麼是函數? •函數就是定義在類 ...


本文原創作者:pipi-changing

本文原創出處:http://www.cnblogs.com/pipi-changing/

    

本文版權歸作者和博客園共有,未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接 ,否則保留追究法律責任的權利。

 

 

函數的定義


 

 什麼是函數?

•函數就是定義在類中的具有特定功能的一段獨立小程式。   •函數也稱為方法。   函數的格式   修飾符 返回值類型 函數名(參數類型 形式參數1,參數類型 形式參數2,...)

  {

  執行語句;

  return 返回值;

  }

 

  返回值類型:函數運行後的結果的數據類型。

  參數類型:是形式參數的數據類型。

  形式參數:是一個變數,用於存儲調用函數時傳遞給函數的實際參數。

  實際參數:傳遞給形式參數的具體數值。

  return:用於結束函數。

  返回值:該函數運算後的結果,該結果會返回給調用者。

 

 函數的特點


 

定義函數可以將功能代碼進行封裝

 

便於對該功能進行復用

 

函數只有被調用才會被執行

 

函數的出現提高了代碼的復用性

 

對於函數沒有具體返回值的情況,返回值類型用關鍵字void表示,那麼該函數中的return語句如果在最後一行可以省略不寫。

 

註意:

 

•函數中只能調用函數,不可以在函數內部定義函數。

 

•定義函數時,函數的結果應該返回給調用者,交由調用者處理。

 

 

 函數的應用


 

兩個明確 •明確要定義的功能最後的結果是什麼?   •明確在定義該功能的過程中,是否需要未知內容參與運算   示例:   •需求:定義一個功能,可以實現兩個整數的加法運算。   •分析:   •該功能的運算結果是什麼?兩個數的和,也是一個整數(int)   •在實現該功能的過程中是否有未知內容參與運算?加數和被加數是不確定的。(兩個參數int,int)   •代碼:

  int  getSum(int x,int y)

  {

  return x+y;

  }

 

 函數的重載(overload)


 

重載的概念

在同一個類中,允許存在一個以上的同名函數,只要它們的參數個數或者參數類型不同即可。

重載的特點:

與返回值類型無關,只看參數列表。

重載的好處:

方便於閱讀,優化了程式設計。

重載示例:

//返回兩個整數的和

  int add(int x,int y){return x+y;}

//返回三個整數的和

  int add(int x,int y,int z){return x+y+z;}

//返回兩個小數的和

  double add(double x,double y){return x+y;}

 

函數的功能一樣,僅僅是參與運算的未知內容不同時,

可以定義多函數,卻使用統一函數名稱,這樣方便閱讀。

在調用時,虛擬機通過參數列表的不同來區分同名函數。

 

 數組


 

 數組的定義

概念

同一種類型數據的集合。其實數組就是一個容器。

數組的好處

可以自動給數組中的元素從0開始編號,方便操作這些元素。

格式1:

元素類型[]  數組名 = new 元素類型[元素個數或數組長度];

示例:int[] arr = new int[5];

格式2:

元素類型[] 數組名 = new 元素類型[]{元素,元素,……};

int[] arr = new int[]{3,5,1,7};

int[] arr = {3,5,1,7};


 

數組記憶體結構

 


 

 

記憶體結構

 

Java程式在運行時,需要在記憶體中的分配空間。為了提高運算效率,有對空間進行了不同區域的劃分,因

為每一片區域都有特定的處理數據方式和記憶體管理方式。

棧記憶體

  用於存儲局部變數,當數據使用完,所占空間會自動釋放。

堆記憶體

  數組和對象,通過new建立的實例都存放在堆記憶體中。     每一個實體都有記憶體地址值     實體中的變數都有預設初始化值     實體不在被使用,會在不確定的時間內被垃圾回收器回收

方法區,本地方法區,寄存器

 


 

數組操作常見問題

 

  數組腳標越界異常(ArrayIndexOutOfBoundsException)

int[] arr = new int[2];

System.out.println(arr[3]);

訪問到了數組中的不存在的腳標時發生。

  空指針異常(NullPointerException)

int[] arr = null;

System.out.println(arr[0]);

arr引用沒有指向實體,卻在操作實體中的元素時。

 


 

二維數組[][]

格式1:int[][] arr = new int[3][2];

  定義了名稱為arr的二維數組     二維數組中有3個一維數組     每一個一維數組中有2個元素     一維數組的名稱分別為arr[0], arr[1], arr[2]     給第一個一維數組1腳標位賦值為78寫法是:arr[0][1] = 78;

格式2:int[][] arr = new int[3][];

  二維數組中有3個一維數組     每個一維數組都是預設初始化值null     可以對這個三個一維數組分別進行初始化

    arr[0] = new int[3];

    arr[1] = new int[1];

    arr[2] = new int[2];

 

格式3:int[][] arr = {{3,8,2},{2,7},{9,0,1,6}};

  定義一個名稱為arr的二維數組     二維數組中的有三個一維數組     每一個一維數組中具體元素也都已初始化     第一個一維數組 arr[0] = {3,8,2};     第二個一維數組 arr[1] = {2,7};     第三個一維數組 arr[2] = {9,0,1,6};     第三個一維數組的長度表示方式:arr[2].length;

 

註意特殊寫法情況:int[] x,y[]; x是一維數組,y是二維數組。

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 顧名思義,可變參數函數就是參數數量可變的函數,即函數的參數數量是不確定的,比如方法getnumbertotal()我們即可以傳遞一個參數,也可以傳遞5個、6個參數 使用可變參數必須註意的是: 必須包含一個普通參數 我們可以給va_start()方法傳遞一個NULL,但是需要通過第一個參數知道可變參數 ...
  • 1、vagrant 為了模擬集群效果,使用vagrant。 1.1、首先下載vagrant https://www.vagrantup.com/downloads.html 說明:瀏覽器下載可能比較慢,可以通過迅雷下載。 1.2、下載之後,安裝vagrant mac中下一步到底就可以。 說明:雖然v ...
  • 在C語言中,函數名也是指針變數,比如創建了一個add(int n,int m)的函數的同時也創建了一個名為add的指針變數,因此我們可以把函數指針當作一種類型為它賦值、當作參數傳遞等操作 C語言創建函數指針的公式: 返回類型 (*指針變數)(參數類型) 雖然函數指針是指針,但是在使用的時候我們可以省 ...
  • 線程 1.線程的實現 (1)實現線程主要有3中方式:使用內核線程實現,使用用戶線程實現和使用用戶線程加輕量級進程混合實現。 (2)使用內核線程實現 內核線程就是直接由操作系統內核支持的線程,這種線程由內核來完成線程切換,內核通過操縱調度器對線程進行調度,並負責將線程映射到處理器上。 局限性:由於是基 ...
  • 1.request.getSession().getServletContext().getResourceAsStream("/WEB-INF/classes/a.txt""); / 相對對於項目的根路徑 2.getClass().getClassLoader().getResourceAsStr ...
  • 無論是BS還是CS得項目,沒有資料庫是不行的。 本文是對python對mysql的操作的總結。適合有一定基礎的開發者,最好是按部就班學習的人閱讀。因為我認為人生不能永遠都是從零開始,那簡直就是災難。 對於python2.7 和mysql5.7.11 的安裝或使用遇到問題儘量查閱官網的文檔。 pyth ...
  • Git for PyCharm Using PyCharm's Git integration locally:http://confluence.jetbrains.com/display/PYH/Using+PyCharm%27s+Git+integration+locally 創建git集 p... ...
  • #!/usr/bin/env python #coding:utf-8 #定義字典 dic = { "上海":{ "浦東":["張江","唐鎮"], "嘉定":["婁塘","封浜"], "寶山":["羅店","月浦"] }, "北京":{ "海澱":["上地","中關村"], "朝陽":[" ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...