SlideShare una empresa de Scribd logo
1 de 87
Descargar para leer sin conexión
1
認識物件
學習目標
• 區分基本型態與類別型態
• 瞭解物件與參考的關係
• 從包裹器認識物件
• 以物件觀點看待陣列
• 認識字串的特性
• 知道如何查詢API文件
2
定義類別
3
• 新建一個物件、新建Clothes的實例
• 宣告參考名稱(Reference name)、參考變
數(Reference variable)或直接叫參考(
Reference)
• c1參考(refer)至新建物件
4
5
6
建構式(Constructor)
7
使用java.util.Scanner
8
使用java.math.BigDecimal
• 1.0 – 0.8的結果是?
• 以下程式片段會顯示什麼結果?
9
• 使用java.math.BigDecimal
10
11
物件指定與相等性
• =用於基本型態時,是將值複製給變數
• ==用於基本型態時,是比較變數儲存的值是
否相同
12
• 如果操作物件,=用在指定名稱參考至某個物
件,==用在比較兩個名稱是否參考同一物件
13
14
包裹基本型態
• Long、Integer、Double、Float、
Boolean、Byte等類別
15
自動裝箱、拆箱
16
17
• 從Java SE 9開始,基本型態包裹器的建構式
都標示為棄用(Deprecated)
18
• 自動裝箱與拆箱的功能是編譯器蜜糖(
Compiler sugar)
19
• 結果會是如何?
20
• Integer.java中valueOf()的實作內容
21
• IntegerCache.low預設值是-128,執行時期無
法更改,IntegerCache.high預設值是127
• 可以於啟動JVM時,使用系統屬性
java.lang.Integer.IntegerCache.high來指定
22
• 別使用==或!=來比較兩個物件實質內容值是
否相同(因為==與!=是比較物件參考)
• 要使用equals()
23
陣列基礎
• 記錄Java小考成績
24
• 循序地取出陣列中每個值
25
26
• 設定值給陣列中某個元素
27
• 二維陣列
28
操作陣列物件
• 以使用new關鍵字指定長度來建立陣列
29
30
31
• new陣列時一併指定初始值
• 代表建立陣列物件的類別定義在哪?答案是
由JVM動態產生
32
33
• 用new建立二維陣列
34
• 走訪二維陣列
35
36
37
38
• 如下建立陣列也是合法的:
39
40
41
42
陣列複製
• 並非陣列複製
• 另行建立新陣列
43
• 使用System.arraycopy()方法
44
• Arrays.copyOf()方法
45
• Java的陣列一旦建立,長度就固定了
46
47
48
49
50
字串基礎
• 字串是java.lang.String實例
51
• 已經有個char[]陣列
• 使用+運算來串接字串
52
• 字串剖析為基本型態
53
54
• 命令列引數
55
字串特性
• 字串常量與字串池。
• 不可變動(Immutable)字串。
56
字串常量與字串池
• 以下會顯示true或false?
• 底下這個程式碼呢?
57
• 字串常量(String literal)
58
• 比較字串實際字元內容是否相同,不要使用
==,要使用equals()
59
• 不可變動字串
• 使用程式顯示下圖的結果,你會怎麼寫呢?
60
61
62
• 無聊但認證會考的題目
63
原始檔編碼
• 你寫的.java原始碼檔案是什麼編碼?
64
65
66
67
68
69
70
Unicode與UTF
• 字元集是一組符號的集合
• 字元編碼是字元實際儲存時的位元組格式
71
• ISO/IEC與Unicode Consortium都曾經想統一
字元集
• ISO/IEC在1990年先公佈了第一套字元集的編
碼方式UCS-2,使用兩個位元組來編碼字元
• 字元集中每個字元會有個編號作為碼點(
Code point)
• UCS-2以兩個位元組作為一個碼元(Code
unit)
72
• 1991年ISO/IEC與Unicode合併,之後才發佈
了Unicode 1.0
• 越來越多的字元被納入Unicode字元集,超出
碼點U+0000至U+FFFF
• 1996年公佈了UTF16
– 沿用UCS-2兩個位元組的編碼部份
– 超出碼點U+0000至U+FFFF的字元,採用四個位
元組來編碼
73
• Unicode的另一編碼標準UTF-8,儲存字元時
使用的位元組數量視字元落在哪個Unicode範
圍而定
– ASCII編碼是其子集,儲存ASCII字元時只使用一
個位元組
– 其他附加符號的拉丁文、希臘文等,會使用兩個
位元組
– 中文部份,UTF-8採用三個位元組儲存,更罕見
的字元,可能會用到四到六個位元組
74
char與String
• JVM在執行時期,對於uxxxx採用的實作
是UTF-16 Big Endian
• char型態佔2個位元組,可儲存U+0000至
U+FFFF範圍的字元,也就是BMP(Basic
Multilingual Plane)
75
• 若字元不在BMP範圍內呢?
• 例如高音譜記號 的Unicode碼點為U+1D11E
• 必須使用字串儲存,以"uD834uDD1E"來
表示,稱為代理對(Surrogate pair)
• 字串的length()取得字串物件管理的char
數量
76
• 若字串中的字元,是在BMP範圍外,就不能
把length()傳回值當成是字串中的字元數
• 字串的length()傳回值是char的數量,也
就是表示字串使用的UTF-16碼元數量
77
• 取得字串中的字元數量(不是char的數量)
78
java.lang.Character
79
查詢Java API文件
80
81
82
83
84
85
86
87

