programming (se7)
DESCRIPTION
Programming (SE7). 環境工程系 丁文輝 [email protected]. 環境工程系電腦課程 ( 規画案 ). 計算機概論 (BCC) 計算機程式 (Programming) 計算機圖學 (CG) 資料庫管理系統 (DBMS) 數値分析 (NA) 地理資訊系統 (GIS) 環工電腦應用. 逢甲大學水利工程學系工學士 中央大學 ( 教育部委訓 ) 大專資訊師資班 成功大學環境工程學系工學碩士 成功大學環境工程學系博士候選人. 自己紹介 - 澄原日先 ( すみはら ひさき ). 台中市坤財營造廠工地主任 - PowerPoint PPT PresentationTRANSCRIPT
![Page 2: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/2.jpg)
Java programming 2
環境工程系電腦課程 ( 規画案 )
計算機概論 (BCC) 計算機程式 (Programming) 計算機圖學 (CG) 資料庫管理系統 (DBMS) 數値分析 (NA) 地理資訊系統 (GIS) 環工電腦應用
![Page 3: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/3.jpg)
Java programming 3
逢甲大學水利工程學系工學士 中央大學 ( 教育部委訓 ) 大專資訊師資班 成功大學環境工程學系工學碩士 成功大學環境工程學系博士候選人
自己紹介 - 澄原日先 ( すみはら ひさき )
台中市坤財營造廠工地主任 台中市政府清潔管理所垃圾處理場場長 崑山工商專校環境工程科講師兼科主任 崑山科技大學環境工程學系助理教授
![Page 4: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/4.jpg)
Java programming 4
電腦相關課程研習 ( すみはら )
計算機概論 計算機程式
FORTRAN, BASIC, PASCAL, JAVA
組合語言 8086/8088, 80286
資料結構 系統分析 計算機圖學
資料庫管理系統 專業應用軟體
PEⅡ, dBASEⅢ+, Lotus 123, Office, ACAD, SAS/SPSS, Sigma Plot, GIS
數値分析 電腦應用
高等結構 , 海洋放流
![Page 5: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/5.jpg)
Java programming 5
教科書‧参考書 JAVA2 程式設計從零開始 ( 適用 JDK7)
何嘉益 ( 等 ) ,上奇 (2012) Java 初學指引 – 使用 SE7
陳錦輝,博碩 (2011) 挑戰 Java 程式語言 蔡文輝 ( 等 ), 全華 (2006) JAVA SE6 程式設計基礎與實習手冊 李廷圭,松崗 (2009)
![Page 6: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/6.jpg)
Java テキスト
東海大学 ( 日本 ), 坂田圭司 http://kgclass.jp/text/java
勤益科大 (JAVA Note), 朱孝國 http://irw.ncut.edu.tw/peterju/java.html
崑山科大 ( 網路大學 ), 丁文輝 http://elearning.ksu.edu.tw
Java programming 6
![Page 7: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/7.jpg)
Java programming 7
注意事項 コンピュータ室は飲食禁止。 紙節約のため、デジタルファイルを請求
して下さい。 パワーポイントを利用しない授業の方が
多かったので、教科書で、よく復習して下さい。
再試験は行いません。 4 年生は特に心して望むように!
![Page 8: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/8.jpg)
Java programming 8
成績評価 欠席が3分の1を超えた場合、単位の取得
は難しい。 評価はおおよそ出席( 40%) 、宿題
( 20%) 、最終試験( 40%) などを通じて総合的に判定する。
ちなみに先学期 (101_2) 「 java プログラミング」において、受講者 100 人中、不可は 26 人,約 26 %。
( 四環一 A 20%, 四環一 B 31%)
![Page 9: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/9.jpg)
Java programming 9
オフィスアワー 月曜日( 10:00-11:30 ) 火曜日( 10:00-11:30 ) 金曜日( 10:00-11:30 ) (特に授業に関する)質問,相談に
こたえます 設計 3 棟 4F(D3402) メールはいつでもかまいません
ting @ mail.ksu.edu.tw
![Page 10: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/10.jpg)
Java programming 10
計算機程式 (Java SE7, 2013 春 )
Introduction Data type Input/Output Assignment Selection
Iteration Array Method
![Page 11: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/11.jpg)
Java programming 11
プログラミング基礎演習
Console Assignment Expression Divisor If / If-else Switch-case
For loop While loop Random Bubble sort Method Recursive
![Page 12: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/12.jpg)
Java programming 12
プログラミング言語の構成
文字
語
式
文
手続きと関数
モジュール
プログラム
英数字、特殊記号等。
名前、データ、演算子、予約語( for, ifなど)。
演算子と非演算子からなる。 a*b 、 a>b など。
処理の最小単位。「 a=b+c; 」など。
![Page 13: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/13.jpg)
Java programming 13
プログラミング言語発展の歴史
機械語アセンブリ言語
FORTRANCOBOL
ALGOL
PL/1
ALGOL68
PASCALC 言語
Ada
C++
Object PASCAL
Delphi
Java
C++Builder
BASIC
言語以前
Lisp Prolo
g Smalltalk
時間
参考: 河村一樹、斐品正照
低水準言語
高水準言語
超高水準言語
オブジェクト指向言語
ビジュアル開発環境
![Page 14: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/14.jpg)
Java programming 14
FORTRAN
BASIC
Pascal
Java (2011)
![Page 15: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/15.jpg)
Java programming 15
![Page 16: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/16.jpg)
Java programming 16
![Page 17: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/17.jpg)
Java programming 17
プログラミング言語
![Page 18: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/18.jpg)
Java programming 18
![Page 19: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/19.jpg)
Java programming 19
代表的なオブジェクト指向言語(1)
SmallTalk 最初のオブジェクト指向言語
C++ C 言語の拡張言語 多重継承
![Page 20: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/20.jpg)
Java programming 20
代表的なオブジェクト指向言語(2)
Java C 言語をベースにインターネットに適
した言語として開発 Unix, Windows など様々なプラット
フォーム上でプログラムが動作 (Write Once, Run Anywhere)
単一継承
![Page 21: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/21.jpg)
Java programming 21
代表的なオブジェクト指向言語(3)
Ruby オブジェクト指向スクリプト言語
Visual Basic, Visual C++ Microsoft のアプリケーション開発言語
C# Microsoft の Java like なアプリケーショ
ン開発言語
![Page 22: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/22.jpg)
Java programming 22
物件導向程式設計 物件 (object)
屬性 (property) 方法 (method)
類別 (class) 物件變數 (variable) 物件實體 (instance)
![Page 23: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/23.jpg)
Java programming 23
物件導向程式設計的特點 (1)
封裝 (encapsulation) 將資料 ( 屬性 ) 與操作此資料的函數 ( 方
法 ) 包在一起的特性 繼承 (inheritance)
承接所有父類別 (Parent Class) 所有屬性方法,並可以加以改造的特性
![Page 24: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/24.jpg)
Java programming 24
物件導向程式設計的特點 (2)
多型 (polymophism) 呼叫相同的函式,卻會出現不同的行為的
現象 過載 (Overloading): 將一個函數名稱,賦予
一種以上的函數實體,以便依據當時情況,擇一執行
覆寫 (Overriding): 將繼承下來的方法,以同名函數蓋掉的特色
![Page 25: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/25.jpg)
Java programming 25
Java version history JDK 1.0 (January 23, 1996) JDK 1.1 (February 19, 1997) J2SE 1.2 (December 8, 1998) J2SE 1.3 (May 8, 2000) J2SE 1.4 (February 6, 2002) J2SE 5.0 (September 30, 2004) Java SE 6 (December 11, 2006) Java SE 7 (July 28, 2011)
![Page 26: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/26.jpg)
Java programming 26
Java 的版本 Java 自第二版 (1.2) 開始分為三個版本,
類別函式庫名稱也由 JDK(Java Deve-lopment Kit) 改成 Java 2 SDK(Software Development Kit) J2EE (Enterprise Edition) J2SE (Standard Edition) J2ME (Micro Edition)
![Page 27: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/27.jpg)
Java programming 27
Java Platforms
Java Card for smartcards. Java Platform, Micro Edition (Java ME). Java Platform, Standard Edition (Java
SE). Java Platform, Enterprise Edition (Java
EE).
![Page 28: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/28.jpg)
Java programming 28
Java Platform Edition
![Page 29: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/29.jpg)
Java programming 29
JAVA國際認證
![Page 30: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/30.jpg)
Java programming 30
Development Environments
Sun Java Development Kit (JDK) Sun NetBeans IBM Eclipse, GNU Eclipse Borland JBuilder MetroWerks CodeWarrior BlueJ jGRASP
![Page 31: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/31.jpg)
Java programming 31
Interpretation vs. Compilation
C++ Compiler
Java Compiler
Java Virtual Machine
C++ Source (*.c)Java Source
(*.java)
Byte-code (*.class)
Client Platform (hardware/operat
ing system)
Client Platform (hardware/operat
ing system)
![Page 32: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/32.jpg)
Java programming 32
JDK (Java Development Kit)
![Page 33: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/33.jpg)
Java programming 33
JDK (Java Development Kit)
![Page 34: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/34.jpg)
Java programming 34
JDK (Java Development Kit)
javac(.exe) Java 的編譯器 , 可將 .java 原始档編譯
為 .class 類別档。 java(.exe)
JVM 虚擬機器的執行档 , 可用來執行 Java Application 的 Bytecode(.class 類別档 ) 。
![Page 35: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/35.jpg)
Java programming 35
Java Virtual Machine
Javaソースコード
Javaバイトコード
Javaコンパイル( javac )
x86アーキテクチャ( JavaVM )
MIPSアーキテクチャ( JavaVM )
SPARCアーキテクチャ( JavaVM )
……
![Page 36: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/36.jpg)
Java programming 36
Java Virtual Machine
![Page 37: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/37.jpg)
Java programming 37
Java Virtual Machine
![Page 38: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/38.jpg)
Java programming 38
Garbage Collection (1)
Garbage Collection 機制可以自動偵測未被任何參考參照到的陣列或物件,「必要時」會將其所佔記憶體空間釋放。
[例 ]:
int[ ] a = new int[100];
int[ ] b = new int[200];
a = b;
![Page 39: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/39.jpg)
Java programming 39
Garbage Collection (2)
如欲釋放某物件或陣列,只需要停止參照,或指定為 null ,即可由 Garbage Collection 機制將其釋放。
[例 ]:
int[ ] c = new int[300];
……
c = null;
![Page 40: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/40.jpg)
Java programming 40
Garbage Collection (3)
由 Garbage Collection 機制管理記憶體可避免人為的錯誤 ; 但未被參照到的物件之空間並非馬上被釋放回收,且須時間運作,效率較差。
![Page 41: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/41.jpg)
Java programming 41
IDE (Integrated Development Environment)
NetBeans (Sun) JBuilder (Borland) Eclipse (IBM)
![Page 42: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/42.jpg)
Java programming 42
Java の実行環境
ソース
翻訳
機械語Windows
機械語Mac
機械語Linux
実行
<通常の言語>
実行 実行
ソース
翻訳
JVM Windows
JVM Mac
JVM Linux
実行
< Java 言語>
実行 実行
バイトコード
機械語はプラットフォーム毎に異なる。
![Page 43: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/43.jpg)
Java programming 43
Java 語言的特點 (1)
簡單 (Simple):指的是去除了 C/C++中較少使用或可能不安全的功能,例如指標,運算子重載,多重繼承等。
物件導向的 (Object-oriented):利用OOP 的三種基本特性: PIE( 多型,繼承,封裝 ) ,來設計出可重複使用的元件,使系統有彈性易於維護。
![Page 44: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/44.jpg)
Java programming 44
Java 語言的特點 (2)
網路的 (Network-Savvy):提供容易使用的 API 來撰寫網路程式
直譯式的 (Interpreted) : bytecode在 JVM 上執行時, JIT負責轉換為機器碼。
穩健的 (Robust):捨棄了對記憶體的指標運作。
![Page 45: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/45.jpg)
Java programming 45
Java 語言的特點 (3)
安全性 (Secure) : 資源回收處理 (Garbage Collection)由 JVM 自行作記憶體管理,例外處理 (Exception) 可預防突發錯誤的産生。
結構中立 (Architecture Neutral):程式執行在虚擬機器上。
![Page 46: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/46.jpg)
Java programming 46
Java 語言的特點 (4)
可攜的 (Portable): Write once, run any-where 指的是由 JVM 與不同的作業系統溝通。
高效率的 (High Performance):利用 HotSpot, JIT 技術改善效能。
多執行緒的 (Multithreaded) : Java程序可發出多隻並行的輕量化行程。
![Page 47: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/47.jpg)
Java programming 47
Java 語言的特點 (5)
動態的 (Dynamic) : Java 程式執行時動態的連結類別庫。
支援萬國碼 (Unicode):變數與類別名稱皆可使用中文
![Page 48: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/48.jpg)
資料型態 (Data type)
基本資料型態 (primitive data type)
結構化資料型態 (structured data
type)
抽象資料型態 (abstract data type)
Java programming 48
![Page 49: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/49.jpg)
Java programming 49
Java 的資料型態 (1)
Java 的資料型態大小不會像 C/C++ 一樣隨著平台不同而不同,它在所有平台上都是一樣的。
由於 Java在 char 的型態部分採用 Unicode, 換句話説 , 可以用中文取變數名稱。
Java 的變數可以指向二種資料型態: 1. 原生資料型態 2. 參考資料型態
![Page 50: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/50.jpg)
Java programming 50
Java 的資料型態 (2)
參考資料型態 (wrapper class)定義在 java.lang 的套件中。
原生資料型態中的整數資料型態 (byte, short, int, long) 可使用 10進位 , 8進位與16進位表示。
原生資料型態中的浮點數資料型態 (float, double) ,預設浮點數為 double 型態。
![Page 51: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/51.jpg)
Java programming 51
Java 的資料型態 (3)
原生資料型態除 boolean之外彼此間可轉型 ( 自動轉型或強制轉型 ) 。
原生資料型與參考資料型態之間必須利用物件的靜態方法來轉型。
在運算子 (operators) 為「+= , -=, *= , /=」時會發生不明確 (隱含 )轉型的情況,原來需強制轉型的資料會變成自動轉型。
![Page 52: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/52.jpg)
Java programming 52
データ型( data type) 基本的な型
整数、浮動小数点数、真理値、文字 参照型
クラス(など)を参照する型
![Page 53: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/53.jpg)
Java programming 53
資料型態 (Data type)
原始資料型態 (primitive type) 整數 (byte, short, int, long) 浮點數 (float, double) 布林 (boolean) 字元 (char)
非原始資料型態 (non-primitive type)
![Page 54: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/54.jpg)
Java programming 54
基本型( primitive types)
![Page 55: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/55.jpg)
Java programming 55
原始資料型態 (primitive type)Primitive Types / simple type 範 圍
byte (1byte) -128 ~ 127short (2bytes) -32768 ~ 32767
int (4bytes) -2147483648 ~ 2147483647
long (8bytes) -9223372036854775808 ~ 9223372036854775807
float (4bytes) +-3.4028237*10+38 ~ +-1.30239846*10-45
double (8bytes) +-1.76769313486231570*10+308 ~ 4.94065645841246544*10-324
char (2bytes) Unicode characters
boolean (1bytes) true或 false
![Page 56: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/56.jpg)
Java programming 56
Primitive Types / simple type
範 圍wrapper class /refrence type / composition type
byte (1byte) -128 ~ 127 Byte short (2bytes) -32768 ~ 32767 Short
int (4bytes) -2147483648 ~ 2147483647 Integer
long (8bytes) -9223372036854775808 ~ 9223372036854775807
Long
float (4bytes) +-3.4028237*10+38 ~ +-1.30239846*10-45
Float
double (8bytes)
+-1.76769313486231570*10+308 ~ 4.94065645841246544*10-
324
Double
char (2bytes) Unicode characters Character
boolean (1bytes) true或 false Boolean String
![Page 57: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/57.jpg)
Java programming 57
Java 的内建資料型別 (1) boolean :布林値
僅有兩個常數, true和 false 。 byte :位元組型別値
長度一個位元組,取値範圍是 -128至 127 。 short:短整數
長度兩個位元組,取値範圍是 -32768至 32767 。
int:整數 長度 32位元(四個位元組),取値範圍是 -2147483648至 2147483647 。
![Page 58: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/58.jpg)
Java programming 58
Java 的内建資料型別 (2) long:長整數
長度八個位元組,取値範圍是 -9223372036854775808至
9223372036854775807 。 float:單精度 IEEE754浮點數
長度四個位元組。 double:倍精度 IEEE754浮點數
長度八個位元組。 char:字元型
長度 16位元,支援所有的 UCS-2和 ASCII 編碼。
![Page 59: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/59.jpg)
Java programming 59
Java 的内建資料型別 (3)
若整數資料未指定型別 ; 範圍在 32 bits (-231 ~ 231-1) 的會被視為 int 型別 , 超過此範圍者視為 long 型別。
所有的浮點數資料皆預設為 double 型別。
![Page 60: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/60.jpg)
Java programming 60
Default ValuesData Type Default Value (for fields)
byte 0
short 0
int 0
long 0L
float 0.0f
double 0.0d
char '\u0000'
String (or any object) null
boolean false
![Page 61: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/61.jpg)
Java programming 61
Java 的常數: final 修飾子常 數
數値 整數: final int a = 10
浮點數: final double d1 = 1.23 (預設 )
final float d2 = 1.23f
字元: final char var = 'A'
final char var = '\u0041'
字串: final String var = "hello"
布林: final boolean flag = true
![Page 62: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/62.jpg)
Primitive Data Types 的轉型
自動轉型 強制轉型
double d; d=123;
d為 double 型態 ; 123 為 int 型態 小轉大,系統自動轉型
int a; a= (int) 123.123;
a為 int 型態 ; 123.123 為double 型態
大轉小,需強制轉型 ,否則會編譯錯誤
Java programming 62
![Page 63: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/63.jpg)
Primitive Data Type 與 Wrapper class 型態的轉換
基本資料型態轉包裝類別 包裝類別轉基本資料型態
Integer i = new Integer(10);Float f = new Float(10.1);
利用java.lang 的wrapper class ,傳入primitive type ,傳回對應wrapper class 的實例
Integer.valueOf(i);Double.valueOf(f);
利用java.lang 的wrapper class ,傳入wrapper class 的實例,傳回對應的 primitive type
Java programming 63
![Page 64: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/64.jpg)
Java programming 64
資料型態強制轉換 若要指定整數資料為 long 型別 , 在數値後面要加上「L」或「 l」。
若要指定浮點數資料為 float 型別 , 在數値後面要加上「F」或「 f 」。
若要將大範圍型別的數値資料轉換成範圍較小之數値資料 , 必須使用指定型別 : ( 指定型別 ) 資料或變數
![Page 65: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/65.jpg)
Java programming 65
基本資料型態轉換成 String (1)
String.valueOf(boolean b) String.valueOf(char c) String.valueOf(char[ ] data) String.valueOf(char[ ] data, int
offset, int count)
![Page 66: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/66.jpg)
Java programming 66
基本資料型態轉換成 String (2)
String.valueOf(double d) String.valueOf(float f) String.valueOf(int i) String.valueOf(long l) String.valueOf(Object obj)
![Page 67: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/67.jpg)
Java programming 67
String轉換成數字資料型態 Byte.parseByte(String s) Double.parseDouble(String s) Float.parseFloat(String s) Integer.parseInt(String s) Long.parseLong(String s)
![Page 68: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/68.jpg)
Java programming 68
コメント(注釈) // ここにコメントを記述します。 a = b + c; /* ここにもコメントを記述します。 */ /*
* 複数行にまたがるコメントも可能です。 */ /**
* この部分は javadoc コマンドで抜き出すことができます。
*/
![Page 69: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/69.jpg)
Java programming 69
commenting // This is an example of a single line comment
using two slashes /* This is an example of a multiple line comment
using the slash and asterisk. This type of comment can be used to hold a lot of information or deactivate code but it is very important to remember to close the comment. */
/** * This is an example of a Javadoc comment; * Javadoc can compile documentation from this
text. */
![Page 70: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/70.jpg)
Java programming 70
主要な Java パッケージ
パッケージ名 説 明java.applet アプレット作成java.awt GUIjava.io 入出力java.lang Java 言語の基本機能java.math 算術演算java.net ネットワーク処理java.util ユーティリティ機能
![Page 71: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/71.jpg)
Java programming 71
java.lang.Math 類別
![Page 72: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/72.jpg)
Java programming 72
Math. メソッド名 ( 引数 );
class MathExample { public static void main(String[] args) { System.out.println("-5 の絶対値は " + Math.abs(-5)); System.out.println("3.0 の平方根は " + Math.sqrt(3.0)); System.out.println ("半径2の円の面積は " + 2*2*Math.PI); System.out.println ("sin60° は " + Math.sin(60.0*Math.PI / 180.0)); }}
![Page 73: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/73.jpg)
Java programming 73
I/O架構圖 ( 以 byte 為單位 )
FileInputStream
FileOutputStream
ByteArrayInputStream
ByteArrayOutputStream
PipedInputStream
PipedOutputStream
StringBufferInputStream
System.in
System.out
System.err
Low LevelMedia Hight Level
FilterInputStream
FilterOutputStream
DataInputStream
DataOutputStream
BufferedInputStream
BufferedOutputStream
PushbackInputStream
LineNumberInputStream
PrintStream
file
memory
network
console
![Page 74: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/74.jpg)
Java programming 74
I/O架構圖 ( 以 char 為單位 )
FileReader
FileWriter
CharArrayReader
CharArrayWriter
PipedReader
PipedWriter
StringReader
StringWriter
InputStreamReader
OutputStreamWriter
FilterReader
FilterWriter
BufferedReader
BufferedWriter
PushBackReader
LineNumberReader
PrintWriter
Low LevelMedia Hight Level
file
memory
InputStreamOutputStream
![Page 75: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/75.jpg)
Java programming 75
使用 BufferedReader 類別讀取鍵盤輸入的資料
import java.io.*;
public class 主類別名稱 { public static void main(String args[]) throws IOException { BufferedReader buf; String str1; buf = new BufferedReader(new InputStreamReader(System.in)); str1 = buf.readLine(); ............ }}
![Page 76: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/76.jpg)
Java programming 76
キーボードからの入力 (1)import java.io.*; class Sample1 { public static void main (String args[ ]) throws IOException { System.out.println(“請輸入提示字串…” ); BufferedReader br = new BufferedReader(new InputStreamReader(System. in)); String str = br.readLine(); System.out.println(“您輸入的字串是…” + str); } }
![Page 77: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/77.jpg)
Java programming 77
キーボードからの入力 (2)import java.io.*;
class Sample2 { public static void main(String args[ ]) throws IOException { System.out.println(“請輸入一整数…” ); BufferedReader br = new BuffereReader(new InputStreamReader(System.in)); String str = br.readLine(); int num = Integer.parseInt(str); System.out.println(“您輸入的整数値 = ” + num); }}
![Page 78: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/78.jpg)
Java programming 78
使用 Console 物件讀取鍵盤輸入的資料import java.io.Console;
public class 主類別名稱 { public static void main(String args[]) { Console console = System.console(); String str1; str1 = console.readLine() int i = Interger.parseInt(str1); ............ }}
![Page 79: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/79.jpg)
Java programming 79
java.util.Scanner 類別 Scanner
ファイルやキーボードからの入力が容易にできるクラスである。
利点 BufferedReader オブジェクトを作る必要がな
い。 文字、整数、実数を判断できるメソッドを持っ
ているので Integer.parselnt() などの型変換がいらない。
![Page 80: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/80.jpg)
Java programming 80
Scanner を用いた読み込み
import java.util.Scanner; キーボードからの読み込み
Scanner sc = new Scanner(System.in);
ファイルからの読み込み Scanner sc =
new Scanner(new FileStream("filename.txt"));
![Page 81: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/81.jpg)
Java programming 81
Scanner Methods
![Page 82: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/82.jpg)
Java programming 82
Numeric and String Methods
Method Returnsint nextInt() Returns the next token as an int. If the next token is
not an integer, InputMismatchException is thrown.long nextLong() Returns the next token as a long. If the next token is
not an integer, InputMismatchException is thrown.float nextFloat() Returns the next token as a float. If the next token is
not a float or is out of range, InputMismatchException is thrown.
double nextDouble()
Returns the next token as a long. If the next token is not a float or is out of range, InputMismatchException is thrown.
String next()
Finds and returns the next complete token from this scanner and returns it as a string; a token is usually ended by whitespace such as a blank or line break. If not token exists, NoSuchElementException is thrown.
String nextLine()
Returns the rest of the current line, excluding any line separator at the end.
void close() Closes the scanner.
![Page 83: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/83.jpg)
Java programming 83
Boolean Methods
Method Returnsboolean hasNextLine()
Returns true if the scanner has another line in its input; false otherwise.
boolean hasNextInt()
Returns true if the next token in the scanner can be interpreted as an int value.
boolean hasNextFloat()
Returns true if the next toke in the scanner can be interpreted as a float value.
![Page 84: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/84.jpg)
Java programming 84
Scanner 使用範例 (1)
import java.util.Scanner; public class 主類別名稱 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println(“請輸入一個整數…” ); int i = sc.nextInt(); … } }
![Page 85: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/85.jpg)
Java programming 85
Scanner 使用範例 (2)import java.util.Scanner;
public class Input { public static void main(String[] args) {
Scanner cin = new Scanner(System.in); //建立輸入處理物件
float a = cin.nextFloat(), b = cin.nextFloat(); //讀取兩個浮點數
System.out.println(a + b); //輸出 a+b 的運算値
String c = cin.next(); //讀取一個字串System.out.println(c); //輸出 c的字串内
容}
}
![Page 86: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/86.jpg)
Java programming 86
跳脱字元(Escape sequence character)
跳脱字元 效果\' 單引號『 '』
\" 雙引號『 "』
\\ 反斜線符號『 \』
\0 空白字元( Space)\n 換行 (New line)
\b 退格一格( Backspace)\t 水平跳格,與 tab鍵作用相同 (Tab)
\f 通知印表機,資料由下一頁開始列印( Format)\r 回到該行第一格 (Carriage Return)
\ddd 8進制數字指定 Unicode
\uxxxx 16進制數字指定 Unicode
![Page 87: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/87.jpg)
Java programming 87
java.util.Formatter 類別方 法 作 用
void close() 關閉 Fomatter 物件並釋放資源void flush() 將緩衝區中的資料寫回 Fomatter 物件
中Fomatter format(Locale, String format, Object…args)
將需要格式化的 args 資料以地區別及Format 中定義的格式輸出
Fomatter format(String fomat, Object…args)
將需要格式化的 args 資料以 format 中定義的格式輸出
lOException ioException() 取得 Appendable 物件丟出的例外Locale locale() 傳回 Fomatter 物件的地區別Appendable out() 傳回 Fomatter 物件的輸出目的地String toString() 傳回格式化的結果,但最好是改用
「 out( ).tostring( ) 」
![Page 88: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/88.jpg)
Java programming 88
format 方法 完整的使用格式:
%[argument_index$] [flags] [width] [.precision] conversion
![Page 89: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/89.jpg)
Java programming 89
Common Formatting Codes
![Page 90: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/90.jpg)
Java programming 90
Conversion (1)
字元 種類 作 用
b 或是 B
一般如果資料為 null ,則輸出 false如果資料為 boolean 型態,則輸出 stringValue() 的執行結果除了上述的形況外,輸出的結果皆為 true
h 或是
H一般
如果資料為 null ,則輸出 null除了上述的形況外,輸出的結果為十六進位的方式,如同執行「 lnteger.tpHexString(arg.hash Code( ))」的結果
s 或是 S
一般
如果資料為 null ,則輸出 null如果資料實作了 Formattable介面,則輸出「 formatTo」的執行結果除了上述的形況外,輸出的結果執行 toString 的結果
![Page 91: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/91.jpg)
Java programming 91
Conversion (2)字元 種類 作 用c 或是 C 字元 輸出 Unicode字元
d 整數 輸出十進位的資料o 整數 輸出八進位的資料
x 或是 X 整數 輸出十六進位的資料e 或是 E 浮點數 輸出科學記號表示方式的資料
f 浮點數 輸出十進位的資料g 或是 G 浮點數 依精準度 (precision) 的設定輸出十進位或是以
科學記號表示的資料a 或是 A 浮點數 輸出十進位或是以科學記號表示的資料t或是 T 日期時間 日期或是時間輸出格式的前導字元
% 百分比 輸出百分比格式的資料n 換行符號 輸出換行字元
![Page 92: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/92.jpg)
Java programming 92
時 間 日 期字元 作 用 字
元作 用
H 顯示時, 24小時格式,從 00~23,以 1 個字元表示
B 依地區的設定輸出月份的全名。例如「一月」、「 January 」
l 顯示時, 12小時格式,從 01~12,以 2 個字元表示
b 依地區的設定輸出月份的縮寫。例如「一月」、「 Jan」
k 顯示時, 24小時格式,從 0~23,以 1 個或 2 個字元表示
A 依地區的設定輸出星期的全名。例如「星期日」、「 Sunday」
l 顯示時, 12小時格式,從 1~12,以 1 個或 2 個字元表示
a 依地區的設定輸出星期的縮寫。例如「星期日」、「 Sun」
M 顯示分,從 00~59 ,以 2 個字元表示
Y 輸出4個數字的西元年,例如:2005
S 顯示秒,從 00~60 ,以 2 個字元表示。 60代表閏秒
y 輸出西元年的後兩個數字,例如:05
p 依地區的設定輸出「上午」或是「下午」。也可能是「 am」、「 pm」
m 輸出兩個數字的月份,例如:01、02、12
z 以數字的方式輸出地區別。例如:台灣為 0800
d 輸出兩個數字的日期,例如:01、02、30、31
Z 以文字的方式輸出地區別。例如:台灣為「 CST」
e 輸出一個或是兩個數字的日期,例如:1、2、30、31
![Page 93: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/93.jpg)
Java programming 93
flag 參數Flag 作 用- 讓輸出靠左對齊# 適用另一種格式輸出+ 在數字左邊顯示正負符號空格 在整數或浮點數前顯示一個空格
0 靠右對齊,數字不足時,補上 0
, 一千分為表示( 負號以小括號表示
![Page 94: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/94.jpg)
Java programming 94
printf 使用範例 (1)
Example 1: 控制寬度和精度 System.out.printf(“%5.3f”, Math.PI) , 控制輸出寬度為 5 ,精度為 3 , 結果為“ 3.142”
(輸出的最前面有一个空格 )
![Page 95: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/95.jpg)
Java programming 95
printf 使用範例 (2)
Example 2: 使用 argument_index System.out.printf(“%s and %s”,
“You”, “Me”)
輸出” You and Me” System.out.printf(“%2$s and %2$s”,
“You”, “Me”)
輸出”Me and Me”
![Page 96: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/96.jpg)
Java programming 96
プログラミング基礎演習
Console Assignment Expression Divisor If / If-else Switch-case
For loop While loop Random Bubble sort Method Recursive
![Page 97: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/97.jpg)
Java programming 97
Java Virtual Machine
Javaソースコード
Javaバイトコード
Javaコンパイル( javac )
x86アーキテクチャ( JavaVM )
MIPSアーキテクチャ( JavaVM )
SPARCアーキテクチャ( JavaVM )
……
![Page 98: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/98.jpg)
Java programming 98
プログラムの作成
![Page 99: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/99.jpg)
Java programming 99
java 程式的編輯器 整合式編輯器
Eclipse, JCreator LE 等 視覺化編輯器
Jbuilder, IntelliJ IDEA, Visual Cafe, Workshop, Forte for Java 等
純文字編輯器 免費軟體: Crimson, ConText, NotePad 等 共享軟體: UltraEdit, EditPlus 等
![Page 100: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/100.jpg)
Java programming 100
JDK (Java Development Kit)
javac(.exe) Java 的編譯器 , 可將 .java 原始档編譯
為 .class 類別档。 java(.exe)
JVM 虚擬機器的執行档 , 可用來執行 Java Application 的 Bytecode(.class 類別档 ) 。
![Page 101: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/101.jpg)
Java programming 101
![Page 102: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/102.jpg)
Java programming 102
Java 言語プログラム作成の流れ
1) プログラムソースファイルの作成 プログラムを書く ( クラスを書く ) ファイルの拡張子は .java (例えば Test.java)
2) プログラムのコンパイル javac ファイル名(例えば javac Test.java )
3) プログラムの実行 java クラス名(クラス名が Test なら java
Test )
![Page 103: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/103.jpg)
Java 程式寫作上的10 大錯誤排行榜 (1) By David Reilly
10 : Accessing non-static member variables from static methods (such as main)
9 : Mistyping the name of a method when overriding
8 : Comparison assignment ( = rather than == )
7 : Comparing two objects ( == instead of .equals)
Java programming 103
![Page 104: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/104.jpg)
Java 程式寫作上的10 大錯誤排行榜 (2) By David Reilly
6 : Confusion over passing by value, and passing by reference
5 : Writing blank exception handlers 4 : Forgetting that Java is zero-
indexed 3 : Preventing concurrent access to
shared variables by threads 2 : Capitalization errors 1 : Null pointers
Java programming 104
![Page 105: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/105.jpg)
Java programming 105
プログラミング演習 請將程式碼及執行結果貼在 MS Word
上 (filename = ‶A4010N099_09″), 儲存在桌面備用。
同學若來不及於下課前完成作業繳交程序 , 另請在習作完成後 , 儘速mail給
任課教師 ([email protected]) 。
( 班別 , 學號 , _, 作業回數 )
![Page 106: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/106.jpg)
Java programming 106
/*
習題 1. Hello, java SE7 !
filename: Hello.java
4000N000, 澄原日先 (101.02.20.)
*/
public class Hello {
public static void main (String args[]) {
System.out.println("Hello, java SE7 !");
System.out.println("4000N000, 澄原日先, 101.02.20.");
}
}
![Page 107: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/107.jpg)
Java programming 107
Java 程式 應用程式 (Application)
Java 應用程式是可以獨立執行的程式 小程式 (X-let)
瀏覽器端執行的小程式 (Applet) : Java applet是嵌在 HTML 中的程式
伺服器端執行的小程式 (Servlet)
![Page 108: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/108.jpg)
Java programming 108
Java Application 基本結構
![Page 109: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/109.jpg)
Java programming 109
Application 的結構 (例 )/* 只有註解可以放在 package 區之前*/package exam.test;import java.awt.Button; import java.util.*;
public class HelloWorld { public static void main( String[] args ) { System.out.println( “Hello World ” ); tmp obj = new tmp(); obj.i = 6; System.out.println( obj.i ); }}
class tmp{ int i = 5; }
![Page 110: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/110.jpg)
Java programming 110
Java 語言的寫作風格 Class Name請首字大寫 Variable Name和Method Name請首字小
寫 如果名稱由數個英文字組成 ,第 2個英文字以後首字大寫
内縮4個空格 註解部分如要變成説明文件 ,請遵照 javadoc這個工具的寫作規則
![Page 111: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/111.jpg)
Java programming 111
Java 程式碼慣例 (1)
一行不超過 80 個字元 一行一個宣告 使用 if 時,永遠加上括號 在變數宣告的地方進行初始化 (除非它
的値需要經過某些運算 ) 。
![Page 112: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/112.jpg)
Java programming 112
Java 程式碼慣例 (2)
class 名稱應該是名詞 method 名稱應該是動詞 變數名稱應該是有意義的短單字 常數名稱應該是以底線 ("_") 分隔的全大
寫字
![Page 113: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/113.jpg)
Java programming 113
Java 程式碼慣例 (3)
更多詳盡的程式慣例,請參考官方文章 “ Code Conventions for the Java
Program-ming Language”
http://www.oracle.com/technetwork/java/
codeconvtoc-136057.html
![Page 114: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/114.jpg)
Java programming 114
System.out.println() /.print()
System.out.println(内容 ) 輸出”内容”加上”斷行 \r\n”至 Console
(螢幕 )
System.out.print(内容 ) 輸出”内容”至 Console(螢幕 )
如果要輸出的内容需要有字串、文字、日期等,可以利用字串的連接 (+) 來把字串串連起來進行輸出。
![Page 115: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/115.jpg)
Java programming 115
System.out.printf()%% 在字串中顯示%
%d 以 10 進位整數方式輸出,提供的數必須是 Byte、 Short、 Integer 、 Long、或 BigInteger
%f 將浮點數以 10進位方式輸出,提供的數必須是 Float、 Double、或 BigDecimal
%e, %E 將浮點數以 10進位方式輸出,並使用科學記號,提供的數必須是 Float、 Double、或 BigDecimal
%a, %A 使用科學記號輸出浮點數,以 16進位輸出整數部份,以10進位輸出指數部份,提供的數必須是Float 、 Double、或 BigDecimal
%o 以 8 進位整數方式輸出,提供的數必須是 Byte 、 Short、 Integer 、 Long、或 BigInteger
![Page 116: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/116.jpg)
Java programming 116
System.out.printf() -(續 )
%x, %X 將整數以 16進位方式輸出,提供的數必須是 Byte、 Short、 Integer 、 Long、或 BigInteger
%s, %S 將字串格式化輸出 %c, %C 以字元方式輸出,提供的數必須是 Byte 、 Short、
Character 、或 Integer
%b, %B 將“ true” 或“ false”輸出(或“ TRUE”、 “ FALSE” ,使用 %B) 。另外,非 null 値輸出是“ true” , null 値輸出是 "false"
%t, %T 輸出日期 /時間的前置,詳請看線上 API 文件
![Page 117: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/117.jpg)
Java programming 117
java 程式的編寫與執行 D:\>md myjava
D:\>cd myjava
D:\myjava>
開啓記事本 ,鍵入程式碼並以 filename:
Ex01.java存到 D:\myjava
D:\myjava>javac Ex01.java // 編譯 D:\myjava>java Ex01 // 執行
![Page 118: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/118.jpg)
Java programming 118
Hello.java
public class Hello { public static void main(String
args[ ]) { System.out.println("Hello"); }}
![Page 119: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/119.jpg)
Java programming 119
Ex01: 我的第一個 java 程式/*習題 1: Hello, java!档名 : Ex01.java四環一 A, 4010N901, 李大仁*/package myjava.ex01;import java.lang.*;import java.io.Console;
![Page 120: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/120.jpg)
Java programming 120
public class Ex01
{
public static void main (String args[])
{
System.out.println(“Hello, java!”);
}
}
(續前頁 )
![Page 121: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/121.jpg)
Java programming 121
if (……) {
for (… ; … ; …) {
while (……) {
}
}
}
K&R (Kernighan & Ritchie)縮排
![Page 122: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/122.jpg)
Java programming 122
java 程式的編輯 (1)
註解可使用「 /*......*/」與「 //...............」,如要變成説明文件 , 請依循 javadoc 這個工具的規則「 /**........*/」
必須以 .java 作為副档名存档 類別名稱必須與主档名相同 毎個档案可以有許多的 class, 但只能有
一個是 public
![Page 123: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/123.jpg)
Java programming 123
java 程式的編輯 (2)
若程式中有多個 class, 則編譯時亦會産生多個 .class 档案
Java 會區分識別字的大小寫 必須以分號作為毎一行的結束
![Page 124: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/124.jpg)
Java programming 124
Java 程式中的各項命名 (1)
識別字可使用 Unicode ,因此可以使用中文,但須注意中間不可有空白,開頭不可有數字,不可為關鍵字(Keywords)
建議 Class Name首字大寫 , Variable Name 和 Method Name 請首字小寫
![Page 125: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/125.jpg)
Java programming 125
Java 程式中的各項命名 (2)
建議名稱若由數個英文字組成 ,第二個英文字以後首字大寫 (camelcase) ,而不要使用匈牙利命名法 (Hungarian Notation)
建議名稱必須有意義
![Page 126: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/126.jpg)
Java programming 126
Java Programming Language Keywords
![Page 127: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/127.jpg)
Java programming 127
class 類別宣告 class 的名稱與档案名稱必須相同 毎個档案可以有許多的 class 存在 , 但只能有一個是 public
![Page 128: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/128.jpg)
Java programming 128
package宣告區 (1)
package宣告本程式屬於何類套件 若未指定 package則預設為目前目録 Java 中同性質的 classes 可被組織為
packages ,它們對應於档案系統的目録結構,可觀看 JDK目録中的 src.zip (例 ) java.awt.Button.java 程式碼中的
package 設定為 package java.awt
![Page 129: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/129.jpg)
Java programming 129
package宣告區 (2)
package 名稱就像是姓氏,而 class 名稱就像是名字。 package 名稱有很多的,就好像是複姓。 不同的 package之中可以有相同的 class 名稱。 (例 ) java.io.InputStream則是複姓
java.io ,名字為 InputStream 的類別, classpath + 程式内的 package = 档
案完整路徑
![Page 130: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/130.jpg)
Java programming 130
import敘述區 (1)
Java 的 import 與 C 的 include 意義相仿而實質不大相同, java 的 import 只是告知 VM要到哪裡尋找套件,並不會佔用記憶體
若我們想使用 java.io 這個套件中的FileReader ,需在程式中指定為 import java.io.FileReader
![Page 131: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/131.jpg)
Java programming 131
import敘述區 (2)
若想在程式中引入 java.io 整個套件 , 可在程式中指定 import java.io.*
import 僅能引用該層 ,下一層必須另行 import; 例如 import java.io.File 只能使用 File, 不能使用位於上層的FileReader
![Page 132: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/132.jpg)
Java programming 132
import敘述區 (3)
因為 java.lang 這個套件實在是太常用到了,幾乎沒有程式不用它的, 所以不管你有沒有寫 import java.lang; ,編譯器都會自動幫你補上
![Page 133: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/133.jpg)
Java programming 133
import敘述區 (4)
java 的 API 中會有相同名稱的 class存在不同 package 的情形,例如 java.util 與 java.sql 都有 Date 這個 class, 這時引入時若都採取 import整個 package 的方式,則編譯會出錯,建議放棄其中之一的 import 敘述,在程式碼中直接使用完整路徑取用 class即可。
![Page 134: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/134.jpg)
Java programming 134
java常用的套件 (1)
java.lang 預設引用的套件,包括了基本語言特性與
處理陣列與字串的函式 java.io java.util javax.swing
![Page 135: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/135.jpg)
Java programming 135
java常用的套件 (2)
java.awt JDK1.1提出的 GUI
java.awt.event GUI 的事件驅動器
java.awt.image GUI 的 Image
![Page 136: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/136.jpg)
Java programming 136
class, interface, enum 區 類別宣告 class 的名稱與档案名稱必須相同 毎個档案可已有許多的 class 存在 , 但只能有一個是 public
![Page 137: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/137.jpg)
Java programming 137
キーボードからの入力 (1)
imoport java.io.console; Console 変数 = System.console(); String str = 変数 .readLine(); [注 ]: 読み込んだデータは String型 ( 文字列 )
![Page 138: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/138.jpg)
Java programming 138
キーボードからの入力 (2)
imoport java.util.Scanner; Scanner 変数 = new Scanner
(System.in); String str = 変数 .next(); [注 ]: 読み込むデータの型に合わせたメソッドを使って読み込み。
![Page 139: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/139.jpg)
Java programming 139
Scannerクラスを使ってデータを読み込むときのメソッド
メソッド データの型
意味
next() String 次のトークンを読み込む
nextLine()
String 次の行を読み込む
nextByte()
byte 次の byte 値を読み込む
nextShort()
short 次の short 値を読み込む。
nextInt()
int 次の int 値を読み込む
nextLong()
long 次の long 値を読み込む
nextFloat()
float 次の float 値を読み込む
nextDouble()
double
次の double 値を読み込む
![Page 140: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/140.jpg)
Java programming 140
キーボードからの入力 (3)
import java.io.* main(String args[]) throws
IOException BufferedReader 変数 = new
BufferedReader (new InputStreamReader (System.in));
String str = 変数 .readLine(); [注 ]: 読み込んだデータは String型 ( 文字列 )
![Page 141: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/141.jpg)
Java programming 141
文字列から数値への変換読み込むデータの型
使用メソッド
byte Byte.parseByte(変換文字列 )
shot Short.parseShort(変換文字列 )
int Integer.parseInt(変換文字列 )
long Long.parseLong(変換文字列 )
float Float.parseFloat(変換文字列 )
double Double.parseDouble(変換文字列 )
![Page 142: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/142.jpg)
Java programming 142
演習 1: 文字列 寫一程式,可以在螢幕上顯示「 Hello,
java SE7 !」;在程式中須加入單行及多行註解,在註解中要有自己的班級、學號、姓名及程式完成日期等資訊。
![Page 143: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/143.jpg)
Java programming 143
演習 1: 文字列 文字の表示
![Page 144: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/144.jpg)
Java programming 144
指定敘述 (assignment)
變數 = 資料、變數或運算式 ;
![Page 145: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/145.jpg)
Java programming 145
變數的宣告 使用變數前,必須先宣告此變數的資料
型態 變數的宣告不必在程式最前面,可以在需要時再宣告
資料型別 變數名稱 1[= 初値 1], 變數名稱 2[= 初値 2];
![Page 146: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/146.jpg)
Java programming 146
算術 (Arithmetic)運算符號運算符號 功能敘述+ 加* 乘- 減/ 除% 餘數++ 加一-- 減一
![Page 147: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/147.jpg)
Java programming 147
除法 (/) 型別的問題 當分子與分母皆為 double 時,除法運
算的結果為 double 。 當分子與分母其一為 double而另一為
int 時,除法運算的結果仍為 double 。 當分子與分母皆為 int 時,除法運算的
結果為 int 。若結果具有小數,則截斷小數部分,僅保留整數部分。
![Page 148: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/148.jpg)
Java programming 148
邏輯 (Logic)運算符號運算符號 功能敘述> 大於< 小於>= 大於等於<= 小於等於== 等於!= 不等於&& logic AND
|| logic OR
! logic NOT
instanceofreference instanceof ClassName判斷 reference 所指到的物件其型態是否和 ClassName相容
![Page 149: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/149.jpg)
Java programming 149
位元 (Bit)運算符號運算符號 功能敘述& bit AND
<< left bit shift
| bit OR
>>right bit shift with sign
^ bit XOR
~ 1 補數
>>>同>>但左邊一律補零
![Page 150: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/150.jpg)
Java programming 150
其他運算符號運算元 功能敘述= 將右邊的値複製到左邊的變數
(type) 將右邊的數値或 reference轉換成 type 型別
+= 將右邊的數値加上左邊的數値然後指定給左邊的變數
?: 若 ? 左邊成立則做 : 左邊否則做 : 右邊, 合併兩個運算視為一個敘述(運算式 ) 表示 ( )内優先運算
.Reference.ObjectMember或ClassName.ClassName存取物件或類別成員
new 産生物件
![Page 151: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/151.jpg)
Java programming 151
Operator Precedence (1/2)
Operators Precedencepostfix expr++ expr--
unary++expr --expr +expr -expr ~ !
multiplicative * / %additive + -shift << >> >>>relational < > <= >= instanceofequality == !=bitwise AND &
![Page 152: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/152.jpg)
Java programming 152
Operator Precedence (2/2)
Operators Precedencebitwise exclusive OR
^
bitwise inclusive OR
|
logical AND &&logical OR ||ternary ? :
assignment= += -= *= /= %= &= ^= |= <<= >>= >>>=
![Page 153: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/153.jpg)
Java programming 153
運算符號 (Operator) 的優先權
種類 運算符號 結合順序
bitwise and & left to right
bitwise exclusive or
^ left to right
bitwise inclusive or
| left to right
logical and && left to right
logical or || left to right
conditional ? : right to left
assignment
= += -= *= /= %= &= ^= |= <<= >>= >>>=
right to left
seperator , left to right
種類 運算符號 結合順序group (op) left to right
postfix [ ] . (params) op++ op--
right to left
prefix ++op --op +op -op ~ !
right to left
creation or casting
new (type)op
right to left
multiplicative
* / % left to right
additive + - left to right
shift << >> >>>
left to right
relational < > <= >= instanceof ==
left to right
equality == != left to right
![Page 154: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/154.jpg)
Java programming 154
Java printf( ) method
System.out.printf(“format-string” [, arg1, arg2, … ]);
![Page 155: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/155.jpg)
Java programming 155
Format String
% [flags] [width] [.precision] conversion-character
![Page 156: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/156.jpg)
Java programming 156
Flags - : left-justify ( default is to right-justify ) + : output a plus ( + ) or minus ( - ) sign
for a numerical value 0 : forces numerical values to be zero-
padded ( default is blank padding ) , : comma grouping separator (for
numbers > 1000) : space will display a minus sign if the
number is negative or a space if it is positive
![Page 157: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/157.jpg)
Java programming 157
Conversion-Characters d : decimal integer [byte, short, int, long] f : floating-point number [float, double] c : character. Capital C will uppercase the
letter s : String. Capital S will uppercase all the
letters in the string h : hashcode. A hashcode is like an address.
This is useful for printing a reference n : newline. Platform specific newline
character- use %n instead of \n for greater compatibility
![Page 158: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/158.jpg)
Java programming 158
printf format specifiers %c character
%d decimal (integer) number (base 10)
%e exponential floating-point number
%f floating-point number%i integer (base 10)%o octal number (base 8)%s a string of characters
%u unsigned decimal (integer) number
%x number in hexadecimal (base 16)
%% print a percent sign\% print a percent sign
![Page 159: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/159.jpg)
Java programming 159
special printf characters\a audible alert
\b backspace
\f form feed
\n newline, or linefeed
\r carriage return
\t tab
\v vertical tab
\\ backslash
![Page 160: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/160.jpg)
Java programming 160
演習 2: データの型と変数 (1)
簡単な計算 Celsius temperature (攝氏温度 )
Fahrenheit temperature ( 華氏温度 )
℉ = ℃ + 32
5
9
![Page 161: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/161.jpg)
Java programming 161
演習 2: データの型と変数 (1)
![Page 162: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/162.jpg)
Java programming 162
肥満症の定義 ( 日本肥満学会 )
肥満症とは肥満に起因ないし関連する健康障害を合併するか、その合併が予測される場合で、医学的に減量を必要とする病態をいい、疾患単位として取り扱う。
http://www2.health.ne.jp/theme/index.html
![Page 163: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/163.jpg)
Java programming 163
肥満症診断基準 ( 日本肥満学会 )
BMI≧25 かつ、健康障害があるまたは内臓脂肪が蓄積している。
BMI≧25
肥満 非肥満
肥満症
あり なし
A:肥満による健康障害
またはB:内臓脂肪蓄積
(*詳細は右図を参照)
スクリーニング検査ウエスト周囲径計測男性: 85cm ≦女性: 90cm ≦(上半身肥満)
腹部 CT検査内臓脂肪面積 100 cm2 ≦
(内臓脂肪型肥満)
内臓脂肪蓄積
* B:内臓脂肪蓄積の判定基準
肥満症
●Ⅱ型糖尿病・耐糖能異常
●脂質代謝異常
●高血圧
●高尿酸血症・痛風
●冠動脈疾患:心筋梗塞・狭心症
●脳梗塞:脳血栓症・一過性虚血発作
●睡眠時無呼吸症候群: Pickwick症候群
●脂肪肝
●整形外科的疾患:変形性関節症・腰椎症
●月経異常
A:肥満による健康障害
http://www2.health.ne.jp/theme/index.html
![Page 164: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/164.jpg)
Java programming 164
肥満症は内臓脂肪蓄積が問題http://www2.health.ne.jp/theme/index.html
![Page 165: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/165.jpg)
Java programming 165
成年人之血壓分期 (18才以上之成人 )
血壓分類收縮壓
(Systolic Pressure, mmHg)
舒張壓(Diastolic Pressure, mmHg)
理想血壓 < 120 and < 80
正常血壓 < 130 and < 85
正常但偏高 130-139 or 85-89
高血壓
第一期 140-159 or 90-99
第二期 160-179 or 100-109
第三期 >=180 or >=110
1999 年 2 月世界衞生組織公佈 "高血壓定義與分類 "
![Page 166: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/166.jpg)
Java programming 166
予防と治療(食事療法)
摂取エネルギーの設定 栄養素の配分 食習慣の改善から成る
(出典:肥満・肥満症の指導マニュアル 日本肥満学会編集委員会)
http://www2.health.ne.jp/theme/index.html
![Page 167: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/167.jpg)
Java programming 167
予防と治療(運動療法) どんな運動がいい?
歩行、ジョギング、ラジオ体操、水泳などの全身を使う有酸素運動。また、 1日 1 万歩以上の歩行も!
どのくらいの運動がいいの? トレーニングは週に 3回以上行う必要がある。軽いも
のなら毎日から 1日おきとし、また休日などを利用して十分な時間をとるのがよいとされている。
運動の強度については、いきなり強い運動をしないこと。軽い運動から始めて徐々にならしていこう。
(出典:肥満・肥満症の指導マニュアル 日本肥満学会編集委員会)
http://www2.health.ne.jp/theme/index.html
(jogging)
(training)
![Page 168: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/168.jpg)
Java programming 16898.5.14. 中國時報 A8 版
![Page 169: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/169.jpg)
Java programming 16998.5.14. 中國時報 A8 版
![Page 170: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/170.jpg)
Java programming 170
高血壓患者應注意事項: 充分的睡眠與休息,避免過度勞累與精神緊張。 適度輕鬆的運動,維持理想的體重。 保持大便通暢,預防便秘。 避免用太冷太熱的水洗澡或浸浴。 選擇新鮮的食物,避免醃製及加工食品,如鹹菜、蔭瓜、醬瓜罐頭等。
忌食含鈉量極高的食品及蔬菜,如麵線、蜜餞、餅干、芹菜、胡蘿蔔、海帶、紫菜、發芽蠶豆等不要大量食用。
避免抽菸、喝酒;節制茶葉、咖啡、可樂等含咖啡因的飲料。
![Page 171: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/171.jpg)
遠離高血壓 健康生活六守則 減鹽 減重
維持 BMI 18.5-24 的健康體位,男生腰圍不超過 90公分,女生腰圍不超過 80公分
戒菸 運動
國民健康局 Java programming 171
![Page 172: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/172.jpg)
遠離高血壓 健康生活六守則 節制飲酒
每天男性不宜超過 2 個酒精當量( drinks/day,每個酒精當量為 15公克,約相當於啤酒 360毫升,葡萄酒 120~150毫升,白蘭地等烈酒 30~40毫升),女性不宜超過 1 個酒精當量
量血壓 血壓超過 140/ 90 mmHg就應該諮詢醫
師國民健康局 Java programming 172
![Page 173: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/173.jpg)
Java programming 173
BMI=体重 kg/(身長m) 2 ; 標準体重 kg =22×(身長m) 2 http://www.uemura-clinic.com/dmlecture/bmi.htm
![Page 174: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/174.jpg)
Java programming 174
BMI 肥満度の判定
18.5 未満 やせ
18.5 以上~ 25 未満 適正
25 以上~ 30 未満 肥満( 1 度)
30 以上~ 35 未満 肥満( 2 度)
35 以上~ 40 未満 肥満( 3 度)
40 以上 肥満( 4 度)日本肥満学会 (2000)
![Page 175: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/175.jpg)
Java programming 175
演習 3: データの型と変数 (2)
変数の使い方 BMI = [体重 (kg )] ÷ [身長 (m)]2
標準体重 (kg ) = 22×(身長m) 2
参考) BMI ( Body Mass Index :体格指数)
![Page 176: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/176.jpg)
Java programming 176
演習 3: データの型と変数 (2)
![Page 177: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/177.jpg)
Java programming 177
演習 4: 算術演算子 整數除法 1 呎 = 12吋 1 吋 = 2.54公分
![Page 178: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/178.jpg)
Java programming 178
Math クラス基本的な算術メソッド
戻り型 メソッド 説明static int static long static float static double
abs(int) abs(long) abs(float) abs(double)
引数に指定された値のフォーマット処理を行います。
static double
ceil(double)引数に与えられた値以上で、もっとも小さな整数値を double型で返します。
static double
floor(double)
引数に与えられた値以下で、もっとも大きな整数値を double型で返します。
static double
rint(double)引数に与えられた値で、その値にもっとも近い整数値を double型で返します。
static int static long
round(float) round(double)
引数に与えられた値で、その値にもっとも近い int型、もしくは long型を返します。
![Page 179: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/179.jpg)
Java programming 179
Math クラス指数関数メソッド
戻り型 メソッド 説明
static double
exp(double)自然対数の底 e を引数の値で累乗した値を返します。
static double
log(double)引数で指定された値の自然対数値を返します。
static double
pow(double, double)
第 1 引数を第 2 引数で累乗した値を返します。
static double
sqrt(double)引数で指定された値の平方根を返します。
![Page 180: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/180.jpg)
Java programming 180
java.lang.Math – round(x)
戻り型 メソッド 説 明
static long
round(double a)
Returns the closest long to the argument.
static intround(float a)
Returns the closest int to the argument.
![Page 181: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/181.jpg)
Java programming 181
演習 4: 算術演算子
![Page 182: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/182.jpg)
Java programming 182
分支選擇敘述句 (1)
單向 if (expression) statement;
雙向 if (expression) statement_true; else statement_false;
![Page 183: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/183.jpg)
Java programming 183
分支選擇敘述句 (2)
多向 switch (expression)
{ case value_1: [statement_1;] [break;]
case value_2: [statement_2;] [break;]
...
default: statement;
[break;]
}
![Page 184: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/184.jpg)
Java programming 184
單向條件敘述 if (條件式 ) 敘述 ; if (條件式 )
敘述 ; if (條件式 ) {
敘述區段 ;
}
![Page 185: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/185.jpg)
Java programming 185
雙向條件敘述 if (條件式 )
敘述 A;
else
敘述 B;
if (條件式 ) {
敘述區段 A;
}
else {
敘述區段 B;
}
![Page 186: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/186.jpg)
Java programming 186
條件運算子 變數 = (條件式 ) ? Y 結果 : N 結果 ; [例 ]
int n1 = -20, n2 = 5;
String compare;
compare = (n1 >= n2) ? “ 大於等於” : “小於” ;
![Page 187: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/187.jpg)
Java programming 187
巣状條件敘述 if ( 主條件 ) {
if (次條件 1) {
敘述區段 A;
}
else {
敘述區段 B;
}
}
else {
if (次條件 2) {
敘述區段 C;
}
else {
敘述區段 D;
}
}
![Page 188: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/188.jpg)
Java programming 188
演習 5: if else 文 If ステートメント
If ... If ... Else ...
台湾自來水公司水費採累進計価方式: 應繳水費=基本月費 (34.0元 )
+ [毎度單價×實用水量 -累進差額 ]
總水費之計收至元為止 (角以下四捨五入 )
![Page 189: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/189.jpg)
Java programming 189
水費速算表
段 別 第一段 第二段 第三段 第四段
毎度單價 7.35 9.45 11.55 12.075
毎月抄表
實用度數(立方公尺 )
1~10度
11~30度
31~50度 51度以上
累進差額(元 )
0 21 84 110.25
(1). 用水費= (毎度單價 × 實用水量 - 累進差額 )(2). 總水費之計收至元為止,角以下四捨五入。
台湾自來水公司
![Page 190: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/190.jpg)
Java programming 190
表燈電價表分 類 夏月 非夏月
非營業用
110度以下部分 2.100 2.100111~ 330度部分
2.730 2.415
331~ 500度部分
3.3602.730
501度以上部分 3.465營業用 3.465 2.730
單位:元/度
[註 ]: 6 月 1 日~ 9 月 30 日依夏月計價
![Page 191: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/191.jpg)
Java programming 191
演習 5: if else 文
![Page 192: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/192.jpg)
Java programming 192
演習 6: switch 文 Select Case ステートメント、例外処理 (VB6 例 ) Case is <= 5 Case 6, 7, 8 Case 9 To 14 Case is >= 15 Case Else
![Page 193: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/193.jpg)
Java programming 193
多重選擇 switch ( 變數或運算
式 ) { case 結果 1: 敘述區段 1; break; case 結果 2: 敘述區段 2; break; :
case 結果 n: 敘述區段 n; break; default: 敘述區段
default; [break;]}
只能是 : char, byte, short, int 或 enum列舉型別
只能是 : 常數或是由常數所構成的運算式
![Page 194: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/194.jpg)
Java programming 194
演習 6: switch 文 試設計一程式,可以輸入一學生某科之考試
成績 (整數資料型別 ) ,並依下示加分處理原則將加分後之新成績 (注意:取整數,且滿分仍以 100 分為限 )顯示在螢幕上。
加分處理原則: 0 - 49 分,加 15% 50 - 79 分,加 10% 80 - 100 分,加 5%
![Page 195: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/195.jpg)
Java programming 195
演習 6: switch 文
![Page 196: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/196.jpg)
Java programming 196
迴圈敘述句 (1)
計次 : for for( init_Statement ; condition ;
incre_statement ) statement
![Page 197: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/197.jpg)
Java programming 197
迴圈敘述句 (2)
前測 : while while( expression ) statement
![Page 198: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/198.jpg)
Java programming 198
迴圈敘述句 (3)
後測 : do while do statement while( expression ) ;
![Page 199: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/199.jpg)
Java programming 199
跳耀敘述句 (1)
label 多與 break或 continue 合用 ,可跳出多層迴圈 (multi-level loop)
break 針對 for, while, do while, switch迴圈作跳離
![Page 200: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/200.jpg)
Java programming 200
跳耀敘述句 (2)
continue 針對 for, while, do while 本次迴圈略過其後的敘述句 , 然後回到重複執行的條件處判斷是否繼續進入迴圈
return 中斷目前程序的執行 , 跳回上一層的呼叫
點 , 但不可中斷有回傳型態的函數
![Page 201: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/201.jpg)
Java programming 201
迴圈敘述 (for loop)
for ( 初値 ; 條件式 ; 增値運算式 ) 敘述 ;
for ( 初値 ; 條件式 ; 增値運算式 ) {
敘述區段 ;
}
![Page 202: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/202.jpg)
Java programming 202
迴圈敘述 (while loop)
< 前測試迴圈> while (條件式 ) {
敘述區段 ;
}
< 後測試迴圈> do {
敘述區段 ;
} while (條件式 );
![Page 203: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/203.jpg)
Java programming 203
迴圈敘述 sum = 1 + 2 + 3 + … + 100 sum = 2 + 4 + 6 + … + 100 sum = 1 + 1/2 + 1/3 + … + 1/20 sum = 1 - 1/2 + 1/3 ± … ±1/20
![Page 204: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/204.jpg)
Java programming 204
円周率を求めるプログラム 円周率とは
円周率とは πで表わされる数学定義のひとつで、 正円の直径に対する円周の比のことである。
1400年頃,インドのマーダヴァが無限級数を得る。
![Page 205: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/205.jpg)
Java programming 205
円周率を求めるプログラム 三角関数のテーラー展開による導出
直角二等辺三角形における tanθの値は 1 である。 θは π/4 なので、 tan-1(1) を計算することで π/4 を算出することができる。
ここで、 tan-1(1) をテーラー展開すると以下のようになる。 tan-1(1) = 1 – 1/3 + 1/5 - 1/7 + 1/9 +/- … この式で求めた値を 4 倍することで円周率を求めることができる。
![Page 206: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/206.jpg)
Java programming 206
演習 7: for 文
![Page 207: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/207.jpg)
Java programming 207
演習 8: while 文 假設有一條繩子長 1,000公尺,毎天剪去一半的長度,請設計一程式,可以計算出需花費幾天的時間,繩子的長度將不足 3 公尺?
![Page 208: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/208.jpg)
Java programming 208
演習 8: while 文
![Page 209: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/209.jpg)
演習 8-1: while 文
Java programming 209
![Page 210: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/210.jpg)
Java programming 210
Randomize Statement and
the Rnd Function
The Randomize statement initializes Visual Basic’s random-number generator.
The Rnd function generates random decimal numbers within the 0 to 1 range, including 0 but not including 1.
![Page 211: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/211.jpg)
Java programming 211
Rnd Function
To generate random decimal numbers in a range other than 0 to 1:
(upperbound - lowerbound + 1) * Rnd + lowerbound
To generate random integers:Int((upperbound - lowerbound + 1) * Rnd +
lowerbound)
![Page 212: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/212.jpg)
Java programming 212
乱数 (VB6)
– Rnd 0以上1未満の単精度浮動小数点型の数値を返すという命令
Int(( 最大値 - 最小値 + 1) * Rnd + 最小値 )
– Randomize Timer VBの乱数ジェネレータを初期化 乱数の出現パターンを変える
![Page 213: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/213.jpg)
Java programming 213
乱数函式 - Math.random()
import java.lang.Math; Math.random()
回傳一個 0.0 - 1.0( 不含 ) 的倍精度(double)浮点数
選取一段範圍之整數 : (int) (Math.random() * ( 最大値 - 最小値 + 1) + 最小値 )
![Page 214: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/214.jpg)
Java programming 214
public class Example {
public static void main(String[] args) {
int randomNumber = (int) (Math.random() * 10 + 1);
System.out.println(randomNumber);
}
}
Math クラスランダムメソッド
戻り型 メソッド 説明
static double random( )0.0 以上 1.0未満の値の中からランダムな値を算出します。
【例 】 random メソッドを使用し、 1から 10 までの間でランダムな数値を算出します。
![Page 215: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/215.jpg)
Java programming 215
乱数 ( 物件 ) の生成 Random クラスを用いると、乱数を
生成することができる。 import java.util.Random;
Random r = new Random();
r.nextInt(n) //取得 0 - (n-1) 的整數
r.nextDouble()
//取得 0.0 – 1.0( 未滿 ) 的倍精度浮點數
![Page 216: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/216.jpg)
Java programming 216
指定亂數範圍 private int randomInRange(int min, int
max) { return min + random.nextInt(max –
min + 1); }
int lotto; lotto = randomInRange(1, 49);
![Page 217: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/217.jpg)
Java programming 217
モンテカルロ法による π 計算
π = 4 × 円内部の点の数 ÷ 全ての点の数
点の数が多いほど、精確な値になる。
![Page 218: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/218.jpg)
Java programming 218
モンテカルロ法による円周率の計算 モンテカルロ法とは確率には直接関係ない問題を確率も用いて解くという方法です。
円内にあった点の数÷打った全数
= (( L /2 ) 2×π) / L 2
= π/4
![Page 219: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/219.jpg)
Java programming 219
0 1
1
x
y四分の一円内にあった点の数÷正方形内打った全数 = (1×1×π/4) / (1×1) = π/4
if (x*x + y*y <= 1) hit = hit + 1;
モンテカルロ法による円周率の計算
*(x,y)
![Page 220: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/220.jpg)
Java programming 220
Monte Carlo method
Monte Carlo method applied to approximating the value of π.
After placing 30000 random points, the estimate for π is within 0.07% of the actual value.
![Page 221: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/221.jpg)
Java programming 221
演習 9: モンテカルロ法
![Page 222: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/222.jpg)
Java programming 222
陣列 (Array)
![Page 223: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/223.jpg)
Java programming 223
陣列 (Array)
陣列是一種特殊的類別 (class)必須使用 new才能建立實體
宣告方式可以有 2 種 型態 [ ] 變數 ;
例如 : int[ ] arr1, int[ ][ ][ ] arr3;
型態 變數 [ ]; 例如 : int arr1[ ];
![Page 224: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/224.jpg)
Java programming 224
Declaring a Reference to Refer to an Array
宣告陣列主要分成兩部分:宣告陣列的 type 以及陣列參考 (reference) 的name 。其格式如下:
type[ ] name; [例 ]:
int[ ] intArray; float[ ] floatArray;
![Page 225: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/225.jpg)
Java programming 225
Creating an Array
Java 陣列是使用 new 指令所産生,其格式如下:
new elementType[arrayLength]; [例 ]:
int[ ] intArr; intArr = new int[100]; double[ ] doubleArr = new double[200];
![Page 226: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/226.jpg)
Java programming 226
Array Initializers
産生一陣列並設定其陣列元素的初値。 所産生陣列的長度,等於 { } 間初値的
數目。 int[ ] anArray = {0,10,20,30,40}; //Create and initialize an array called
anArray //The length of anArray is “5”
![Page 227: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/227.jpg)
Java programming 227
Accessing an Array Element
陣列參考可以 [ ] 算符配合索引値(index) 來存取個別陣列元素。
[例 ]: intArray[3] = 10; float val = floatArray[3];
陣列之長度,可由 arrayReference.length 方法求得。
![Page 228: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/228.jpg)
Java programming 228
Sorting/Searching an Array
bubble sort binary search on a sorted array
![Page 229: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/229.jpg)
Java programming 229
Multiple-Subscripted Arrays
Java 可使用以下方式産生多維陣列,其中 x 、 y 均可為變數,或整數。 int[ ][ ] a; a = new int[x][y];
亦可使用 Array Initializers ,其中毎一列之構成元素長度可以不同。 int[ ][ ] b = { { 1, 2}, { 3, 4, 5}};
![Page 230: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/230.jpg)
Java programming 230
公益彩券 2002 年 1 月起 , 北銀發行公益彩券
(小樂透 ), 由 1 至 42 的號碼中 , 任選6 碼 ; 選號不得重複。
2004 年 1 月起 , 北銀開始發行大樂透 , 由 1 至 49 的號碼中 , 任選 6 碼(6/49樂合彩 ); 選號不得重複。
![Page 231: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/231.jpg)
Java programming 231
中獎機率 小樂透可能出現的號碼組合共有:
大樂透可能出現的號碼組合共有:
7 8 6,2 4 5,5!6
3 7*3 8*3 9*4 0*4 1*4 2
0 6
4 2
8 1 6,9 8 3,1 3!6
4 4*4 5*4 6*4 7*4 8*4 9
0 6
4 9
![Page 232: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/232.jpg)
Java programming 232
大樂透 (6/49樂合彩 )
大樂透是使用電腦連線接受投注的樂透型機率遊戲
投注購券者須從 01 - 49 的號碼中任意選出 6 個不重覆號碼以作為投注號碼
於公益彩券開獎時,開獎執行單位便會由開獎機中之號碼範圍内隨機開出六個號碼及一個特別號。
![Page 233: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/233.jpg)
Java programming 233
獎項 中獎方式 簽中機率 頭獎 與當期六個中獎號碼完全相同者
〈順序不限〉1/1398381
6.0
貳獎 對中當期中獎號碼之其中任五碼+特別號
1/2330636.0
参獎 對中當期中獎號碼之其中任五碼 1/55491.3
肆獎 對中當期中獎號碼之其中任四碼+特別號
1/22196.5
伍獎 對中當期中獎號碼之其中任四碼 1/1082.8
陸獎 對中當期中獎號碼之其中任三碼+特別號
1/812.1
普獎 對中當期中獎號碼之其中任三碼 1/60.9
![Page 234: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/234.jpg)
Java programming 234④ ‧ ‧ ‧ 以此類推 ‧ ‧ ‧
出處:上奇 , EB631, p.6-36
![Page 235: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/235.jpg)
Java programming 235
不重複的随機乱数 (Java2)
class BBKMath { void GenRnd( int[] x, int min, int max, int rnd_no) { int tot_no, rem_no, t_no; int i, j; tot_no = max - min + 1; int[] t = new int[tot_no]; for(i = 0; i < tot_no; i++) { t[i] = min + i; } rem_no = tot_no; for( i = 0; i < rnd_no; i++) { t_no = (int)Math.floor(Math.random() * rem_no); x[i] = t[t_no]; for(j = t_no; j < (rem_no - 1); j++) { t[j] = t[j+1]; } rem_no--; } }} 出處:上奇 , EB631, p.6-37
![Page 236: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/236.jpg)
Java programming 236
不重複的随機乱数 (Java2)
出處:旗標 , FS720, p.17-32~33
for(int j=1;j<=i;j++) { //産生指定組數號碼的迴圈 int[] lotto= new int[49]; // 建立樂透號碼陣列 for (int k=0;k<49;k++) // 將陣列元素値設為 1 ~ 49 lotto[k]=k+1; int count=0; // 用來記綠已産生幾個號碼 do { int guess = (int)(Math.random()*49); if(lotto[guess]==0) // 若號碼所指的元素値為 0, 表示此數字已 continue; // 出現過 , 就重新執行迴圈 , 産生另一亂數 else { System.out.print(lotto[guess]+“\t"); lotto[guess]=0; // 將號碼所指的元素値設為 0, 以免重複用到 count++; } } while (count<6); // 産生 6 個號碼才停止}
![Page 237: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/237.jpg)
Java programming 237
不重複的随機乱数 (Java2)
出處:旗標 , FS720, p.17-60~61
import java.util.*;public class ListLotto { public static void main(String args[]) { System.out.println("樂透電腦選號── Java/ArrayList 版 "); ArrayList num = new ArrayList(); for (int i=1;i<50;i++) num.add(new Integer(i)); // 初始化集合元素値 Collections.shuffle(num); // 將集合『洗牌 』 System.out.println(num.subList(1,7)); } // 取集合中前 6 個元素的子集合}
![Page 238: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/238.jpg)
Java programming 238
不重複的随機乱数 (VB2008)Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles Button1.Click Dim guess, A(5) As Integer Randomize() For index As Integer = 0 To 5 While A(index) = 0 guess = CInt(Int(Rnd() * 59) + 1) If Array.IndexOf(A, guess) = -1 Then A(index) = guess End If End While Next TextBox1.Text = A(0) TextBox2.Text = A(1) TextBox3.Text = A(2) TextBox4.Text = A(3) TextBox5.Text = A(4) TextBox6.Text = A(5) End SubEnd Class
出處:上奇 , HB0902, p.11-28
![Page 239: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/239.jpg)
Java programming 239
不重複的随機乱数 (VB6.0)
Dim A(6) as IntegerDim i, j, k, y as IntegerDim temp, check as Integer
Randomize Timeri = 0While i <= 6 check = 0 A(i) = Int(49*Rnd() + 1) For y = 0 to i – 1 If A(i) = A(y) Then check = -1 End if Next y If check = 0 Then i = i + 1 End ifWend
![Page 240: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/240.jpg)
Java programming 240
重複なしの乱数配列生成 with VB.NET
Function GenerateArray(ByVal size As Integer) _ As Integer()
' 乱数生成 Dim arr(size - 1) As Integer Dim i As Integer For i = 0 To size - 1 arr(i) = i Next i
blog.craft-works.jp/uru/id/vb1
![Page 241: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/241.jpg)
Java programming 241
'ランダムに並び替え Dim r As Random = New Random() Dim tmp As Integer For i = 0 To size - 1 Dim src As Integer = r.Next(i, size) tmp = arr(src) arr(src) = arr(i) arr(i) = tmp Next i Return arr
End Function
![Page 242: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/242.jpg)
Java programming 242
乱数の作成 (1)
Math クラスの random() メソッド 0~9の乱数を作成する例です。
クラス Mathメソッド random()戻り値 0~1未満の値
public class Ran{ public static void main(String[] args){ int ran = (int)(Math.random()*10); System.out.println(ran); } }
![Page 243: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/243.jpg)
Java programming 243
乱数の作成 (2)
Random クラスの nextInt ()メソッド
0~9の乱数を作成する例です。
クラス Randomメソッド nextInt()
引数 乱数の限界値
戻り値 0~引数 -1 の値
import java.util.Random; public class Ran{ public static void main(String[] args){ Random rnd = new Random(); int ran = rnd.nextInt(10); System.out.println(ran); } }
![Page 244: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/244.jpg)
Java programming 244
import java.util.Random;public class Test{ public static void main(String args[]) { Random random = new Random(); int number = 0;; int array[] = new int[6]; boolean b; for(int i=0; i<6; i++) { b = true; while(b) { b = false; number = random.nextInt(49)+1; for(int j=0; j<array.length; j++) { if(array[j] == number) { b = true; } } } array[i] = number; System.out.printf("array[%d]=%d\n", i, number); } }}
![Page 245: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/245.jpg)
Java programming 245
データの並び替え (例 ) int[ ] data = {10, 4, 55, 20, 15, 12}; for (int i = 0; i < data.length - 1; i++) { for (int j = i + 1; j < data.length; j++) { if (data[i] > data[j]) { int tmp = data[i]; data[i] = data[j]; data[j] = tmp; } } }
![Page 246: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/246.jpg)
排序 (sorting) – 基本排序法
氣泡排序法 (bubble sort)
選擇排序法 (selection sort)
插入排序法 (insertion sort)
謝耳排序法 (Shell sort)
Java programming 246
![Page 247: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/247.jpg)
排序 (sorting) – 高等排序法
快速排序法 (quick sort)
合併排序法 (merge sort)
堆積排序法 (heap sort)
基數排序法 (radix sort)
Java programming 247
![Page 248: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/248.jpg)
Java programming 248
Bubble sort method public class BubbleSort {
public static void main(String args[]) {
short source[] = {
540, 94, 458, 47, 64};
short exchange = 0;
for (short pass = 1;
pass < source.length; pass++) {
for (short i = 0; i < source.length - 1;
i++) {
if (source[i] > source[i + 1]) {
exchange = source[i];
source[i] = source[i + 1];
source[i + 1] = exchange;
} // if end
} //for end
} //for end
for (short i = 0;
i < source.length; i++) {
System.out.print(source[i] + " ");
}
} //main method end
} //class end
![Page 249: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/249.jpg)
Java programming 249
Sorting Array in Javaimport java.util.Arrays; public class HowToSortAnArray { public static void main(String[ ] args) { //Array of Integers int[ ] myIntArray = new int[ ]{20,100,69,4}; //SORTS ARRAY FROM SMALLEST TO LARGEST INT Arrays.sort(myIntArray); //for loop to print Array values to console for (int a = 0; a < myIntArray.length; a++) { System.out.println(myIntArray[a]); } } }
![Page 250: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/250.jpg)
Java programming 250
演習 10: 配列‧乱数の利用
![Page 251: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/251.jpg)
Java programming 251
演習 11: 二重ループ (1)
***************
*********
***********
![Page 252: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/252.jpg)
Java programming 252
演習 11: 二重ループ (2)
****
************
*********
****
*********
*********
********
![Page 253: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/253.jpg)
Java programming 253
演習 11: 二重ループ (3)
112123123412345
12312112123
112123121
![Page 254: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/254.jpg)
Java programming 254
演習 11: 二重ループ (4)
1121
123211234321
123454321
1121
12321121
1
32123212
1212
32123
![Page 255: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/255.jpg)
Java programming 255
演習 11: 二重ループ ( 出力_1)
![Page 256: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/256.jpg)
Java programming 256
演習 11: 二重ループ ( 出力_2)
![Page 257: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/257.jpg)
Java programming 257
方法 (method)
[public | private | protected] static [ 傳回値資料型別 | void] 方法名稱 ([ 引数串列 ]) [throws 例外名稱 ]
{
敘述區段 ;
[return 運算式 ;]
}
![Page 258: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/258.jpg)
Java programming 258
呼叫 java 方法 函式無回傳値 :
[物件名稱 ]. 方法名稱 ([ 引数串列 ]);
函式有回傳値 :
變數 = [ 物件名稱 ]. 方法名稱 ([ 引数串列 ]);
![Page 259: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/259.jpg)
Java programming 259
メソッド定義
[ 修飾子 ] [戻り値型 ] メソッド名 (<引数リスト >)
{
ステートメント
}
![Page 260: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/260.jpg)
Java programming 260
メソッド 戻り値型 メソッド名 ( メソッド引数リ
スト ) { 処理 return 戻り値 ; }
![Page 261: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/261.jpg)
Java programming 261
java 方法的引數傳遞 傳値呼叫 (call by value) 參考呼叫 (call by reference)
[註 ]: All parameters to methods in Java
are
pass-by-value.
![Page 262: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/262.jpg)
Java programming 262
Defining methods (例 )
public double calculateAnswer(double
wingSpan, int numberOfEngines,
double length, double grossTons)
{
//do the calculation here
}
![Page 263: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/263.jpg)
Java programming 263
method declaration
All parameters to methods in Java are pass-by-value.
Modifiers—such as public, private, and others you will learn about later.
The return type—the data type of the value returned by the method, or void if the method does not return a value.
![Page 264: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/264.jpg)
Java programming 264
method definition (1) class MyClass { ... public ReturnType methodName(Type1 param1, Type2 param2 ) throws ExceptionName { ReturnType retType; ... return retType; } ... }
![Page 265: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/265.jpg)
Java programming 265
method definition (2)
private void methodName( String param1, String param2 ) { ... return; }
![Page 266: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/266.jpg)
Java programming 266
Create a simple Java method public class Hi { public static void main(String[] args) { sayHi(); System.out.println(“The second Hi!!”); } public static void sayHi() { System.out.println(“The first Hi!”); }}
![Page 267: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/267.jpg)
Java programming 267
演習1 2: メソッド Functionプロシージャ BMI = bmi(height, weight)
BMI = [体重 (kg )] ÷ [身長 (m)]2
標準体重 = std_weight(height) 標準体重 = 22×(身長m) 2
![Page 268: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/268.jpg)
Java programming 268
演習1 2: メソッド
![Page 269: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/269.jpg)
Java programming 269
method
modifier returnValueType methodName(list of
parameters) { // Method body; }
![Page 270: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/270.jpg)
Java programming 270
Recursive method
Method that invokes itself. The arguments passed to the
recursion take us closer to the solution with each call.
![Page 271: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/271.jpg)
Java programming 271
recursive algorithms
if (the stopping case is reached){ solve it}else{ reduce the problem using recursion}
![Page 272: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/272.jpg)
Java programming 272
Recursive method (例 )public class RecursiveFactorial{ public static void main( String [] args ) { // compute factorial of 7 and output it System.out.println( “Factorial ( 7 ) is “ + factorial( 7 ) ); } public static int factorial( int n ) { if ( n <= 0 ) // base case return 1; else // general case return ( n * factorial ( n - 1 ) ); }}
![Page 273: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/273.jpg)
Java programming 273
寫一函數 , 輸入參數 (int n)傳回 1+2+3+ ... +n 的總合 public class Example {
public static void main(String[] argv) {
System.out.println(sum(100));
}
public static int sum(int n) {
int total = 0;
for (int i = 1; i <= n; i++)
total += i;
return total;
}
}
![Page 274: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/274.jpg)
Java programming 274
遞迴 (recursion)範例求 1+2+3+...+n public class Example {
public static void main(String[] argv) {
System.out.println(sum(100));
}
public static int sum(int n) {
if (n <= 1)
return 1;
else
return (n + sum(n - 1));
}
}
![Page 275: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/275.jpg)
搜尋 (searching)
循序搜尋法 (sequential search)
二元搜尋法 (binary search)
内插搜尋法 (interpolation search)
費氏搜尋法 (Fibonacci search)
Java programming 275
![Page 276: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/276.jpg)
Java programming 276
Recursive Binary Searchpublic static int search (int[] a, int first, int size, int target) { int middle; if (size <= 0) return -1; else { middle = first + size/2; if (target == a[middle]) return middle; else if (target < a[middle]) // the target is less than a[middle], so search before the middle return search(a, first, size/2, target); else // the target must be greater than a[middle], so search after the middle
return search(a, middle+1, (size-1)/2, target); } }
![Page 277: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/277.jpg)
Java programming 277
演習1 3: 再帰呼び出し
![Page 278: Programming (SE7)](https://reader033.vdocuments.pub/reader033/viewer/2022061602/568148d0550346895db5ec1b/html5/thumbnails/278.jpg)
Java programming 278
ご清聴ありがとう御座居ました。
今後とも、よろしくお願いいたします。
メールはいつでもかまいません。
崑山科技大学 環境工学科
助教授 澄原日先 [email protected]