###04.01_Java語言基礎(控制跳轉語句break語句)
* A:break的使用場景* 只能在switch和循環(while,for,do_while())中案例:class Demo1_Break {
public static void main(String[] args) {
//break;寫在這報錯,break只能用在循環和switch語句中
for (int x = 1;x <= 10 ;x++ ) {
if (x == 4) {
break; //跳出循環
}
System.out.println("x
class Demo4_Return {
public static void main(String[] args) {
for (int i = 1;i <= 10 ;i++ ) {
if (i == 4) {
//break; //停止循環
return; //返回的意思,用來返回方法
}
}
System.out.println("循環結束了");
}
}
= " + x);
}
}
}
###04.02_Java語言基礎(控制跳轉語句continue語句)
* A:continue的使用場景* 只能在循環中 ,提前結束本次循環(循環體中continue後面的語句將不再執行),繼續進行下一次/** A:continue的使用場景* 只能在循環中*/案例:class Demo2_Continue {
public static void main(String[] args) {
for (int x = 1;x <= 10 ;x++ ) {
if (x == 4) {
continue; //終止本次循環,繼續下次循環
}
System.out.println("x = " + x);
}
}
}
###04.03_Java語言基礎(控制跳轉語句標號)
* 標號:標記某個循環對其控制* 標號組成規則:其實就是合法的標識符案例:class Demo3_Mark { //mark 標記
public static void main(String[] args) {
/*outer: for (int i = 1;i <= 10 ;i++ ) { //a就是標號,只要是合法的標識符即可
System.out.println("i = " + i);
inner: for (int j = 1;j <= 10 ;j++ ) {
System.out.println("j = " + j);
break outer;
}
}*/
System.out.println("大家好");
http://www.heima.com //這裏http:就是一個標號,而後面的//是java中的註釋,所以相當於給輸出語句做了一個標記,沒有什麼實際的意義
System.out.println("纔是真的好");
}
}
###04.04_Java語言基礎(控制調整語句練習)
* A:練習題*for(int x=1; x<=10; x++) {if(x%3==0) {//在此處填寫代碼}System.out.println(“Java基礎班”);}我想在控制檯輸出2次:“Java基礎班“我想在控制檯輸出7次:“Java基礎班“我想在控制檯輸出13次:“Java基礎班“案例:class Test1 {
public static void main(String[] args) {
for(int x=1; x<=10; x++) {
if(x%3==0) {
//break; //我想在控制檯輸出2次:“Java基礎班“
//continue; //我想在控制檯輸出7次:“Java基礎班“
System.out.println("Java基礎班");//我想在控制檯輸出13次:“Java基礎班“
}
System.out.println("Java基礎班");
}
}
}
###04.05_Java語言基礎(控制跳轉語句return語句)
* A:return的作用* 返回* 其實它的作用不是結束循環的,而是結束方法的。* B:案例演示* return和break以及continue的區別?* return是結束方法* break是跳出循環* continue是終止本次循環繼續下次循環案例:
###04.06_Java語言基礎(方法概述和格式說明)
* A:爲什麼要有方法* 提高代碼的複用性 //* B:什麼是方法* 完成特定功能的代碼塊。* C:方法的格式*修飾符 返回值類型 方法名(參數類型 參數名1,參數類型 參數名2...) {方法體語句;return 返回值;}* D:方法的格式說明* 修飾符:目前就用 public static。後面我們再詳細的講解其他的修飾符。* 返回值類型:就是功能結果的數據類型。* 方法名:符合命名規則即可。方便我們的調用。* 參數:* 實際參數:就是實際參與運算的。* 形式參數;就是方法定義上的,用於接收實際參數的。* 參數類型:就是參數的數據類型* 參數名:就是變量名* 方法體語句:就是完成功能的代碼。* return:結束方法的。* 返回值:就是功能的結果,由return帶給調用者。
###04.07_Java語言基礎(方法之求和案例及其調用)
* A:如何寫一個方法* 1,明確返回值類型* 2,明確參數列表* B:案例演示* 需求:求兩個數據之和的案例* C:方法調用圖解
案例:class Demo2_Sum {
public static void main(String[] args) {
/*int a = 10;
int b = 20;
int sum = a + b;
System.out.println(sum);
int c = 30;
int d = 40;
int sum2 = c + d;
System.out.println(sum2);*/
int sum = add(10,20);
System.out.println(sum);
//add(30,40); //有返回值方法的單獨調用,沒有意義
System.out.println(add(30,40)); //這樣調用是可以,but如果需要用這個結果不推薦這樣調用
//盤子 = 炒菜(地溝油,蘇丹紅,鎘大米,爛白菜);
}
public static int add(int a,int b) { //int a = 10,int b = 20
int sum = a + b;
return sum; //如果有返回值必須用return語句帶回
}
/*
盤子 炒菜(油,調料,米,菜) {
炒菜的動作
return 一盤菜;
}
*/
}
###04.08_Java語言基礎(方法的注意事項)
* A:方法調用(有具體返回值)* a:單獨調用,一般來說沒有意義,所以不推薦。* b:輸出調用,但是不夠好。因爲我們可能需要針對結果進行進一步的操作。* c:賦值調用,推薦方案。* B:案例演示* a:方法不調用不執行* b:方法與方法是平級關係,不能嵌套定義* c:方法定義的時候參數之間用逗號隔開* d:方法調用的時候不用在傳遞數據類型* e:如果方法有明確的返回值,一定要有return帶回一個值
###04.09_Java語言基礎(方法的練習)
* A:案例演示* 需求:鍵盤錄入兩個數據,返回兩個數中的較大值* B:案例演示* 需求:鍵盤錄入兩個數據,比較兩個數是否相等案例:import java.util.Scanner;
class Test1_Method {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); //創建鍵盤錄入對象
System.out.println("請輸入第一個整數:");
int x = sc.nextInt(); //將鍵盤錄入的整數存儲在x中
System.out.println("請輸入第二個整數:");
int y = sc.nextInt(); //將鍵盤錄入的整數存儲在y中
//int max = getMax(x,y);
//System.out.println(max);
boolean b = isEquals(x,y);
System.out.println(b);
}
/*
返回連個整數的較大值
1,明確返回值類型 int
2,明確參數列表 int a,int b
*/
public static int getMax(int a,int b) {
return a > b ? a : b;
}
/*
判斷兩個整數是否相等
1,明確返回值類型 boolean
2,明確參數列表 int a,int b
*/
public static boolean isEquals(int a,int b) { //isEquals 是否相等
return a == b;
}
}
###04.10_Java語言基礎(方法之輸出星形及其調用)
* A:案例演示* 需求:根據鍵盤錄入的行數和列數,在控制檯輸出星形* B:方法調用:(無返回值,void)* 單獨調用* 輸出調用(錯誤)* 賦值調用(錯誤)案例:import java.util.Scanner;
class Demo3_Method {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); //創建鍵盤錄入對象
System.out.println("請輸入行數:");
int row = sc.nextInt(); //將鍵盤錄入的行數存儲在row中
System.out.println("請輸入列數:");
int column = sc.nextInt(); //將鍵盤錄入的列數存儲在column中
//System.out.println(print(row,column)); //錯誤: 此處不允許使用 '空' 類型,返回值是void的方法不能輸出調用
//返回值是void的方法只能單獨調用
print(row,column);
}
/*
在控制檯輸出矩形星形
1,明確返回值類型,經分析沒有具體的返回值類型,void
2,明確參數列表int a,int b
*/
public static void print(int a,int b) {
for (int i = 1;i <= a ;i++ ) { //行數
for (int j = 1;j <= b ;j++ ) { //列數
System.out.print("*");
}
System.out.println();
}
//return ; //如果返回值類型是void,return可以省略,即使省略系統也會默認給加上,形式是return;
}
}
###04.11_Java語言基礎(方法的練習)
* A:案例演示* 需求:根據鍵盤錄入的數據輸出對應的乘法表案例:import java.util.Scanner;
class Test2_Method {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); //創建鍵盤錄入對象
System.out.println("請錄入一個整數,範圍在1-9之間");
int num = sc.nextInt(); //將鍵盤錄入的整數存儲在num中
print99(num);
}
/*
打印99乘法表
1,返回值類型void
2,參數列表,int a
*/
public static void print99(int a) {
for (int i = 1;i <= a ;i++ ) { //行數
for (int j = 1;j <= i ;j++ ) { //列數
System.out.print(j + "*" + i + "=" + (i * j) + "\t" );
}
System.out.println();
}
}
}
###04.12_Java語言基礎(方法重載概述和基本使用)
* A:方法重載概述* 求和案例* 2個整數* 3個整數* 4個整數* B:方法重載:* 在同一個類中,方法名相同,參數列表不同。與返回值類型無關。* 參數列表不同:* A:參數個數不同* B:參數類型不同* C:參數的順序不同(算重載,但是在開發中不用)案例:class Demo4_Overload { //overload重載
public static void main(String[] args) {
double sum1 = add(10,20.1);
System.out.println(sum1);
int sum2 = add(10,20,30);
System.out.println(sum2);
double sum3 = add(12.3,13);
System.out.println(sum3);
}
/*
求兩個整數的和
1,返回值類型int
2,參數列表 int a,int b
*/
public static double add(int a,double b) {
return a + b;
}
/*
求三個整數的和
1,返回值類型int
2,參數列表 int a,int b,int c
*/
public static int add(int a,int b,int c) {
return a + b + c;
}
/*
求兩個小數的和
1,返回值類型double
2,參數列表 double a,double b
*/
public static double add(double a,int b) {
return a + b;
}
}
###04.13_Java語言基礎(方法重載練習比較數據是否相等)
* A:案例演示* 需求:比較兩個數據是否相等。* 參數類型分別爲兩個int類型,兩個double類型,並在main方法中進行測試案例:class Test3_Overload {
public static void main(String[] args) {
boolean b1 = isEquals(10,10);
System.out.println(b1);
boolean b2 = isEquals(10.5,10.5);
System.out.println(b2);
}
/*
比較兩個數據是否相等
1,返回值類型boolean
2,參數列表int a,int b
*/
public static boolean isEquals(int a,int b) {
return a == b;
}
/*
比較兩個數據是否相等
1,返回值類型boolean
2,參數列表double a,double b
*/
public static boolean isEquals(double a,double b) {
return a == b;
}
}
###04.14_Java語言基礎(數組概述和定義格式說明)(瞭解)
* A:爲什麼要有數組(容器)* 爲了存儲同種數據類型的多個值* B:數組概念* 數組是存儲同一種數據類型多個元素的集合。也可以看成是一個容器。* 數組既可以存儲基本數據類型,也可以存儲引用數據類型。
* C:數組定義格式數據類型[] 數組名 = new 數據類型[數組的長度];案例:class Demo1_Array {
public static void main(String[] args) {
int x = 10;
x = 20;
System.out.println("x = " + x);
//數據類型[] 數組名 = new 數據類型[數組的長度];
int[] arr = new int[5]; //可以存儲五個int類型的數據
/*
左邊:
int:數據類型
[]:代表的數組,幾個中括號就代表幾維數組
arr:合法的標識符
右邊:
new:創建新的實體或對象
int:數據類型
[]:代表的數組
5:代表數組的長度
*/
}
}
###04.15_Java語言基礎(數組的初始化動態初始化)(掌握)
* A:什麼是數組的初始化* 就是爲數組開闢連續的內存空間,併爲每個數組元素賦予值* B:如何對數組進行初始化* a:動態初始化 只指定長度,由系統給出初始化值* int[] arr = new int[5];* b:靜態初始化 給出初始化值,由系統決定長度* C:動態初始化的格式:* 數據類型[] 數組名 = new 數據類型[數組長度];* D:案例演示* 輸出數組名稱和數組元素/*整數類型:byte,short,int,long默認初始化值都是0浮點類型:float,double默認初始化值都是0.0布爾類型:boolean默認初始化值false字符類型:char默認初始化值'\u0000' 之前講過'',只能放一個字符,但是'\'代表轉義字符,u代表unicode編碼,java採用的是unicode編碼,\u相當於把後面的4個0給轉義了。char在內存中佔的兩個字節,是16個二進制位\u0000,每一個0其實代表的是16進制的0,那麼四個0就是代表16個二進制位
[I@19bb25a
[代表是數組,幾個就代表幾維I代表是int類型@是固定的19bb25a代表的是數組的地址值*/class Demo2_Array {
public static void main(String[] args) {
//數據類型[] 數組名 = new 數據類型[數組長度];
int[] arr = new int[5]; //動態初始化,在內存中開闢連續的5塊空間
System.out.println(arr[0]); //系統給出默認初始化值,整數類型的都是0
arr[0] = 10;
System.out.println(arr[0]);
System.out.println(arr); //[I@19bb25a
}
}
###04.16_Java語言基礎(Java中的內存分配以及棧和堆的區別)
* A:棧(掌握)* 存儲局部變量* B:堆(掌握)* 存儲new出來的數組或對象* C:方法區* 面向對象部分講解* D:本地方法區 (native)* 和系統相關* E:寄存器* 給CPU使用當編譯時會生成class文件,這些class文件會保存在硬盤上,當運行時,class文件被加載到內存中,內存中要進行代碼的執行,此時有進棧的也有進堆的,誰進棧,誰進堆,要看它屬於哪一塊,如果是局部變量就進棧,new出來的東西就進堆。一定要跑到內存中才能執行,如果在電腦中開了過多的應用程序,電腦就會卡。案例:class Demo3_Array {
public static void main(String[] args) {
int[] arr = new int[3];
}
###04.17_Java語言基礎(數組的內存圖解1一個數組)(掌握)
* A:畫圖演示* 一個數組案例:class Demo3_Array {
public static void main(String[] args) {
int[] arr = new int[3]; //動態初始化,創建3塊連續的空間
System.out.println(arr);
arr[0] = 10;
arr[1] = 20;
System.out.println(arr[0]);
System.out.println(arr[1]);
}
}
###04.18_Java語言基礎(數組的內存圖解2二個數組)(瞭解)
* A:畫圖演示* 二個不同的數組案例:class Demo4_Array {
public static void main(String[] args) {
int[] arr1 = new int[3]; //創建數組,長度爲3
int[] arr2 = new int[3]; //創建數組,長度爲3
System.out.println(arr1); //打印數組的地址值
System.out.println(arr2);
arr1[0] = 10; //給第一個數組中第一個元素賦值
arr2[1] = 20; //給第二個數組中第二個元素賦值
System.out.println(arr1[0]);
System.out.println(arr1[1]);
System.out.println(arr1[2]);
System.out.println("--------------------------------------");
System.out.println(arr2[0]);
System.out.println(arr2[1]);
System.out.println(arr2[2]);
}
}
###04.19_Java語言基礎(數組的內存圖解3三個引用兩個數組)(瞭解)
* A:畫圖演示* 三個引用,有兩個數組的引用指向同一個地址案例://三個引用兩個數組class Demo5_Array {
public static void main(String[] args) {
int[] arr1 = new int[3];
int[] arr2 = new int[5];
int[] arr3 = arr2;
System.out.println(arr1);
System.out.println(arr2);
System.out.println(arr3);
arr1[0] = 10;
arr1[1] = 20;
arr2[1] = 30;
arr3[1] = 40;
arr3[2] = 50;
System.out.println(arr1[0]);
System.out.println(arr1[1]);
System.out.println(arr1[2]);
System.out.println("-------------------------------");
System.out.println(arr2[0]);
System.out.println(arr2[1]);
System.out.println(arr2[2]);
System.out.println(arr2[3]);
System.out.println(arr2[4]);
System.out.println("-------------------------------");
System.out.println(arr3[0]);
System.out.println(arr3[1]);
System.out.println(arr3[2]);
System.out.println(arr3[3]);
System.out.println(arr3[4]);
}
}
###04.20_Java語言基礎(數組的初始化靜態初始化及內存圖)(掌握)
* A:靜態初始化的格式:* 格式:數據類型[] 數組名 = new 數據類型[]{元素1,元素2,…};* 簡化格式:* 數據類型[] 數組名 = {元素1,元素2,…};* B:案例演示* 對數組的解釋* 輸出數組名稱和數組元素* C:畫圖演示* 一個數組案例:class Demo6_Array {
public static void main(String[] args) {
//數據類型[] 數組名 = new 數據類型[]{元素1,元素2,…};
//int[] arr = new int[5]{11,22,33,44,55}; //不允許動靜結合
int[] arr2 = {11,22,33,44,55}; //靜態初始化的簡寫形式
//int[] arr; //聲明數組引用
//arr = new int[]{11,22,33,44,55};
//int[] arr2;
//arr2 = {11,22,33,44,55}; //簡寫形式聲明和賦值在同一行,這樣寫會報錯
System.out.println(arr2);
System.out.println(arr2[4]);
}
}
###04.21_Java語言基礎(數組操作的兩個常見小問題越界和空指針)(掌握)
* A:案例演示* a:ArrayIndexOutOfBoundsException:數組索引越界異常* 原因:你訪問了不存在的索引。* b:NullPointerException:空指針異常* 原因:數組已經不在指向堆內存了。而你還用數組名去訪問元素。案例:class Demo7_Exception {
public static void main(String[] args) {
int[] arr = new int[5]; //0x0011
//System.out.println(arr[-1]); //當訪問數組中不存在的索引,會出現索引越界異常
arr = null;
System.out.println(arr[0]); //當數組引用賦值爲null,再去調用數組中的元素就會出現空指針異常
}
}
###04.22_Java語言基礎(數組的操作1遍歷)(掌握)
* A:案例演示* 數組遍歷:就是依次輸出數組中的每一個元素。* 數組的屬性:arr.length數組的長度* 數組的最大索引:arr.length - 1;案例:class Demo8_Array {
public static void main(String[] args) {
int[] arr = {11,22,33,44,55};
/*System.out.println(arr[0]);//這麼做代碼的複用性太差,我們學習了循環
System.out.println(arr[1]);
System.out.println(arr[2]);
System.out.println(arr[3]);
System.out.println(arr[4]);*/
for (int i = 0;i < 5 ;i++ ) {
System.out.println(arr[i]);
}
System.out.println("---------------");
//arr.length 代表的是數組的長度
System.out.println(arr.length);
for (int i = 0;i < arr.length ;i++ ) {
System.out.println(arr[i]);
}
int[] arr2 = {3,4,5};
print(arr2);
}
/*
數組的遍歷
1,返回值類型void
2,參數列表int[] arr
*/
public static void print(int[] arr) {
for (int i = 0;i < arr.length ;i++ ) {
System.out.print(arr[i] + " ");
}
}
}
###04.23_Java語言基礎(數組的操作2獲取最值)(掌握)
* A:案例演示* 數組獲取最值(獲取數組中的最大值最小值)案例:class Demo9_Array {
public static void main(String[] args) {
int[] arr = {33,77,22,44,55};
int max = getMax(arr);
System.out.println(max);
}
/*
獲取數組中最大值
1,返回值類型int
2,參數列表int[] arr
*/
public static int getMax(int[] arr) {
int max = arr[0];
for (int i = 1;i < arr.length ;i++ ) { //從數組的第二個元素開始遍歷
if (max < arr[i]) { //如果max記錄的值小於的數組中的元素
max = arr[i]; //max記錄住較大的
}
}
return max;
}
}
###04.24_Java語言基礎(數組的操作3反轉)(掌握)
* A:案例演示* 數組元素反轉(就是把元素對調)案例:class Demo10_Array {
public static void main(String[] args) {
int[] arr = {11,22,33,44,55};
reverseArray(arr);
print(arr);
}
/*
數組元素反轉
1,明確返回值類型void
2,明確參數列表int[] arr
*/
public static void reverseArray(int[] arr) {
for (int i = 0;i < arr.length / 2 ; i++) {
//arr[0]和arr[arr.length-1-0]交換
//arr[1]和arr[arr.length-1-1]交換
//arr[2]和arr[arr.lentth-1-2]
//...
int temp = arr[i];
arr[i] = arr[arr.length-1-i];
arr[arr.length-1-i] = temp;
}
}
public static void reverseArray1(int[] arr) {
for(int i=0,j=arr.length-1;i<=j;i++,j--) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
/*
數組遍歷
1,明確返回值類型void
2,明確參數列表int[] arr
*/
public static void print(int[] arr) {
for (int i = 0;i < arr.length ;i++ ) { //遍歷數組中的每一個元素
System.out.print(arr[i] + " "); //打印在控制檯
}
}
}
###04.25_Java語言基礎(數組的操作4查表法)(掌握)
* A:案例演示* 數組查表法(根據鍵盤錄入索引,查找對應星期)案例:import java.util.Scanner;
class Demo11_Array {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("請輸入對應的星期範圍在1-7");
int week = sc.nextInt();
System.out.println("星期" + getWeek(week));
}
/*
根據索引返回對應的星期
1,返回值類型char
2,參數列表int week
*/
public static char getWeek(int week) {
char[] arr = {' ','一','二','三','四','五','六','日'}; //定義了一張星期表
return arr[week]; //通過索引獲取表中的元素
}
}
###04.26_Java語言基礎(數組的操作5基本查找)(掌握)
* A:案例演示* 數組元素查找(查找指定元素第一次在數組中出現的索引)案例:class Demo12_Array {
public static void main(String[] args) {
int[] arr = {11,22,33,44,55,66,77};
int index = getIndex(arr,88);
System.out.println(index);
}
/*
查找元素索引
1,返回值類型int
2,明確參數列表,int[] arr,int value
*/
public static int getIndex(int[] arr,int value) {
for (int i = 0;i < arr.length ;i++ ) { //數組的遍歷
if (arr[i] == value) { //如果數組中的元素與查找的元素匹配
return i;
}
}
return -1;
}
}
###04.27_day04總結
把今天的知識點總結一遍。