Más contenido relacionado

La actualidad más candente

これからのpre_get_postsの話をしよう
これからのpre_get_postsの話をしようこれからのpre_get_postsの話をしよう
これからのpre_get_postsの話をしようHishikawa Takuro
 
Ch02 撰寫與設定 Servlet
Ch02 撰寫與設定 ServletCh02 撰寫與設定 Servlet
Ch02 撰寫與設定 ServletJustin Lin
 
From Zero to Spring Boot Hero with GitHub Codespaces
From Zero to Spring Boot Hero with GitHub CodespacesFrom Zero to Spring Boot Hero with GitHub Codespaces
From Zero to Spring Boot Hero with GitHub CodespacesVMware Tanzu
 
Ch03 請求與回應
Ch03 請求與回應Ch03 請求與回應
Ch03 請求與回應Justin Lin
 
Inversion of Control and Dependency Injection
Inversion of Control and Dependency InjectionInversion of Control and Dependency Injection
Inversion of Control and Dependency InjectionDinesh Sharma
 
Spring Boot to Quarkus: A real app migration experience | DevNation Tech Talk
Spring Boot to Quarkus: A real app migration experience | DevNation Tech TalkSpring Boot to Quarkus: A real app migration experience | DevNation Tech Talk
Spring Boot to Quarkus: A real app migration experience | DevNation Tech TalkRed Hat Developers
 
JVM: A Platform for Multiple Languages
JVM: A Platform for Multiple LanguagesJVM: A Platform for Multiple Languages
JVM: A Platform for Multiple LanguagesKris Mok
 
Introducing type script
Introducing type scriptIntroducing type script
Introducing type scriptRemo Jansen
 
[cb22] Mal-gopherとは?Go系マルウェアの分類のためのgimpfuzzy実装と評価 by 澤部 祐太, 甘粕 伸幸, 野村 和也
[cb22] Mal-gopherとは?Go系マルウェアの分類のためのgimpfuzzy実装と評価 by 澤部 祐太, 甘粕 伸幸, 野村 和也[cb22] Mal-gopherとは?Go系マルウェアの分類のためのgimpfuzzy実装と評価 by 澤部 祐太, 甘粕 伸幸, 野村 和也
[cb22] Mal-gopherとは?Go系マルウェアの分類のためのgimpfuzzy実装と評価 by 澤部 祐太, 甘粕 伸幸, 野村 和也CODE BLUE
 
無瑕的程式碼 Clean Code 心得分享
無瑕的程式碼 Clean Code 心得分享無瑕的程式碼 Clean Code 心得分享
無瑕的程式碼 Clean Code 心得分享Win Yu
 
Spring boot Under Da Hood
Spring boot Under Da HoodSpring boot Under Da Hood
Spring boot Under Da HoodMichel Schudel
 
