第一章 開發(fā)前言
1.1 Java語言概述
什么是Java語言
Java語言是美國Sun公司(Stanford University Network),在1995年推出的高級的編程語言立肘。所謂編程語言边坤,是計算機的語言,人們可以使用編程語言對計算機下達命令赛不,讓計算機完成人們需要的功能惩嘉。
Java語言發(fā)展歷史
1995年Sun公司發(fā)布Java1.0版本
1997年發(fā)布Java 1.1版本
1998年發(fā)布Java 1.2版本
2000年發(fā)布Java 1.3版本
2002年發(fā)布Java 1.4版本
2004年發(fā)布Java 1.5版本
2006年發(fā)布Java 1.6版本
2009年Oracle甲骨文公司收購Sun公司,并于2011發(fā)布Java 1.7版本
2014年發(fā)布Java 1.8版本
2017年發(fā)布Java 9.0版本
Java語言能做什么
Java語言主要應用在互聯(lián)網(wǎng)程序的開發(fā)領(lǐng)域踢故。常見的互聯(lián)網(wǎng)程序比如天貓文黎、京東、物流系統(tǒng)殿较、網(wǎng)銀系統(tǒng)等耸峭,以及服務器后臺處理大數(shù)據(jù)的存儲、查詢淋纲、數(shù)據(jù)挖掘等也有很多應用劳闹。
1.2 計算機基礎知識
二進制
計算機中的數(shù)據(jù)不同于人們生活中的數(shù)據(jù),人們生活采用十進制數(shù)洽瞬,而計算機中全部采用二進制數(shù)表示本涕,它只包含0、1兩個數(shù)伙窃,逢二進一菩颖,1+1=10。每一個0或者每一個1为障,叫做一個bit(比特)晦闰。
下面了解一下十進制和二進制數(shù)據(jù)之間的轉(zhuǎn)換計算放祟。
-
十進制數(shù)據(jù)轉(zhuǎn)成二進制數(shù)據(jù):使用除以2獲取余數(shù)的方式
-
二進制數(shù)據(jù)轉(zhuǎn)成十進制數(shù)據(jù):使用8421編碼的方式
小貼士:
二進制數(shù)系統(tǒng)中,每個0或1就是一個位呻右,叫做bit(比特)跪妥。
字節(jié)
字節(jié)是我們常見的計算機中最小存儲單元。計算機存儲任何的數(shù)據(jù)声滥,都是以字節(jié)的形式存儲眉撵,右鍵點擊文件屬性,我們可以查看文件的字節(jié)大小醒串。
8個bit(二進制位) 0000-0000表示為1個字節(jié)执桌,寫成1 byte或者1 B。
- 8 bit = 1 B
- 1024 B =1 KB
- 1024 KB =1 MB
- 1024 MB =1 GB
- 1024 GB = 1 TB
常用DOS命令
Java語言的初學者芜赌,學習一些DOS命令仰挣,會非常有幫助。DOS是一個早期的操作系統(tǒng)缠沈,現(xiàn)在已經(jīng)被Windows系統(tǒng)取代膘壶,對于我們開發(fā)人員,目前需要在DOS中完成一些事情洲愤,因此就需要掌握一些必要的命令颓芭。
- 進入DOS操作窗口
- 開始---所有程序-----附件----命令提示符
- windows + R 輸入cmd,回車(enter)
- shift + 鼠標右鍵
- 打開指定路徑的黑窗口
清除指定路徑后輸入cmd
按下Windows+R鍵盤柬赐,打開運行窗口亡问,輸入cmd回車,進入到DOS的操作窗口肛宋。
- 打開DOS命令行后州藕,看到一個路徑 c:\user 就表示我們現(xiàn)在操作的磁盤是c盤。
- 常用命令
命令 | 操作符號 |
---|---|
盤符切換命令 | 盤符名: |
查看當前文件夾 | dir |
進入文件夾命令 | cd 文件夾名 |
退出文件夾命令 | cd.. |
退出到磁盤根目錄 | cd \ |
清屏 | cls |
追加重定向創(chuàng)建文件 | echo *** >> fileName |
查看文件內(nèi)容 | type fileName |
創(chuàng)建文件夾 | mkdir directoryName |
創(chuàng)建文件夾 | md direatoryName |
刪除指定文件 | del fileName |
刪除空文件夾 | rd directoryName |
打開已經(jīng)創(chuàng)建好的文本文件 | notepad fileName.txt |
創(chuàng)建空文件 | cd pathDirectory >> filename |
刪除非空文件夾 | rmdir /s directoryName |
第二章Java語言開發(fā)環(huán)境搭建
2.1 Java虛擬機一一JVM
- JVM(Java Virtual Machine): Java虛擬機酝陈,簡稱JVM床玻,是運行所有Java程序的假想計算機,是Java程序的運行環(huán)境沉帮,是Java最具吸引力的特性之一锈死。我們編寫的Java代碼,都運行在JVM之上穆壕。
-
跨平臺:任何軟件的運行待牵,都必須要運行在操作系統(tǒng)之上,而我們用Java編寫的軟件可以運行在任何的操作系 統(tǒng)上喇勋,這個特性稱為Java語言的跨平臺特性洲敢。該特性是由JVM實現(xiàn)的,我們編寫的程序運行在JVM上茄蚯,而JVM 運行在操作系統(tǒng)上压彭。
如圖所示,Java的虛擬機本身不具備跨平臺功能的渗常,每個操作系統(tǒng)下都有不同版本的虛擬機壮不。一次編寫(編譯),到處運行皱碘。在某個操作系統(tǒng)平臺上询一,開發(fā),編譯出來的字節(jié)碼文件癌椿,可以在其他的所有操作系統(tǒng)平臺上運行健蕊。
2.2 JRE 和 JDK
- JRE (Java Runtime Environment):是Java程序的運行時環(huán)境,包含JVM和運行時所需要的核心類庫踢俄。
-
JDK (Java Development Kit):是Java程序開發(fā)工具包缩功,包含JRE和開發(fā)人員使用的工具。
我們想要運行一個已有的Java程序都办,那么只需安裝JRE即可嫡锌。
我們想要開發(fā)一個全新的Java程序,那么必須安裝JDK琳钉。
小貼士:
三者關(guān)系: JDK > JRE > JVM
2.3 JDK9安裝圖解
小貼士:
安裝路徑中势木,不要包含中文和空格。
2.4 JAVA_HOME環(huán)境變量的配置
配置環(huán)境變量作用
開發(fā)ava程序歌懒,需要使用JDK中提供的工具啦桌,工具在JDK9安裝目錄的bin目錄下。
在DOS命令行下使用這些工具及皂,就要先進入到JDK的bin目錄下甫男,這個過程就會非常的麻煩。
配置環(huán)境變量步驟
Windows 7,8版本
- 計算機鼠標右鍵,選擇屬性
- 選擇高級系統(tǒng)設置
- 高級選項卡浩习,點擊環(huán)境變量
- 點擊新建静暂,創(chuàng)建新的環(huán)境變量
- 變量名輸入JAVA_H0ME,變量值輸入JDK9的安裝目錄谱秽,例如:c:\Java9\jdk-9.0.1
6.選中Path環(huán)境變量洽蛀,雙擊或者點擊編輯
7.在變量值的最前面摹迷,鍵入%JAVA_HOME%\bin;分號必須要寫郊供,必須是英文格式峡碉。
8.環(huán)境變量配置完成,重新開啟DOS命令行驮审,在任意目錄下輸入javac命令鲫寄,運行成功。
Windows 10版本
- 文件資源管理器--> 此電腦鼠標右鍵--> 選擇屬性
- 選擇高級系統(tǒng)設置--> 選擇 環(huán)境變量
- 點擊下方系統(tǒng)變量的新建,創(chuàng)建新的環(huán)境變量疯淫,變量名輸入JAVA_HOME, 變量值輸入JDK9的安裝目錄 ,例如:D:\02_DevelopTools\Java\jdk-9 .0.1
4.選中Path環(huán)境變量地来,雙擊或者點擊編輯
- 點擊新建,鍵入%JAVA_HOME%\bin ,必須是英文格式熙掺。選中該行未斑,上移到最上方,點擊確定适掰。
- 環(huán)境變量配置完成颂碧,重新開啟DOS命令行,在任意目錄下輸入javac命令类浪。
第三章HelloWorld入門程序
3.1 程序開發(fā)步驟(開發(fā)流程)說明
開發(fā)環(huán)境已經(jīng)搭建完畢载城,可以開發(fā)我們第一個Java程序了。
Java程序開發(fā)三步驟:編寫费就、編譯诉瓦、運行。
Java程序開發(fā)的三個步驟
3.2編寫Java源程序
- 在d:\day01目錄下新建文本文件力细,完整的文件名修改為HelloWorld.java ,其中文件名為HelloWorld , 后綴名必須為 .java
- 用記事本打開
使用notepad++記事本軟件睬澡。
- 在文件中鍵入文本并保存,代碼如下:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
文件名必須是HelloWorld ,保證文件名和類的名字是一致的眠蚂,注意大小寫煞聪。
每個字母和符號必須與示例代碼一模一樣。
第一個HelloWord源程序就編寫完成了逝慧,但是這個文件是程序員編寫的昔脯,JVM是看不懂的,也就不能運行笛臣,因此我 們必須將編寫好的Java源文件編譯成JVM可以看懂的字節(jié)碼文件云稚。
3.3 編譯Java源文件
在DOS命令行中,進入Java源文件的目錄沈堡,使用javac命令進行編譯静陈。 命令:
javac Java源文件名.后綴名
舉例:
javac HelloWorld.java
編譯成功后,命令行沒有任何提示诞丽。打開d:\day01目錄鲸拥,發(fā)現(xiàn)產(chǎn)生了一個新的文件HelloWorld.class拐格,該文件就是編譯后的文件,是Java的可運行文件刑赶,稱為字節(jié)碼文件禁荒,有了字節(jié)碼文件,就可以運行程序了角撞。
Java源文件的編譯工具javac.exe,在JDK安裝目錄的bin目錄下勃痴。但是由于配置了環(huán)境變量谒所,可以再任意目錄下使用。
3.4 運行Java程序
在DOS命令行中沛申,進入Java源文件的目錄劣领,使用java命令進行運行。
命令:
java 類名字
舉例:
java HelloWorld
java HelloWord 不要寫 不要寫 不要寫 .class
Java程序.class文件的運行工具java.exe ,在JDK安裝目錄的bin目錄下铁材。但是由于配置了環(huán)境變量尖淘,可以再任意目錄下使用。
3.5 入門程序說明
編譯和運行是兩回事
編譯:是指將我們編寫的Java源文件翻譯成JVM認識的class文件著觉,在這個過程中村生,javac編譯器會檢查我們所寫的程序是否有錯誤,有錯誤就會提示出來饼丘,如果沒有錯誤就會編譯成功趁桃。
運行:是指將class文件交給JVM去運行,此時JVM就會去執(zhí)行我們編寫的程序了肄鸽。
關(guān)于main方法
- main方法:稱為主方法卫病。寫法是固定格式不可以更改。main方法是程序的入口點或起始點典徘,無論我們編寫多少程序蟀苛,JVM在運行的時候,都會從main方法這里開始執(zhí)行逮诲。
3.6 添加注釋comment
注釋:就是對代碼的解釋和說明帜平。其目的是讓人們能夠更加輕松地了解代碼。為代碼添加注釋汛骂,是十分必須要的罕模,它不影響程序的編譯和運行。
-
Java中有單行注釋和多行注釋
單行注釋以//開頭 換行結(jié)束
多行注釋以/* 開頭以*/ 結(jié)束
注意:多行注釋中帘瞭,/** 注釋內(nèi)容 */ 表示文檔注釋淑掌。
3.7 關(guān)鍵字 keywords
-
關(guān)鍵字:是指在程序中,Java已經(jīng)定義好的單詞蝶念,具有特殊含義抛腕。
- HelloWorld案例中芋绸,出現(xiàn)的關(guān)鍵字有public、class担敌、 static摔敛、 void等,這些單詞已經(jīng)被Java定義好全封,全部都是小寫字母马昙,notepad++中顏色特殊。
- 關(guān)鍵字比較多刹悴,不能死記硬背行楞,學到哪里記到哪里即可。
-
特點:
- 全部小寫
- 自己在命名類名土匀,方法名子房,變量名,接口名等不要和關(guān)鍵字重名
- 有兩個保留字:goto就轧,const证杭,目前還未使用,將來是否使用還未知妒御。
3.8標識符
-
標識符:是指在程序中解愤,我們自己定義內(nèi)容。比如類的名字携丁、方法的名字和變量的名字等等琢歇,都是標識符。
- HelloWorld案例中梦鉴,出現(xiàn)的標識符有類名字HelloWorld李茫。
-
命名規(guī)則:硬性要求
標識符可以包含英文字母26個(區(qū)分大小寫)、0-9數(shù)字肥橙、$ (美元符號)和_(下劃線)魄宏。
標識符不能以數(shù)字開頭。
標識符不能是關(guān)鍵字存筏。
-
命名規(guī)范:軟性建議
類名規(guī)范:首字母大寫宠互,后面每個單詞首字母大寫(大駝峰式)。
方法名規(guī)范:首字母小寫椭坚,后面每個單詞首字母大寫(小駝峰式)予跌。
變量名規(guī)范:全部小寫。不建議使用中文善茎。不建議使用$券册。
第四章 常量
4.1 概述
常量:是指在Java程序中固定不變的數(shù)據(jù)。
4.1 分類
常量按照表示形式的分類:
- 字面值常量:看到常量的值就知道該常量所能表示數(shù)的大小,eg: 3烁焙,4航邢,1.2,-90
- 符號常量:給常量起一個名字骄蝇,看到名字知道該常量所代表的含義膳殷,但是不知道常量的值
常量根據(jù)數(shù)據(jù)類型的分類
類型 | 含義 | 數(shù)據(jù)舉例 |
---|---|---|
整數(shù)常量 | 所有整數(shù) | 0,1九火,567赚窃,-9 |
小數(shù)常量 | 所有的小數(shù) | 0.0,-0.1岔激,2.55 |
字符常量 | 單引號引起來考榨,只能寫一個字符,必須有內(nèi)容 | 'a'鹦倚,'好' |
字符串常量 | 雙引號引起來,可以寫多個字符冀惭,也可以不寫 | "A"震叙,"Hello","你好" |
布爾常量 | 只有兩個值(流程控制中講解) | true散休, false |
空常量 | 只有一個值(引用數(shù)據(jù)類型中講解) | null |
4.3 練習
需求:輸出各種類型的常量媒楼。
public class ConstantDemo {
public static void main(String[] args){
// 輸出整數(shù)常量
System.out.println(111);
// 輸出小數(shù)常量
System.out.println(1.2);
// 輸出字符常量 ,必須用單引號括起來戚丸,
// 單引號中必須有內(nèi)容划址,切為單個字符
System.out.println('A');
//System.out.println('');//程序報錯
// 輸出布爾常量
System.out.println(true);
// 輸出字符串常量 字符串常量可以為空竄
System.out.println (" Hello Java ");
//空常量 輸出會報錯
//System.out.println(null);
}
}
注意:空常量不能直接輸出,由于許多常量都可以擁有空常量限府,所以當輸出空常量時夺颤,輸出語句并不知道要輸出的是字符串的空常量還是Object對象的空常量或者其他數(shù)據(jù)類型的空常量,因此程序執(zhí)行到此處會報錯胁勺。
第五章 變量和數(shù)據(jù)類型
5.1 變量概述
- 變量:常量是固定不變的數(shù)據(jù)世澜,那么在程序中可以變化的量稱為變量。
數(shù)學中署穗,可以使用字母代替數(shù)字運算,例如 x=1+5 或者 6=x+5寥裂。
程序中,可以使用字母保存數(shù)字的方式進行運算案疲,提高計算能力封恰,可以解決更多的問題。比如X保存5, x也可以保存6,這樣x保存的數(shù)據(jù)是可以改變的褐啡,也就是我們所講解的變量诺舔。
Java中要求一個變量每次只能保存一個數(shù)據(jù),必須要明確保存的數(shù)據(jù)類型。
5.2 數(shù)據(jù)類型
java是一個強類型的語言:需要顯示的說明數(shù)據(jù)所占用內(nèi)存的大小混萝。聲明變量的時候遗遵,就需要說明變量的數(shù)據(jù)類型,以此來表示內(nèi)存的大小逸嘀。
數(shù)據(jù)類型分類
Java的數(shù)據(jù)類型分為兩大類:
基本數(shù)據(jù)類型:包括整數(shù)车要、浮點數(shù)、字符崭倘、布爾翼岁。
引用數(shù)據(jù)類型:包括類、數(shù)組司光、接口琅坡。
基本數(shù)據(jù)類型
四類八種基本數(shù)據(jù)類型:
數(shù)據(jù)類型 | 關(guān)鍵字 | 內(nèi)存占用 | 取值范圍 |
---|---|---|---|
字節(jié)型 | byte | 1個字節(jié) | -128~127 |
短整型 | short | 2個字節(jié) | -32768~32767 |
整型 | int (默認) | 4個字節(jié) | -2^31次方 ~ 2^31-1 |
長整型 | long | 8個字節(jié) | -2^63次方 ~ 2^63-1 |
單精度浮點數(shù) | float | 4個字節(jié) | 1.4013E-45~3.4028E+38 |
雙精度浮點數(shù) | double (默認) | 8個字節(jié) | 4.9E-324~1.7977E+308 |
字符型 | char | 2個字節(jié) | 0-65535 |
布爾類型 | boolean | 1個字節(jié) | true,false |
class DataTypeDemo {
public static void main(String[] args) {
//數(shù)據(jù)類型
//整數(shù)類型
byte b = 127;
System.out.println(b);
short s = -32768;
System.out.println(s);
int i = 2147483647;
System.out.println(i);
long l = 83838383838L;//常量的默認類型是int残家,如果超過int所能表示的范圍就要在后面加上L
System.out.println(l);
//小數(shù)類型 32 位榆俺,最高位符號位,中間八位坞淮,階碼茴晋,后23位,尾數(shù)
//float 4字節(jié) > 8個字節(jié)的long類型 IEEE754標準 單精度浮點型數(shù)據(jù)
float f = 3.14f;
System.out.println(f);
//double 8字節(jié) > 4個字節(jié)的float類型 雙精度浮點型
double d = 9.38388383838;
System.out.println(d);
//布爾類型
//boolean 未知
boolean boo = true;
System.out.println(boo);
//字符類型
//char 2個字節(jié) 0 - 65535 共能表示65536個字符
char ch = 'a';
System.out.println(ch);
}
}
Java中的默認類型:整數(shù)類型是int 回窘、浮點類型是double诺擅。
5.3 變量的定義
變量定義的格式包括三個要素:數(shù)據(jù)類型、變量名啡直、數(shù)據(jù)值烁涌。
格式
數(shù)據(jù)類型 變量名 = 數(shù)據(jù)值;
練習
定義所有基本數(shù)據(jù)類型的變量,代碼如下:
public class Variable {
public static void main(String[] args){
// 定義字節(jié)型變量
byte b = 100; System.out.println(b);
// 定義短整型變量
short s = 1000; System.out.println(s);
//定義整型變量
int i = 123456; System.out.println(i);
// 定義長整型變量
long l = 12345678900L;
System.out.println(l);
//定義單精度浮點型變量
float f = 5.5F;
System.out.println(f);
//定義雙精度浮點型變量
double d = 8.5;
System.out.println(d);
// 定義布爾型變量
boolean bool = false;
System.out.println(bool);
// 定義字符型變量
char c = 'A';
System.out.println(c);
}
}
long類型:建議數(shù)據(jù)后加L表示酒觅。
float類型:建議數(shù)據(jù)后加F表示撮执。
- 整數(shù)常量的默認類型是int,隨意寫出的整數(shù)常量就必須在int所能表示的范圍之中舷丹。
-2147483648--- 2147483647
說明:如果想要表示超過int類型范圍的數(shù)字二打,就需要使用long類型的常量,在數(shù)字的后面加上一個字母L或者l- 小數(shù)常量的默認類型掂榔,是double
如果想要表示float類型的小數(shù)继效,就需要在float小數(shù)類型的后面加上一個f或者F
5.4 注意事項
- 變量名稱:在同一個大括號范圍內(nèi),變量的名字不可以相同装获。
- 變量賦值:在方法中定義的變量瑞信,必須進行初始化之后,才能使用穴豫。
- 變量作用域:變量在哪個大括號內(nèi)定義凡简,就只能在被定義的大括號內(nèi)使用逼友。
- 多個變量聲明:變量可以在同一行同時聲明多個相同的數(shù)據(jù)變量,并且完成初始化操作秤涩。
例子:
class VariableDemo {
public static void main(String[] args) {
//變量的定義及作用域
int age = 18;// 定義一個變量
//int age = 80;//重復定義帜乞,變量是不能在同一個作用域中重復定義的
age = 20;//變量定義后可以重復賦值
System.out.println(age);
{
//變量是有作用域的,它在那對大括號中定義筐眷,那么起作用的范圍就在那對大括號中
int c = 100;
System.out.println(c);
System.out.println(age);
}
//出了大括號就不能訪問到了
//System.out.println(c);
//變量初始化
System.out.println("------------------------------------");
//變量在方法中定義時黎烈,必須先進行初始化彰居,才能使用
//int high;//變量的聲明按傅,變量的定義,沒有進行初始化的
//int high = 10;//對變量high進行初始化
//對變量進行初始的時候泳梆,變量的聲明和變量的初始化可以分開的
int high;
high = 30;
System.out.println(high);
//同時聲明多個變量
System.out.println("--------------------------------");
int a = 10,b = 20,d = 30; //不建議這些寫
// int a = 10; int b = 20;int d = 30;
System.out.println(a);
System.out.println(b);
System.out.println(d);
}
}
補充:
字符類型
- 使用單引號括號的一個字符武翎。使用的關(guān)鍵字char
- 在計算機中烈炭,所有的數(shù)據(jù)都是使用數(shù)字來進行表示的,字符也不例外
- 看到的字符宝恶,和計算機中的數(shù)字符隙,都有一個對應的關(guān)系:
從字符到數(shù)字的過程,叫做【編碼】
從數(shù)字到字符的過程垫毙,叫做【解碼】
在轉(zhuǎn)換過程中的對應關(guān)系膏执,就叫做編碼表 - 編碼表:最開始老美發(fā)明的,最開始的只有英文字母露久,數(shù)字,一些符號欺栗,定義在ASCII碼表中
ASCII American Standard Information Interchange美國信息交換標準碼表
規(guī)律:數(shù)字毫痕,大寫字母,小寫字母本身連續(xù)的迟几,數(shù)字到大寫字母消请,大寫字母到小寫字母,不連續(xù) - 各個國家都有自己字符类腮,所有都要有自己的編碼表臊泰,其中中國的編碼表GB2312,GBK,其中都是中國的漢字蚜枢,GBK編碼表前面的數(shù)字都是和ASCII表中的內(nèi)容相同缸逃,GBK編碼表中,英文使用的是一個字節(jié)表示厂抽,中文使用的兩個字節(jié)
- 各個國家都有自己的編碼表需频。出現(xiàn)了一個統(tǒng)一碼,Unicode筷凤,使用2個字節(jié)來表示一個字符昭殉,共能表示65536個苞七,可以表示世界上所有的字符,java語言在內(nèi)存中表示字符挪丢,使用的就是Unicode編碼
- UTF-8編碼形式蹂风,可變長編碼,使用1個字節(jié)表示英文字母乾蓬,3個字節(jié)表示一個漢字
- 總結(jié):
在內(nèi)存中一般使用Unicode編碼惠啄,在磁盤或者網(wǎng)絡中使用GBK或者UTF-8,無論是GBK還是UTF-8還是Unicode統(tǒng)統(tǒng)都是兼容ASCII碼表巢块,在任意一個碼表中礁阁,對應的英文字符,都是相同的族奢。 - java中表示字符使用的Unicode編碼姥闭,所以可以使用Unicode碼值去表示一個字符,表示格式‘\uxxxx’
\u代表的是Unicode中字符的一種形式越走,xxxx表示使用的4個16進制的數(shù)字棚品。
舉例:
class CharTypeDemo {
public static void main(String[] args) {
//ASCII碼表
//字符和數(shù)字的對應關(guān)系
//根據(jù)數(shù)字打印ASCII中的字符
System.out.println((char)3);
//根據(jù)字符獲取一下ASCII碼表中對應的數(shù)字
System.out.println((int)'a');//直接進行強制類型轉(zhuǎn)換,將char類型轉(zhuǎn)為int型
System.out.println('a' + 0);//進行運算時char類型數(shù)據(jù)進行向上轉(zhuǎn)換為
//int類型后再與0進行加法操作
//unicode碼值廊敌,使用\u跟上四個十六進制數(shù)的表示
System.out.println('\u7788');
}
}