學(xué)習(xí)記錄之java語言基礎(chǔ)
循環(huán)結(jié)構(gòu)
for結(jié)構(gòu):應(yīng)用率最高,與次數(shù)相關(guān)的循環(huán)
語法:
??????for(要素1;要素2;要素3){
?????????語句塊/循環(huán)體--------------反復(fù)執(zhí)行的代碼 ?4
??????}
三種循環(huán)結(jié)構(gòu)如何選擇
先看循環(huán)是否與次數(shù)相關(guān);
若相關(guān)直接使用for循環(huán)
若無關(guān),先判斷要素要素1余要素3是否相同:
若相同------使用 do...while
若不同------使用while
嵌套循環(huán):
循環(huán)中套循環(huán),一般多行多列時(shí)使用,常常外層控制行,內(nèi)層控制列
執(zhí)行規(guī)則,外層循環(huán)走一次,內(nèi)層循環(huán)走全部
建議:嵌套的層數(shù)越少越好,能一層就不用兩層,break關(guān)鍵字只能跳出當(dāng)前一層循環(huán)
數(shù)組:
是一種數(shù)據(jù)類型(引用類型)
相同數(shù)據(jù)類型元素的集合
定義:聲明整型數(shù)組arr包含10個(gè)元素,每個(gè)元素都是int型,默認(rèn)值為0;
訪問:訪問的是數(shù)組中的元素:通過(數(shù)組名.length)獲取數(shù)組的長度(元素個(gè)數(shù))
通過下標(biāo)/索引來訪問數(shù)組中的元素,下標(biāo)從0開始,最大到數(shù)組長度-1;
遍歷/迭代:從頭到尾挨個(gè)走一遍
ArrayIndexOutOfBoundsException:數(shù)組下標(biāo)越界異常
復(fù)制:System.arratcopy(a,1,b,0,4)
//a:源數(shù)組
//1:源數(shù)組的起始下標(biāo)
//b:目標(biāo)數(shù)組
//0:目標(biāo)數(shù)組的起始下標(biāo)
//4:要復(fù)制的元素個(gè)數(shù)
數(shù)組擴(kuò)容: System.Arrays.copyOf(a,a.length+1)
注:數(shù)組的擴(kuò)容和縮容其本質(zhì)都是對(duì)數(shù)組的復(fù)制,而不是在原數(shù)組上修改
排序:Arrays.sort(arr)默認(rèn)是對(duì)arr數(shù)組進(jìn)行升序排序
方法: 函數(shù)、過程
封裝一段特定的業(yè)務(wù)邏輯功能
盡可能獨(dú)立,一個(gè)方法只干一件事
方法可以被反復(fù)多次調(diào)用
可以減少代碼重復(fù),有利于代碼維護(hù)
何時(shí)用:假設(shè)有一個(gè)功能,在很多地方都得使用,就將功能封裝到一個(gè)方法中
方法的定義
無參無返回值
???public static void say(){
???????System.out.println("大家好,我叫張三,今年18歲了");
???}
有參無返回值
???public static void sayHi(String name){ //形參
???????System.out.println("大家好,我叫"+name+",今年38歲了");
???}
有參有返回值
???public static int plus(int num1,int num2){
???????int num = num1+num2;
???????return num; //返回的是num里面的那個(gè)數(shù)
???????//return num1+num2; //返回的是num1與num2的和
???}
無參有返回值
???public static int[] testArray(){
???????int[] arr = new int[10];
???????for(int i=0;i<arr.length;i++){
???????????arr[i] = (int)(Math.random()*100);
???????}
???????return arr;
???}
方法的調(diào)用:
無返回值:方法名(有參傳參);
public class MethodDemo {
?????????public static void main(String[] args) {
?????????????say(); //調(diào)用say()方法
?????
?????????????//sayHi(); //編譯錯(cuò)誤,有參則必須傳參
?????????????//sayHi(250); //編譯錯(cuò)誤,參數(shù)類型必須匹配
?????????????sayHi("zhangsan"); //String name="zhangsan" ?//實(shí)參
?????????????sayHi("lisi"); //String name="lisi" ?????????//實(shí)參
?????????????sayHi("wangwu"); //String name="wangwu" ?????//實(shí)參
?????
?????????????sayHello("zhangsan",25); //實(shí)參 String name="zhangsan",int age=25
?????????????sayHello("lisi",24); //實(shí)參
?????????}
?????}
有返回值:數(shù)據(jù)類型 ?變量 ?= ?方法名(有參傳參);
public class MethodDemo {
?????????public static void main(String[] args) {
?????????????double a = getNum(); //getNum()的值就是return后的那個(gè)數(shù)
?????????????System.out.println(a); //8.88,模擬對(duì)返回值的后續(xù)操作
?????
?????????????int b = plus(5,6); //plus(5,6)的值就是return后的那個(gè)數(shù)
?????????????System.out.println(b); //11,模擬對(duì)返回值的后續(xù)操作
?????
?????????????int m=5,n=6;
?????????????int c = plus(m,n); //傳遞的是m和n里面的數(shù)
?????????????System.out.println(c); //11,模擬對(duì)返回值的后續(xù)操作
?????
?????????????int[] d = testArray();
?????????????System.out.println("長度為:"+d.length); //10,模擬對(duì)返回值的后續(xù)操作
?????????????for(int i=0;i<d.length;i++){ //模擬對(duì)返回值的后續(xù)操作
?????????????????System.out.println(d[i]);
?????????????}
?????????}
?????}
return:
return值;1.結(jié)束方法的執(zhí)行 ?2.返回結(jié)果給調(diào)用方
return; 1.結(jié)束方法的執(zhí)行