JVM @ Taobao - QCon Hangzhou 2011
JVM @ Taobao - QCon Hangzhou 2011JVM @ Taobao - QCon Hangzhou 2011
JVM @ Taobao - QCon Hangzhou 2011Kris Mok
 
为啥别读HotSpot VM的源码(2012-03-03)
为啥别读HotSpot VM的源码(2012-03-03)为啥别读HotSpot VM的源码(2012-03-03)
为啥别读HotSpot VM的源码(2012-03-03)Kris Mok
 
Ch06 使用 JSP
Ch06 使用 JSPCh06 使用 JSP
Ch06 使用 JSPJustin Lin
 
IBM JVM 소개 - Oracle JVM 과 비교
IBM JVM 소개 - Oracle JVM 과 비교IBM JVM 소개 - Oracle JVM 과 비교
IBM JVM 소개 - Oracle JVM 과 비교JungWoon Lee
 
C#や.NET Frameworkがやっていること
C#や.NET FrameworkがやっていることC#や.NET Frameworkがやっていること
C#や.NET Frameworkがやっていること信之 岩永
 
Advanced Reflection in Java
Advanced Reflection in JavaAdvanced Reflection in Java
Advanced Reflection in Javakim.mens
 

La actualidad más candente (20)

これからのpre_get_postsの話をしよう
これからのpre_get_postsの話をしようこれからのpre_get_postsの話をしよう
これからのpre_get_postsの話をしよう
 
Ch02 撰寫與設定 Servlet
Ch02 撰寫與設定 ServletCh02 撰寫與設定 Servlet
Ch02 撰寫與設定 Servlet
 
From Zero to Spring Boot Hero with GitHub Codespaces
From Zero to Spring Boot Hero with GitHub CodespacesFrom Zero to Spring Boot Hero with GitHub Codespaces
From Zero to Spring Boot Hero with GitHub Codespaces
 
Ch03 請求與回應
Ch03 請求與回應Ch03 請求與回應
Ch03 請求與回應
 
Inversion of Control and Dependency Injection
Inversion of Control and Dependency InjectionInversion of Control and Dependency Injection
Inversion of Control and Dependency Injection
 
C# 9.0 / .NET 5.0
C# 9.0 / .NET 5.0C# 9.0 / .NET 5.0
C# 9.0 / .NET 5.0
 
Spring Boot to Quarkus: A real app migration experience | DevNation Tech Talk
Spring Boot to Quarkus: A real app migration experience | DevNation Tech TalkSpring Boot to Quarkus: A real app migration experience | DevNation Tech Talk
Spring Boot to Quarkus: A real app migration experience | DevNation Tech Talk
 
JVM: A Platform for Multiple Languages
JVM: A Platform for Multiple LanguagesJVM: A Platform for Multiple Languages
JVM: A Platform for Multiple Languages
 
TypeScript Overview
TypeScript OverviewTypeScript Overview
TypeScript Overview
 
Introducing type script
Introducing type scriptIntroducing type script
Introducing type script
 
[cb22] Mal-gopherとは?Go系マルウェアの分類のためのgimpfuzzy実装と評価 by 澤部 祐太, 甘粕 伸幸, 野村 和也
[cb22] Mal-gopherとは?Go系マルウェアの分類のためのgimpfuzzy実装と評価 by 澤部 祐太, 甘粕 伸幸, 野村 和也[cb22] Mal-gopherとは?Go系マルウェアの分類のためのgimpfuzzy実装と評価 by 澤部 祐太, 甘粕 伸幸, 野村 和也
[cb22] Mal-gopherとは?Go系マルウェアの分類のためのgimpfuzzy実装と評価 by 澤部 祐太, 甘粕 伸幸, 野村 和也
 
無瑕的程式碼 Clean Code 心得分享
無瑕的程式碼 Clean Code 心得分享無瑕的程式碼 Clean Code 心得分享
無瑕的程式碼 Clean Code 心得分享
 
Spring boot Under Da Hood
Spring boot Under Da HoodSpring boot Under Da Hood
Spring boot Under Da Hood
 
