java輸入輸出與方法詳細代碼示例
輸入與輸出
不論哪一個語言,都離不了輸入與輸出,下面我們來分別對輸入和輸出進行詳細介紹。
輸出
在Java中輸出的語法如下:(在idea中,可以輸sout簡寫形式,然后會有提示)
System.out.println("換行的"); System.out.print("不換行的"); String s = "格式化的"; System.out.printf("s=%s\n",s);
在Java中輸出有以上三種形式,println是帶換行的,print是不帶換行的,printf是格式化輸出的。
對于格式化字符串如下表:
輸入
Java中的輸入是Scanner函數(shù),使用Scanner時需要引入包后再使用Scanner方法
import java.util.Scanner Scanner scanner = new Scanner(System.in); //從控制臺上輸入一個整數(shù) int num = scanner.nextInt();
這里我來給大家介紹一下Scanner常用的一些方法:
- hasNextInt:一般用作循環(huán)輸入整數(shù)的時候,判斷是否有下一個整數(shù)輸入,有進行一些操作。
- nextInt:從鍵盤輸入一個整數(shù)
- nextDouble:從鍵盤輸入一個小數(shù)
- nextLine:一般用于獲取字符串,可以獲取帶空格的字符串
- next:也用于字符串的獲取,但如果字符串中有空格,則只能的到空格前面的內(nèi)容。
當(dāng)然Scanner還有很多方法,這里給大家推薦個軟件,在這里可以查看某些類里面的方法等。
Random
這里穿插講述一個函數(shù),隨機數(shù)函數(shù)也就是Random,這個函數(shù)用來生成隨機數(shù)。對于我們自己練習(xí)的時候應(yīng)該會用到。在這里我就不做過多的一些官方解釋了,我這就主要介紹主要用法。
//種子為系統(tǒng)的時間,隨機數(shù)生成器每次運行時生成的隨機數(shù)不同 Random random = new Random(); //種子為自己填寫的一個數(shù),每次根據(jù)這個數(shù)生成隨機數(shù),由于種子確定了,所以每次生成的隨機數(shù)都一樣。 Random random = new Random(32);
用于獲取一個整數(shù)隨機數(shù)包含兩個方法nextInt()和nextInt(number)
前者數(shù)字的范圍并不確定,而是默認(rèn)的范圍,生成的隨機數(shù)會很大。一般我們都采用后者,當(dāng)我們設(shè)置number=100時,生成的隨機數(shù)范圍為[0,100)這個范圍就可控了,在我們的掌控中了。
當(dāng)然Random也有很多不同的方法,大家詳細可以去上面我分享的軟件中查閱。
方法
在C語言中方法也稱為函數(shù),為什么會有方法呢?目的是為了可以模塊化管理代碼,對于重復(fù)使用代碼的地方,只需要調(diào)用即可,減少了代碼量。
那么方法是如何定義的呢?
修飾符 返回值類型 方法名稱([參數(shù)類型 形參 ...]){ 方法體代碼; [return 返回值]; }
修飾符有很多,但初期我們剛編寫的時候先可以都寫成public static,其余的我們后面詳細介紹。
返回值類型,一個方法可以沒有返回值,也就是void,也可以有不同類型的返回值,看自己需要什么樣的,int,double,數(shù)組,String等
方法名稱為自己取的方法名字,這里要命名規(guī)范,需要為小駝峰形式。
參數(shù)類型,也就是基本數(shù)據(jù)類型或者引用類型
形參,也就是在方法中定義的變量名
方法體代碼也就是具體操作的部分
return 返回值,看前面返回類型是啥,若是void就不用返回,如果為Int就得返回一個int類型的數(shù),返回值類型應(yīng)與返回的值類型對應(yīng)。
注意!
- Java中方法不用聲明。
- Java中方法不可以嵌套定義。下面那樣就是錯誤的。
public static void func(int a) { System.out.print("方法一"); public static void func2(int a) { System.out.print("方法二"); } }
- Java中的方法需要在類中定義。
- 定義方法的時候,不會執(zhí)行方法體里面的語句。只有調(diào)用的時候才會執(zhí)行里面的語句。
- 一個方法可以被調(diào)用多次。
方法調(diào)用的執(zhí)行過程
我們可以在idea中調(diào)試,來一步一步的看執(zhí)行過程,這里我用例子來給大家描述一下執(zhí)行過程。
public static int add(int a, int b) { System.out.println("方法中"); return a + b; } public static void main(String[] args) { int num = add(2,3); System.out.println(num); }
- 程序運行進入到main方法中(main方法為程序的入口),然后執(zhí)行里面的代碼。
- 看到調(diào)用了方法add,并且傳遞了參數(shù)2,3。
- 計算機找到方法地址,進入到方法add中。
- 執(zhí)行add方法里面的代碼,先進行了輸出,然后返回了一個值。
- 返回值也就代表方法中的內(nèi)容已經(jīng)結(jié)束了,我們回到main方法中,將返回的值賦給了num。
- 最后輸出num。
形參和實參的關(guān)系(重要重要!?。?/h3>
什么是形參什么是實參呢?
上面橙色框框的是形參,下面紅色框框的是實參。那他倆究竟有什么關(guān)系呢?
基本數(shù)據(jù)類型
如果參數(shù)類型是基本數(shù)據(jù)類型,那么她們兩者之間的關(guān)系就是將實參拷貝到形參。然后形參再去完成一些操作。這里需要記住一個知識點,局部變量是存儲到棧上的。
public static void add(int a, int b) { a++; b++; } public static void main(String[] args) { int a = 2; int b = 3; add(2,3); System.out.println(a + "," + b); }
這個代碼最后運行結(jié)果是2,3。希望下面的圖示能讓大家明白形參和實參的關(guān)系。
到最后一步,我們也就知道了為什么輸出的是2,3了,你在add方法中改變的是拷貝后的a和b的值,并不是原來的。
引用數(shù)據(jù)類型
對于引用數(shù)據(jù)類型,這里面形參和實參也比較重要了!也比較容易出錯。這里我們用數(shù)組來舉例。這里也要注意一個知識點,就是對象是存儲到堆上的。我們同樣圖示方法展示。
public static void change(int [] arr) { arr[0] = 10; } public static void main(String[] args) { int[] array = {1,2,3,4}; change(array); System.out.println(Arrays.toString(array));//Arrays.toString是將數(shù)組轉(zhuǎn)為字符串,快速輸出。后續(xù)講數(shù)組的時候再詳細講。 }
該代碼的最后結(jié)果為[10,2,3,4]。數(shù)組為引用數(shù)據(jù),變量里面存儲的為地址。
希望大家看到這個圖示能懂得引用類型形參和實參的關(guān)系。數(shù)組還有一個點喜歡考,也是形參和實參的關(guān)系。
public static void change(int[] array) { array = new int[10]; array[0] = 1; System.out.println(Arrays.toString(array)); } public static void main(String[] args) { int[] array = {1,2,3,4,5}; change(array); }
上面這個,雖然實參將地址傳過去了,但是在方法中,又新創(chuàng)建了一個對象,然后array指向了新對象,修改的數(shù)據(jù)也是新對象里面的,然后當(dāng)方法執(zhí)行完畢后,返回main方法,形參不再指向任何東西,創(chuàng)建的新對象由于沒有人指向,會被系統(tǒng)自動回收。
方法重載
這個和后面要學(xué)到的重寫要進行區(qū)分,在這我們來介紹一下什么是方法重載。
在Java中我們?nèi)绻玫椒椒〞r候,肯定得給方法起名字。但如果功能都一樣,只不過操作的數(shù)據(jù)類型不一樣,還得繼續(xù)重新起名字,那不是很讓人頭疼嘛。所以這也就用到了重載。也就允許同樣功能的方法,方法名字可以一樣。如下:
public static int add(int a, int b) { return a + b; } public static double add(double a, double b) { return a + b; } public static void main(String[] args) { System.out.println(add(1,2)); System.out.println(add(1.5,3.6)); }
這里我們定義了兩個add方法,分別求兩個整數(shù)的和,兩個小鼠的和。
重載的要求:
- 方法名字必須相同
- 參數(shù)列表必須不同(可以是參數(shù)個數(shù)不同,參數(shù)順序不同,參數(shù)數(shù)據(jù)類型不同)
- 對于方法返回類型,對于重載沒有影響,可以相同,可以不同。
方法簽名(了解即可)
對于同樣名字的方法,系統(tǒng)怎么知道我們要用哪一種呢?這就和方法簽名有關(guān)系了。
方法簽名:經(jīng)過編譯器編譯修改過之后方法最終的名字。具體方式:方法全路徑名+參數(shù)列表+返回值類型,構(gòu)成方法完整的名字。
例子如下:
對于其簽名中有一些特殊符號,解釋如下:
遞歸
遞歸就是指自身又調(diào)用自己的方法。在解決一些問題的時候,遞歸的方式會提高效率。
在用遞歸解決問題的時候,往往都需要將問題拆分成一個個小問題來解決。
遞歸需要滿足條件:1.必須有結(jié)束條件(遞歸結(jié)束的出口)2.必須可以將原問題能拆分成子問題,并且子問題和原問題解決方法一致。
遞歸是如何執(zhí)行的呢?請見下圖。
對于遞歸這一塊,不要著急,可以多做些題,慢慢就熟練了,加油!
總結(jié)
到此這篇關(guān)于java輸入輸出與方法的文章就介紹到這了,更多相關(guān)java輸入輸出與方法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java網(wǎng)絡(luò)通信中URL與HTTP編程技術(shù)詳解
要想實現(xiàn)網(wǎng)絡(luò)編程,除了可以使用Socket之外,我們還可以利用URL編程或HTTP編程技術(shù),所以今天這篇文章,就給大家介紹一下URL編程和HTTP編程技術(shù),看看這兩種技術(shù)有什么特點,文中有詳細的代碼講解,需要的朋友可以參考下2023-11-11SpringMVC 文件上傳配置,多文件上傳,使用的MultipartFile的實例
本篇文章主要介紹了SpringMVC 文件上傳配置,詳解介紹了如何使用SpringMVC進行表單上的文件上傳以及多個文件同時上傳的步驟,有興趣的可以了解一下。2016-12-12關(guān)于Java數(shù)組聲明、創(chuàng)建、初始化的相關(guān)介紹
這篇文章主要是關(guān)于Java數(shù)組聲明、創(chuàng)建、初始化的相關(guān)介紹,并給出其對應(yīng)的代碼,需要的朋友可以參考下2015-08-08JAVA編程實現(xiàn)隨機生成指定長度的密碼功能【大小寫和數(shù)字組合】
這篇文章主要介紹了JAVA編程實現(xiàn)隨機生成指定長度的密碼功能,可生成帶有大小寫和數(shù)字組合的隨機字符串,需要的朋友可以參考下2017-07-07