久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

【黑馬程序員】Java中方法的參數傳遞問題

時間:2019-05-13 10:12:42下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關的《【黑馬程序員】Java中方法的參數傳遞問題》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《【黑馬程序員】Java中方法的參數傳遞問題》。

第一篇:【黑馬程序員】Java中方法的參數傳遞問題

【黑馬程序員】Java中方法的參數傳遞問題

最近有很多同學,就算是就業班畢業之后,還依然在問 java方法的調用中值的傳遞問題,實際參數究竟什么時候才會改變?接下來我們先由一個例子來引出大家的問題,請看如下例子,并回答 下面代碼中的四個問題 public class Demo { public static void main(String[] args){ int a = 10;change(a);System.out.println(a);// 1:請問輸出什么?

String str = “abc”;change(str);System.out.println(str);// 2:請問輸出什么?

Student s = new Student(“張三”,13);System.out.println(s);// 輸出 Student [name=張三, age=13] change(s);System.out.println(s);// 3:請問輸出什么? change1(s);System.out.println(s);// 4:請問輸出什么? }

public static void change(String s){ s = s+“def”;} public static void change(int a){ a = a + 10;} public static void change(Student s){ s = new Student(“李四”,14);} public static void change1(Student s){ s.setName(“李四”);s.setAge(14);} } 大家看完上面的題目之后,估計有很多同學能回答出前兩問,1:輸出10, 2:輸出abc,因為這類的參數傳遞在咱們java基礎課程的第5天和第13天都有講到。但是雖然講了,但

黑馬程序員濟南中心 編著

是有很多同學都沒有充分的理解透徹,這也就是為什么大家回答不出 第三問 和 第四問 的原因。實際上第三問的答案是 3:輸出Student [name=張三, age=13] 4:Student [name=李四, age=14]。下面我就給大家講解一下。

首先用一句話來歸納java中參數傳遞:不管是基本類型還是引用類型: 形式參數做賦值操作的時候,實際參數不發生改變,如果在方法里面是改變形式參數內部的一些東西的時候 那么實際參數發生改變。1.不管是基本類型還是引用類型: 形式參數做賦值操作的時候,實際參數不發生改變

(當被調用的方法開始執行的時候,就從方法區里面把方法拿到了棧內存中,形式參數變量也根據傳遞過

去的值進行初始化,當方法用完了,那么該方法在棧內存中的變量也消失了。在所以也就是只在棧內存

中對方法里面變量進行了改變,是不影響實際參數的。而加減乘除、賦值[就算是引用類型之間的賦值,是

不是也只是在棧內存中把地址值進行的賦值]這一系列的賦值操作都是在棧內存中對方法里面變量進行了改

變,而方法執行完畢后 從棧內存中消失了,回到了調用這個方法 的 main方法棧內存中,實際參數原來是

什么 現在依然是什么)

2.如果在方法里面是改變形式參數內部的一些東西的時候 那么實際參數發生改變

(對于引用類型,它隨著參數傳遞到方法里面去的是地址值,指向的是堆中的對象,如果在方法里面通過

這個地址值改變對象內部的一些屬性,即使方法用完了,方法里面的變量的地址值的黑馬程序員濟南中心 編著

指向也消失了,但是

對象內部的一些屬性還是已經改變了,這些屬性不會消失[因為在堆內存中],所以實際參數還是會改變。如

果是基本類型,根本在堆內存中沒有指向,基本類型都在棧內存或者常量池[值更不能被改變]中,所以基本

類型形式參數的改變無論如何是改變不了實際參數的)

3.看完上面的兩句話和解釋,相信大家還是覺得比較抽象,下面我給大家準備了一個代碼案例,每一行代碼都有對應的解釋,看完下面的案例后估計大家就會真正的明白java中參數傳遞,參數改變時機的問題了

public class Demo2 { public static void main(String[] args){

int a = 10;int b = 20;

System.out.println(a+“ ”+b);//10 20 change1(a,b);//形式參數做賦值操作的時候,實際參數不發生改變

//基本類型一般都在棧內存中(所以 堆內存中沒有指向 內部也就沒有東西嘛),//所以值能做一些加減乘除、賦值的操作,//而做完了這些操作,就在占內存中消失了,所以不會影響實際參數 System.out.println(a+“ ”+b);//10 20

System.out.println(“-------------------”);

Student s = new Student();System.out.println(s);//Student [name=null, age=0]

change2(s);//詳見方法內部注釋

//如果在方法里面是改變形式參數內部的一些東西的時候 那么實際參數發生改變 System.out.println(s);//Student [name=hehe, age=1]

System.out.println(“-------------------”);

黑馬程序員濟南中心 編著

String string = “abc”;System.out.println(string);//abc

change3(string);//詳見方法內部注釋

//形式參數做賦值操作的時候,實際參數不發生改變 System.out.println(string);//abc

System.out.println(“-------------------”);

StringBuffer sb = new StringBuffer(“hello”);System.out.println(sb);//hello

change4(sb);//詳見方法內部注釋

//如果在方法里面是改變形式參數內部的一些東西的時候 那么實際參數發生改變 System.out.println(sb);//helloworld

System.out.println(“-------------------”);

int[] arr ={1,2,5,8,4,3};System.out.println(Arrays.toString(arr));//[1, 2, 5, 8, 4, 3] change5(arr,0,1);//詳見方法內部注釋

//如果在方法里面是改變形式參數內部的一些東西的時候 那么實際參數發生改變 System.out.println(Arrays.toString(arr));//[2, 1, 5, 8, 4, 3]

Arrays.sort(arr);System.out.println(Arrays.toString(arr));//[1, 2, 3, 4, 5, 8]

System.out.println(“-------------------”);

StringBuffer sb1 = new StringBuffer(“abcd”);StringBuffer sb2 = new StringBuffer(“efgh”);change6(sb1,sb2);//詳見方法內部注釋 System.out.println(sb1);//abcd

//形式參數做賦值操作的時候,實際參數不發生改變

System.out.println(“-------------------”);Student s1 = new Student(“hehe”,1);Student s2 = new Student(“haha”,20);change7(s1,s2);//詳見方法內部注釋

//形式參數做賦值操作的時候,實際參數不發生改變

System.out.println(s1);//Student [name=hehe, age=1]

} private static void change7(Student s1, Student s2){ //引用類型s1指向的是一個地址值,s2也是指向的地址值,那么把s2的地址值賦給了s1,這

黑馬程序員濟南中心 編著

時候s1指向的地址

//值改變了,而s1內部(堆內存)的東西改變了嗎?沒有啊,等這個方法調用完畢了,地址值的指向也都消失了,//s1還是指向原來的地址值,原來的地址值內部(堆內存)的東西還是沒有改變,所以 賦值操作不會影響實際參數 s1=s2;} private static void change6(StringBuffer sb1, StringBuffer sb2){ //引用類型sb1指向的是一個地址值,sb2也是指向的地址值,那么把sb2的地址值賦給了sb1,這時候sb1指向的地址

//值改變了,而sb1內部(堆內存)的東西改變了嗎?沒有啊,等這個方法調用完畢了,地址值的指向也都消失了,//sb1還是指向原來的地址值,原來的地址值內部(堆內存)的東西還是沒有改變,所以 賦值操作不會影響實際參數 sb1=sb2;} private static void change5(int[] arr, int i, int j){ //引用類型arr指向的其實是一個地址值,那么通過地址值將對象內部(堆內存)的值發生改變了,//即使這個方法調用完畢了,s所代表的地址的指向消失了,那么對象的內部其實已經改變了,所以形式參數改變實際參數 int temp = arr[i];[/i] [i] arr = arr[j];[/i] [i] arr[j] = temp;[/i]

[i] }[/i] [i] private static void change4(StringBuffer sb){[/i] [i] //引用類型sb指向的其實是一個地址值,那么通過地址值將對象內部(堆內存)的字符長度改變了,[/i]

[i] //即使這個方法調用完畢了,s所代表的地址的指向消失了,那么對象的內部其實已經改變了,所以形式參數改變實際參數[/i] [i] sb.append(“world”);[/i]

[i] }[/i] [i] private static void change3(String string){[/i] [i] //String也是一個引用類型,但是String的值是放在了常量池中,而且常量池中的值是不能被改變的[/i]

[i] //在方法里面這個string所代表的是常量池中值得地址值,那么我說string += “def”這句話在常量池中其實是這樣的:“找有沒有abcdef,如果有就把abcdef的地址值賦給string[/i]

[i] //如果沒有就在常量池中創建一個abcdef 并把地址值賦給string”。然而當我方法用完了 string代表的地址值的指向也消失了,那么原來main方法中的string

黑馬程序員濟南中心 編著

也不發生改變[/i]

[i] string += “def”;[/i]

[i] }[/i] [i] private static void change2(Student s){[/i] [i] //引用類型s指向的其實是一個地址值,那么通過地址值將對象內部(堆內存)的屬性改變了,[/i]

[i] //即使這個方法調用完畢了,s所代表的地址的指向消失了,那么對象的內部其實已經改變了,所以形式參數改變實際參數[/i] [i] s.setName(“hehe”);[/i] [i] s.setAge(1);[/i]

[i] }[/i] [i] private static void change1(int a, int b){[/i] [i] int temp = a;[/i] [i] a= b;[/i] [i] b=temp;[/i]

[i] }[/i] [i]} 當大家看完這個例子的時候,相信很多同學有一種恍然大悟的感覺,終于搞明白為什么參數傳遞的時候,實際參數有什么改變有時候不改變。如果大家還有什么疑問需要一起交流,請在下面直接給我留言就可以了,或者直接來濟南黑馬程序員找大山哥哥來咨詢,我會親自給同學講解

黑馬程序員濟南中心 編著

第二篇:【黑馬程序員】Java基礎總結

【黑馬程序員】Java基礎總結

黑馬程序員的javaEE課程主要分為2個部分:java基礎+java就業。今天就簡單的給大家總結一下咱們java基礎的知識。

注:Java采用Unicode符號集,每個字符占2個字節,無論英文還是中文還是其他字符。

標識符

為變量、類或方法起的名稱 以字母,下劃線、或者$符號開頭 由字母、數字、下劃線或者$符號開頭 區分大小寫,沒有長度限制,不能使用關鍵字 盡量取得容易辨識,見名知意

如:identifier、userName、user_Name、_sys_varl、$change

基本數據類型

Java定義了8中基本數據類型

[AppleScript] 純文本查看 復制代碼

?

/**

* @author 傳智播客 1 */ 2 布爾值----boolean(只有true和false兩種類型)3 字符-------char(16 位的Unicode字符 用單引號('')標注;'a'表示字母4 a

't' 表示制表符

'u'中?用確切的代替

申明5 并且初始化: char c = 'A'

申明變量 char ch1,ch2)6 整數--------byte(8位)short(16)int(32)long(64)【以0開7 頭表示八進制 ;以0x開始表示16進制】 浮點型-----float double

變量

必須在類的內部【可以在方法外也可以在方法類】 在方法類定義的變量叫做局部變量,需要顯示的初始化

黑馬程序員合肥中心 編著

成員變量和類變量【對象】自動初始化【數字初始化為0,對象初始化為null】

常量

在程序運行中,其值保持不變的量

不同數據類型間的相互轉換【封裝Wrapper類】 Java中類的定義:

[AppleScript] 純文本查看 復制代碼

? /**

2* @author 傳智播客

3*/ 4 <修飾符> Class <類名>{ <屬性申明>;6

<構造器申明>;7

<方法申明>;8 }

成員變量申明:

[AppleScript] 純文本查看 復制代碼

? <修飾符> <類型> <名稱>;修飾符:

[AppleScript] 純文本查看 復制代碼

? /** 2

* @author 傳智播客 3

*/ 4 final:修飾常量,常量的值不能被修改【例如 final int CONSTANT = 50;】 5 static:申明靜態變量[類變量] static int nCount;方法的申明:

[AppleScript] 純文本查看 復制代碼

? /** 2

* @author 傳智播客

黑馬程序員合肥中心 編著

3*/ 4 <修飾符> <返回值類型> <名稱>[參數列表]{ 5

語句;6 }

方法參數的傳遞方式:

1、值傳遞:形參是基本數據類型,方法調用時,實際參數把值傳遞給形式參數,形式參數只是用實際參數的值初始化自己的存儲單元內容;是兩個不同的存儲單元,所以方法執行中,形式參數值的改變不會影響實際參數的值。

2、引用傳遞:形參類型是引用數據類型【傳遞地址】,方法調用時,實際參數是對象或者數組,這時,形式參數和實際參數指向的是同一地址,方法執行中,對形式參數的操作實際上是對實際參數的操作,這個結果在方法結束后被保留了下來,所以對形式參數的操作實際上就是對實際參數的操作。構造器申明:

[AppleScript] 純文本查看 復制代碼

?

/** 1 * @author 傳智播客 2 */ 3 <修飾符> <類名>[參數列表]{ 4

語句;5 } 6 注釋:構造器沒有返回值,void也不行;如果有返回值,方法會被當做普通函7 數執行; 構造器函數特點:

1、作用:完成對類對象的初始化

2、名稱必須和類名相同

3、不能有返回值,不能有 return 語句

4、一般申明為Public類型 構造器的使用:

黑馬程序員合肥中心 編著

1、不能現實的調用

2、在創建一個類的對象時,系統自動調用構造器為該對象初始化

3、構造器只能和new關鍵字一起使用

格式:

類名 對象名 = new 構造函數名稱(成員變量的初始值);

默認構造器:

1、每個類至少有一個構造器

2、如果不編寫構造函數,系統自動添加默認的構造函數【默認構造函數不帶參數,默認構造函數函數體為空】

3、不必編寫構造函數就能使用new XXX()

創建實例

對象創建格式:

<對象名> = new <類名>(實參)

對象的清除:

對象為null時,Java自動調用垃圾回收機制清除對象,釋放對象占用的內存空間 手動編寫finalize()方法撤銷對象--不提倡

對象的內存模型:

棧內存:方法中定義的變量(基本類型和引用類型)。超過變量的作用域,自動釋放變量的內存

堆內存:new 創建的對象(包括數組),由系統自動回收

類的繼承【僅支持單繼承】

[AppleScript] 純文本查看 復制代碼

? /**

2* @author 傳智播客

3*/ 4 <修飾符> class <名稱> extends <父類>{ 申明;6 }

黑馬程序員合肥中心 編著

子類可以繼承父類中非private的方法和屬性;子類可以添加新的屬性和方法;【程序代碼重,減少冗余】 方法的重載(overload):

1、一個類中有多個同名的方法

2、條件:參數的個數不同;參數的類型不同

3、如果兩個方法只有返回值不一樣,不是重載,會報錯

方法的覆蓋(override):

1、子類可以修改父類繼承過來的行為

2、子類可以創建和父類的方法不同功能的方法,但是下面必須相同:【方法名、返回值、參數列表】

super關鍵字:

往往在覆蓋方法時,真正不目的不是代替現有的行為,而是在某些方面擴展那些行為; 類中使用super關鍵字指向父類的成員 包括數據和方法; 3中使用方法:

super.方法名([參數表]);----調用父類的方法 super.成員變量名;----訪問父類的成員變量 super([參數表]);----調用父類的構造函數

構造函數不能被繼承:

子類從父類繼承所有的方法和變量 子類不能繼承父類的構造函數

有兩種方式可以獲取構造函數:

1、使用默認的構造函數

2、編寫1個或者多個構造函數

調用父類的構造函數:

要調用父類的構造函數,必須在子類構造函數的第一行使用super關鍵字

黑馬程序員合肥中心 編著

要調用特定的父類的構造函數,必須為super提供參數

如果沒有this或者super調用,編譯器會插入一個對父類無參數構造函數的隱式調用: super();

變量的多態:

類型為X的參考變量,指向的對象類型既可以是X,也可以是X的子類; 如: Employee x = new Manager();Employee y = new Employee();

實例方法能夠被覆蓋,靜態(static)方法不能被覆蓋 原因:

靜態方法在編譯時候,根據調用該方法的類或者對象所屬的類決定 實例方法在運行時根據對象所屬的類決定

如:Super s = new Sub();編譯時候S是Super類的對象,運行時 S 指向Sub類的對象;

instanceof操作符:

可以根據對象所屬的類進行不同的處理 抽象類:只能被繼承,不能被實例化的類 定義格式:

[AppleScript] 純文本查看 復制代碼

? /**

2* @author 傳智播客

3*/ 4 abstract class 類名{ abstract 返回值類型

方法名[參數列表];6

...7 } 說明:

抽象類中可以包含抽象方法和非抽象方法,也可以不包含抽象方法和非抽象方法;只要有一個抽象方法,就屬于抽象類;

[AppleScript] 純文本查看 復制代碼

黑馬程序員合肥中心 編著

?

01 /** 02

* @author 傳智播客 03

*/ 04 abstract class Animal{ 05

public abstract void eat();06

} 07

class Dog extends Animal{ 08

public void eat(){System.out.println(“狗吃骨頭”);} 09

} 10class Cat extends Animal{ 12

public void eat(){System.out.println(“貓吃老鼠”);} 13 } 115 class Wolf extends Animal{ 16

public void eat(){System.out.println(“狼吃羊”);} 17 } 說明:不能創建抽象類的對象,即不能被實例化;

使用時,必須用起創建子類

子類可以定義自己的成員變量和方法,但是必須將父類的所有抽象方法代碼寫完;

如果子類只是實現了部分抽象的方法,那么,該類仍然是抽象類; 最終類:

final 類不能被子類化;如Java.lang.String 是final 類,這樣做是基于安全的考慮; 標記為final的方法不能被覆蓋;處于安全的考慮,如果方法的實現不應改變,而且對對象的一致性要求比較高,則可以創建一個final方法。

標記為final的變量代表常量,只能一次賦值; 接口:

使用interface關鍵字申明,可以支持多重繼承 接口中只能包含: 抽象方法;

黑馬程序員合肥中心 編著

常量(默認為 public static final)【用得較少】 說明:

1、接口本身只是提供定義,使用時,必須通過類實現接口(implements)實現接口時,必須實現所有的方法。否則該類還是抽象類(abstract class)。

2、一個雷尅實現多個接口。

3、擴展子句(extends)必須在實現子句(implements)之前

包:

package <頂層包名>[.<子包名>]*;

如:package shipping.domain;說明:

1、如果有包申明,必須在源文件開始處申明。他的前面只能有空白和注釋,不能有其他語句;

2、每個源文件只能有一個包申明;

3、如果沒有包申明,則該類屬于“默認”包(沒有名稱的包)

4、包的名稱有層次,且用.分開;

import語句: 基本語法:

import <包名>[.<子包名>].<類名> 或者import <包名>[.<子包名>].*;

其實在學習java過程中基礎還是比較容易,如果大家想學習java基礎的知識,歡迎大家可以去傳智播客官網http://www.tmdps.cn/去了解java基礎知識!

黑馬程序員合肥中心 編著

第三篇:黑馬程序員:Java集合簡單總結

黑馬程序員:Java集合簡單總結

在Java語言中,學好集合是非常重要的,下面簡單的對集合進行總結,以便大家學習,有

問題再相互交流。

集合框架圖

在集合框架圖中可以看出,Collection接口中主要有兩個子接口,分別是List和Set。List集合的特點是元素有序、包含重復元素,Set集合的特點是元素無序、不包含重復元素。Map集合中存儲的是鍵值映射關系,元素都是成對出現的。Map接口的主要子接口有HashMap和TreeMap。

總結ist有順序有重復沒有排序,set無重復有排序,map的key也和set一樣。

List接口

List : 特點是元素有序、可以包含重復元素。它有兩個實現類分別是:ArrayList和LinkedList。

ArrayList : 內部維護一個數組結構,允許對元素進行快速隨機訪問,但是向List中間插入與移除元素的速度很慢。

LinkedList : 內部維護了一個雙向鏈表結構,即通過節點之間彼此連接來實現的,每一個節點都包含前一個節點和后一個節點的引用。當一個新節點插入時,只需要修改其中保持先后關系的節點引用即可,這樣的存儲結構保證了LinkedList集合在增刪元素時效率非常高。

Set接口

Set具有與Collection完全一樣的接口,因此沒有任何額外的功能,不像前面的List。實際上Set就是Collection只是行為不同,也就是說Set集合并沒有對Collection接口進行擴充,只是比collection接口要求更加嚴了。

Set : 存入Set的每個元素都必須是唯一的,因為Set不保存重復元素。加入Set的元素必須定義equals()方法以確保對象的唯一性。

HashSet : 為快速查找設計的Set。存入HashSet的對象必須定義hashCode()。

TreeSet : 保存有序的Set, 底層為樹結構。使用它可以從Set中提取有序的序列。

LinkedHashSet : 具有HashSet的查詢速度,且內部使用鏈表維護元素的順序。于是在使用迭代器遍歷Set時,結果會按元素插入的次序顯示。

Map接口

Map用于保存具有映射關系的數據,因此Map集合里存儲兩組值,一組用于保存Map里的key,另一組用于保存Map中的value,key和value都可以是任意引用類型數據,其中,作為key的值是不允許重復的,而value中可以出現重復。Map : 維護“鍵值對”的關聯性,使你可以通過“鍵”查找“值”。

HashMap就是使用對象的hashCode()進行快速查詢的。此方法能夠顯著提高性能。HashMap集合是基于哈希表的Map接口實現,并允許使用null鍵null值,但必須保證鍵的唯一性。

LinkedHashMap : 類似于HashMap,但是迭代遍歷它時,取得“鍵值對”的順序是其插入次序。而在迭代訪問時發而更快,因為它使用鏈表維護內部次序。

TreeMap : 基于紅黑樹數據結構的實現。查看“鍵”或“鍵值對”時,它們會被排序(順序由Comparabel或Comparator決定)。TreeMap的特點在于,你得到的結果是經過排序的。

Hashtable線程安全,但是存取速度很慢,且不允許存放null鍵null值,目前基本上被hashMap類所取代。Hashtable有一個重要的子類Properties。

Properties:java.util.Properties;key和value都是String類型,用來讀配置文件。繼承自Hashtable,比 Hashtable 更嚴格 屬性列表中每個鍵及其對應值都是一個字符串。常用方法 String getProperty(String?key)和 setProperty(String key,String value);

用法:我在D盤下建了一個名為 AA.dat 的文件,文件的內容為:

name=ch

password=12345

執行以下程序,輸出 ch,可見用 Properties 可以很方便的解析配置文件 Properties p = new Properties();p.load(new FileInputStream(“D:AA.dat”));System.out.println(p.getProperty(“name”))

第四篇:【黑馬程序員】Java基礎 : Java語句筆記

【黑馬程序員】Java基礎 : Java語句筆記

摘要: Java基礎—java語句這些是黑馬程序員java基礎入門的一個很重要的內容。今天主要給大家簡單講解一下Java基礎—java語句,以后會慢慢講解黑馬程序員的課程內容!

關鍵語句介紹

一、while 語句 一般形式:

whi l e(條件表達式){ 語句體 ……… } 執行過程:

條件表達式為真,執行語句體。否則,退出!

二、do while 語句 一般形式: do { 語句體 …….} while(條件表達式);執行過程:

先執行一次語句體,判斷 條件表達式是否為真,為真再執行do語句中的語句體。為假,退出。

需要注意:與whi l e語句區別

黑馬程序員合肥中心 編著

1.while(條件表達式)后面有分號;2.不管條件表達式是否為真,語句體均會執行一次。

三、for 語句 一般形式:

for(子句 1;子句 2;子句 3){ 語句體 …… } 執行過程:

四、break、cont inue 語句 break 退出所在循環 : int stopHere = 5;for(int i=1;i<8;i++){ if(i == stopHere){ break;} System.out.println(“i = ” + i);

黑馬程序員合肥中心 編著

} //打印結果:5,6,7,8均沒有打印出來。

需要注意的一個問題: int stopHere = 5;for(int i = 1;i < 8;i + +){ if(i = = stopHere){ / /語句體 } break;System.out.println(“i = ” + i);} 這個時候編譯器會報錯:無效的 System.out 輸出語句。冷靜分析一下:

break 語句會結束循環,所以不會再去執行 System.out 輸出語句。編譯會認為你在多此一舉,sorry 報個錯!

continue 退出本次循環,不會退出整個循環: int skipHere = 5;for(int i = 1;i < 8;i + +){ if(i = = skipHere){ continue;}

黑馬程序員合肥中心 編著

System.out.println(“i = ” + i);} / /打印結果:除了5沒有打印出來。

i = 1 i = 2

五、switch 語句 一般形式: switch(常量){ case 表達式1:語句體1;break;case 表達式2:語句體2;break;.....default : 語句體n;break;}

執行過程: 執行過程:

case 根據自己的表達式看是否匹配常量,如果匹配就執行語句體,否則執行 default 語句。

case 執行類似于并行操作,不是順序操作。所以各個表達式的值不可以相同。

黑馬程序員合肥中心 編著

哪個 case 匹配常量就會執行自己的語句體,不會再去尋找其他 case 語句。注意:

<1> case 穿透:省去break關鍵字

[AppleScript] 純文本查看 復制代碼 ?

01 /**

02 * @author 傳智播客 03 */

04 int i = 10;05 switch(i){ 06 case 10:

07 System.out.println(“ A”);08 //break;09 case 5: System.out.println(“ B”);11 //break;12 case 7: System.out.println(“ C”);14 //break;15 default : System.out.println(“ error”);17 break;18 }//打印結果:A B C error

<2> 在 Java 編程中 switch 括號中的常量的數據類型只可以為 int 類型或者是 byte、char、short(因為 byte、char、short 可以自動提升為 int),常量類型不可以是 long、float 和 double 等數據類型。<3> 多個 case 可以合并 , 相當于 “ 或 ”,例如下面 i 等于 10、5、7 都可以執行打印語句。

[AppleScript] 純文本查看 復制代碼 ?

01 /**

02 * @author 傳智播客 03 */

04 int i = 5;05 switch(i){ 06 case 10: 07 case 5: 08 case 7:

09 System.out.println(“ C”);10 break;11 default : System.out.println(“ error”);13 break;

黑馬程序員合肥中心 編著 }//打印結果:C <4> default 語句可以省,但是不推薦,他后面的 break 可省 <5> case 或者 default 子句中可以寫多條語句 case 7: System.out.println(“ C”);if(i == 5){ System.out.println(“ i = ” +i);} break;<6> case 或者 default 子句中還可以嵌套 switch 或者其他語句

六、return 語句

終止方法的運行并指定要返回的數據。兩種形式:

<1> return 表達式;

<2> return ;沒有任何數據直接返回,結束函數(方法)的執行。

七、if 語句

一般形式:

1.if(條件表達式){ 語句體} 2.if(條件表達式){ 語句體} else{語句體 } 3. if(條件表達式1){ 語句體} else if(條件表達式2){語句體 } else {語句體 }

特別注意:形式3,else與其最近的上個if 配對。例子:

[AppleScript] 純文本查看 復制代碼 ?

黑馬程序員合肥中心 編著

01 /**

02 * @author 傳智播客 03 */

04 public class TestIF {

05 public static void main(String[] args){ 06 int i = 30;07 if(i < 20){

08 System.out.println(“<20”);09 } else if(i < 50){ System.out.println(“<50”);11 } else if(i < 80){ System.out.println(“<80”);13 } else System.out.println(“>=80”);15 System.out.println(“黑馬程序員!”);16 }

如果大家想學習java基礎的知識,歡迎大家可以去傳智播客官網http://www.tmdps.cn/去了解java基礎知識!

黑馬程序員合肥中心 編著

第五篇:【黑馬程序員】Java之debug總結三

【黑馬程序員】Java之debug總結三

之前寫了“Java之debug總結一”,“Java之debug總結二”共總結了5種debug方式,現在簡紹第6種,不足之處,敬請指正:(源碼在文章末尾處)本文以chrome瀏覽器為例

六.前臺debug 主要:debug js代碼(1.jsp中嵌入的js代碼 2.js文件中的js代碼)第一步:首先創建一個web項目,需要有一個jsp頁面和js,如下圖:

第二步:在test.js,index.jsp中填充內容,如圖示: index.jsp

黑馬程序員濟南中心 編著

test.js

第三步:把項目發布到tomcat服務器中,并啟動tomcat服務器

第四步:在瀏覽器上訪問index.jsp,使用“F12”打開chrome開發者工具,如下圖:

黑馬程序員濟南中心 編著

選中“Source”,點擊,出現如下界面

黑馬程序員濟南中心 編著

點擊“[url=]encode測試[/url]”按鈕進行測試

以上為外部js代碼測試,測試過程中可以修改js的內容,“Ctrl+s”保存后,可以立馬生效,斷點會從第一行從新開始.黑馬程序員濟南中心 編著

內部js測試步驟類似于上面的步驟,只是在選擇資源的時候不是選擇“test.js”,而是選擇“index”,選擇后頁面如下圖:

測試步驟和外部js一樣

比較外部js和內部js的區別: 外部js,可以進行動態的修改, 修改之后立馬生效,并且可以立馬進行測試.內部js,不可以動態修改,用起來有點不方便

以上以我用過的所有debug方式,希望對大家有所幫助

黑馬程序員濟南中心 編著

下載【黑馬程序員】Java中方法的參數傳遞問題word格式文檔
下載【黑馬程序員】Java中方法的參數傳遞問題.doc
將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
點此處下載文檔

文檔為doc格式


聲明:本文內容由互聯網用戶自發貢獻自行上傳,本網站不擁有所有權,未作人工編輯處理,也不承擔相關法律責任。如果您發現有涉嫌版權的內容,歡迎發送郵件至:645879355@qq.com 進行舉報,并提供相關證據,工作人員會在5個工作日內聯系你,一經查實,本站將立刻刪除涉嫌侵權內容。

相關范文推薦

    【黑馬程序員】Java之debug總結二

    【黑馬程序員濟南】Java之debug總結二 之前詳細描述了4種debug方式,現在簡紹第5種,不足之處,敬請指正:(源碼在文章末尾處) 五.maven項目debug 第一步:首先創建一個maven項目......

    Java程序員面試中的多線程問題

    很多核心Java面試題來源于多線程(Multi-Threading)和集合框架 (Collections Framework),理解核心線程概念時,嫻熟的實際經驗是必需的。這篇文章收集了Java線程方面一些典型的......

    Java程序員面試中的多線程問題

    Java程序員面試中的多線程問題 摘要:很多核心Java面試題來源于多線程(Multi-Threading)和集合框架(Collections Framework),理解核心線程概念時,嫻熟的實際經驗是必需的。這篇......

    struts2配置文件中參數的傳遞

    struts2配置文件中參數的傳遞 在Action中我們經常會從這個Action跳轉到另一個Action中,如果只是簡單的跳轉那么很容易,只需在struts配置文件中添加一個result,如:/manager/m......

    黑馬程序員Java IO知識測試 C卷(5篇材料)

    集合部分測試題 考試宣言: 同學們, 考試考多少分不是我們的目的! 排在班級多少的名次也不是我們的初衷! 我們考試的目的是要通過考試中的題目,檢查大家在這段時間的學習中,......

    黑馬程序員java培訓就業班筆記:day01總結

    Day01總結: 1、計算機常識:包括了軟件的簡單劃分:系統軟件 windos等和應用軟件 QQ、迅雷等 2、人機交互方式:圖形化界面GUI、命令行方式CLI: 3、常用的命令:cd:進入目標路徑、cd.......

    黑馬程序員java培訓就業班筆記:day05總結

    Day05 上午: 1、數組的靜態初始化 多種定義格式: Int arr=new int//標準格式,可以明確數組的數據類型,和數組名,但是不知道數組的長度 Int arr=new int Int arr=new in......

    黑馬程序員java培訓就業班筆記:day10總結

    Day10總結: 1、多態的特點: 1、成員變量: 當在子父類中出現了相同的非私有成員變量時,在多態調用中的特點: 在編譯時:參考引用型變量所屬類中是否有調用的成員變量,如果有編譯通過,......

主站蜘蛛池模板: aa区一区二区三无码精片| 国产热a欧美热a在线视频| 国精产品一线二线三线av| 在线播放国产精品三级网| 特黄特色的大片观看免费视频| 亚洲av无码成h在线观看| 最新国产精品无码| 欧美性开放情侣网站| 欧美亚洲国产手机在线有码| 国产sm调教视频在线观看| 久久亚洲精品无码观看网站| 亚洲人成网亚洲欧洲无码久久| 男女免费观看做爰视频在线观看| 野外做受又硬又粗又大视幕| 国产免费一区二区三区在线观看| 无码专区永久免费av网站| 午夜爽爽爽男女污污污网站| 国产精品99久久免费| 久久99热这里只频精品6| 中文字幕日韩人妻在线视频| 国产偷国产偷亚州清高app| 国产又黄又爽又色的免费视频| 一本久道综合色婷婷五月| 无遮挡男女激烈动态图| 精品人妻少妇一区二区| 熟女无套高潮内谢吼叫免费| 久久综合色一综合色88欧美| 日日噜噜噜夜夜爽爽狠狠视频| 亚洲中文字幕无码一区| 欧洲精品欧美精品| 亚洲色大成网站www久久九| 国产内射性高湖| 欧美日韩亚洲一区二区三区一| 亚洲男人的天堂成人www| 蜜桃成人无码区免费视频网站| 久久综合色一综合色88| 一本大道无码日韩精品影视_| 国产乱人无码伦av在线a| 天天看片天天av免费观看| 99久久精品免费看国产| 久久综合久久综合九色|