JVM @ Taobao - QCon Hangzhou 2011
JVM @ Taobao - QCon Hangzhou 2011JVM @ Taobao - QCon Hangzhou 2011
JVM @ Taobao - QCon Hangzhou 2011
 
为啥别读HotSpot VM的源码(2012-03-03)
为啥别读HotSpot VM的源码(2012-03-03)为啥别读HotSpot VM的源码(2012-03-03)
为啥别读HotSpot VM的源码(2012-03-03)
 
Ch06 使用 JSP
Ch06 使用 JSPCh06 使用 JSP
Ch06 使用 JSP
 
IBM JVM 소개 - Oracle JVM 과 비교
IBM JVM 소개 - Oracle JVM 과 비교IBM JVM 소개 - Oracle JVM 과 비교
IBM JVM 소개 - Oracle JVM 과 비교
 
Angular.pdf
Angular.pdfAngular.pdf
Angular.pdf
 
C#や.NET Frameworkがやっていること
C#や.NET FrameworkがやっていることC#や.NET Frameworkがやっていること
C#や.NET Frameworkがやっていること
 
Advanced Reflection in Java
Advanced Reflection in JavaAdvanced Reflection in Java
Advanced Reflection in Java
 

Similar a CH04:認識物件

Java SE 7 技術手冊投影片第 09 章 - Collection與Map
Java SE 7 技術手冊投影片第 09 章 - Collection與MapJava SE 7 技術手冊投影片第 09 章 - Collection與Map
Java SE 7 技術手冊投影片第 09 章 - Collection與MapJustin Lin
 
Java SE 8 技術手冊第 4 章 - 認識物件
Java SE 8 技術手冊第 4 章 - 認識物件Java SE 8 技術手冊第 4 章 - 認識物件
Java SE 8 技術手冊第 4 章 - 認識物件Justin Lin
 
4. 使用物件
4. 使用物件4. 使用物件
4. 使用物件Justin Lin
 
Java SE 7 技術手冊投影片第 04 章 - 認識物件
Java SE 7 技術手冊投影片第 04 章 - 認識物件Java SE 7 技術手冊投影片第 04 章 - 認識物件
Java SE 7 技術手冊投影片第 04 章 - 認識物件Justin Lin
 
[圣思园][Java SE]Reflection
[圣思园][Java SE]Reflection[圣思园][Java SE]Reflection
[圣思园][Java SE]ReflectionArBing Xie
 
Java SE 8 技術手冊第 5 章 - 物件封裝
Java SE 8 技術手冊第 5 章 - 物件封裝Java SE 8 技術手冊第 5 章 - 物件封裝
Java SE 8 技術手冊第 5 章 - 物件封裝Justin Lin
 
從模組到類別
從模組到類別從模組到類別
從模組到類別Justin Lin
 
5. 從模組到類別
5. 從模組到類別5. 從模組到類別
5. 從模組到類別Justin Lin
 
從模組到類別
從模組到類別從模組到類別
從模組到類別Justin Lin
 
Java SE 7 技術手冊投影片第 05 章 - 物件封裝
Java SE 7 技術手冊投影片第 05 章  - 物件封裝Java SE 7 技術手冊投影片第 05 章  - 物件封裝
Java SE 7 技術手冊投影片第 05 章 - 物件封裝Justin Lin
 
Chapter 4 models
Chapter 4 modelsChapter 4 models
Chapter 4 modelsEkman Hsieh
 
flagboot learning framework technology sharing
flagboot learning framework technology sharingflagboot learning framework technology sharing
flagboot learning framework technology sharingxastraxastra
 
Java相关基础知识
Java相关基础知识Java相关基础知识
Java相关基础知识yiditushe
 
Java面试笔试题大汇总
Java面试笔试题大汇总Java面试笔试题大汇总
Java面试笔试题大汇总yiditushe
 
資料永續與交換
資料永續與交換資料永續與交換
資料永續與交換Justin Lin
 
Ch07 使用 JSTL
Ch07 使用 JSTLCh07 使用 JSTL
Ch07 使用 JSTLJustin Lin
 
Servlet & JSP 教學手冊第二版 - 第 7 章:使用 JSTL
Servlet & JSP 教學手冊第二版 - 第 7 章:使用 JSTLServlet & JSP 教學手冊第二版 - 第 7 章:使用 JSTL
Servlet & JSP 教學手冊第二版 - 第 7 章:使用 JSTLJustin Lin
 

Similar a CH04:認識物件 (20)

認識物件
認識物件認識物件
認識物件
 
Java SE 7 技術手冊投影片第 09 章 - Collection與Map
Java SE 7 技術手冊投影片第 09 章 - Collection與MapJava SE 7 技術手冊投影片第 09 章 - Collection與Map
Java SE 7 技術手冊投影片第 09 章 - Collection與Map
 
Java SE 8 技術手冊第 4 章 - 認識物件
Java SE 8 技術手冊第 4 章 - 認識物件Java SE 8 技術手冊第 4 章 - 認識物件
Java SE 8 技術手冊第 4 章 - 認識物件
 
4. 使用物件
4. 使用物件4. 使用物件
4. 使用物件
 
Java SE 7 技術手冊投影片第 04 章 - 認識物件
Java SE 7 技術手冊投影片第 04 章 - 認識物件Java SE 7 技術手冊投影片第 04 章 - 認識物件
Java SE 7 技術手冊投影片第 04 章 - 認識物件
 
[圣思园][Java SE]Reflection
[圣思园][Java SE]Reflection[圣思园][Java SE]Reflection
[圣思园][Java SE]Reflection
 
Hibernate教程
Hibernate教程Hibernate教程
Hibernate教程
 
hibernate
hibernatehibernate
hibernate
 
Java SE 8 技術手冊第 5 章 - 物件封裝
Java SE 8 技術手冊第 5 章 - 物件封裝Java SE 8 技術手冊第 5 章 - 物件封裝
Java SE 8 技術手冊第 5 章 - 物件封裝
 
從模組到類別
從模組到類別從模組到類別
從模組到類別
 
5. 從模組到類別
5. 從模組到類別5. 從模組到類別
5. 從模組到類別
 
從模組到類別
從模組到類別從模組到類別
從模組到類別
 
Java SE 7 技術手冊投影片第 05 章 - 物件封裝
Java SE 7 技術手冊投影片第 05 章  - 物件封裝Java SE 7 技術手冊投影片第 05 章  - 物件封裝
Java SE 7 技術手冊投影片第 05 章 - 物件封裝
 
Chapter 4 models
Chapter 4 modelsChapter 4 models
Chapter 4 models
 
flagboot learning framework technology sharing
flagboot learning framework technology sharingflagboot learning framework technology sharing
flagboot learning framework technology sharing
 
Java相关基础知识
Java相关基础知识Java相关基础知识
Java相关基础知识
 
Java面试笔试题大汇总
Java面试笔试题大汇总Java面试笔试题大汇总
Java面试笔试题大汇总
 
資料永續與交換
資料永續與交換資料永續與交換
資料永續與交換
 
Ch07 使用 JSTL
Ch07 使用 JSTLCh07 使用 JSTL
Ch07 使用 JSTL
 
Servlet & JSP 教學手冊第二版 - 第 7 章:使用 JSTL
Servlet & JSP 教學手冊第二版 - 第 7 章:使用 JSTLServlet & JSP 教學手冊第二版 - 第 7 章:使用 JSTL
Servlet & JSP 教學手冊第二版 - 第 7 章:使用 JSTL
 

Más de Justin Lin

Ch14 簡介 Spring Boot
Ch14 簡介 Spring BootCh14 簡介 Spring Boot
Ch14 簡介 Spring BootJustin Lin
 
Ch12 Spring 起步走
Ch12 Spring 起步走Ch12 Spring 起步走
Ch12 Spring 起步走Justin Lin
 
Ch11 簡介 JavaMail
Ch11 簡介 JavaMailCh11 簡介 JavaMail
Ch11 簡介 JavaMailJustin Lin
 
Ch10 Web 容器安全管理
Ch10 Web 容器安全管理Ch10 Web 容器安全管理
Ch10 Web 容器安全管理Justin Lin
 
Ch08 自訂標籤
Ch08 自訂標籤Ch08 自訂標籤
Ch08 自訂標籤Justin Lin
 
Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器Justin Lin
 
Ch04 會話管理
Ch04 會話管理Ch04 會話管理
Ch04 會話管理Justin Lin
 
14. 進階主題
14. 進階主題14. 進階主題
14. 進階主題Justin Lin
 
13.並行、平行與非同步
13.並行、平行與非同步13.並行、平行與非同步
13.並行、平行與非同步Justin Lin
 
12. 除錯、測試與效能
12. 除錯、測試與效能12. 除錯、測試與效能
12. 除錯、測試與效能Justin Lin
 
11. 常用內建模組
11. 常用內建模組11. 常用內建模組
11. 常用內建模組Justin Lin
 
10. 資料永續與交換
10. 資料永續與交換10. 資料永續與交換
10. 資料永續與交換Justin Lin
 
9. 資料結構
9. 資料結構9. 資料結構
9. 資料結構Justin Lin
 
8. open() 與 io 模組
8. open() 與 io 模組8. open() 與 io 模組
8. open() 與 io 模組Justin Lin
 
7. 例外處理
7. 例外處理7. 例外處理
7. 例外處理Justin Lin
 
6. 類別的繼承
6. 類別的繼承6. 類別的繼承
6. 類別的繼承Justin Lin
 
4. 流程語法與函式
4. 流程語法與函式4. 流程語法與函式
4. 流程語法與函式Justin Lin
 
3.型態與運算子
3.型態與運算子3.型態與運算子
3.型態與運算子Justin Lin
 
1. Python起步走
1. Python起步走1. Python起步走
1. Python起步走Justin Lin
 
2. 從 REPL 到 IDE
2. 從 REPL 到 IDE2. 從 REPL 到 IDE
2. 從 REPL 到 IDEJustin Lin
 

Más de Justin Lin (20)

Ch14 簡介 Spring Boot
Ch14 簡介 Spring BootCh14 簡介 Spring Boot
Ch14 簡介 Spring Boot
 
Ch12 Spring 起步走
Ch12 Spring 起步走Ch12 Spring 起步走
Ch12 Spring 起步走
 
Ch11 簡介 JavaMail
Ch11 簡介 JavaMailCh11 簡介 JavaMail
Ch11 簡介 JavaMail
 
Ch10 Web 容器安全管理
Ch10 Web 容器安全管理Ch10 Web 容器安全管理
Ch10 Web 容器安全管理
 
Ch08 自訂標籤
Ch08 自訂標籤Ch08 自訂標籤
Ch08 自訂標籤
 
Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器
 
Ch04 會話管理
Ch04 會話管理Ch04 會話管理
Ch04 會話管理
 
14. 進階主題
14. 進階主題14. 進階主題
14. 進階主題
 
13.並行、平行與非同步
13.並行、平行與非同步13.並行、平行與非同步
13.並行、平行與非同步
 
12. 除錯、測試與效能
12. 除錯、測試與效能12. 除錯、測試與效能
12. 除錯、測試與效能
 
11. 常用內建模組
11. 常用內建模組11. 常用內建模組
11. 常用內建模組
 
10. 資料永續與交換
10. 資料永續與交換10. 資料永續與交換
10. 資料永續與交換
 
9. 資料結構
9. 資料結構9. 資料結構
9. 資料結構
 
8. open() 與 io 模組
8. open() 與 io 模組8. open() 與 io 模組
8. open() 與 io 模組
 
7. 例外處理
7. 例外處理7. 例外處理
7. 例外處理
 
6. 類別的繼承
6. 類別的繼承6. 類別的繼承
6. 類別的繼承
 
4. 流程語法與函式
4. 流程語法與函式4. 流程語法與函式
4. 流程語法與函式
 
3.型態與運算子
3.型態與運算子3.型態與運算子
3.型態與運算子
 
1. Python起步走
1. Python起步走1. Python起步走
1. Python起步走
 
2. 從 REPL 到 IDE
2. 從 REPL 到 IDE2. 從 REPL 到 IDE
2. 從 REPL 到 IDE
 

CH04:認識物件