Forth Week :快速上手一门编程语言
快速上手一門(mén)編程語(yǔ)言
- 概述
- 圖靈完備性語(yǔ)言
- 識(shí)別類(lèi)型
- 學(xué)習(xí)路徑
- 一 掌握該語(yǔ)言的背景 - 2h
- 二 掌握該語(yǔ)言的基本程序邏輯語(yǔ)法 - 1h
- 1、順序結(jié)構(gòu)
- 2、分支結(jié)構(gòu)
- 1)if語(yǔ)句
- 2)switch ... case多分支語(yǔ)句
- 3、循環(huán)結(jié)構(gòu)
- 1)while
- 2)do......while
- 3)for
- 4)foreach 【java5的新特征之一】
- 三 掌握該語(yǔ)言的變量 - 2h
- 1 明確語(yǔ)言的類(lèi)型
- 2 基本類(lèi)型和封裝類(lèi)型
- 1)基本數(shù)據(jù)類(lèi)型
- (1)內(nèi)置數(shù)據(jù)類(lèi)型
- (2)引用數(shù)據(jù)類(lèi)型
- (3)常量
- (4)特殊轉(zhuǎn)義字符
- (5)類(lèi)型轉(zhuǎn)換
- 運(yùn)算符
- 1)算數(shù)運(yùn)算符
- 2)關(guān)系運(yùn)算符
- 3)位運(yùn)算符
- 4)邏輯運(yùn)算符
- 5)賦值運(yùn)算符
- 6)其他運(yùn)算符
- 泛型
- 3 時(shí)間和日期的類(lèi)型和處理
- 4 字符串的實(shí)現(xiàn)和種類(lèi)
- 四 容器對(duì)象學(xué)習(xí) - 1h
- 五 實(shí)現(xiàn)抽象的方法、類(lèi)、接口與函數(shù)的實(shí)現(xiàn)、使用 - 2h - coder
- 六 函數(shù)式編程的支持
- 七 依賴(lài)與項(xiàng)目管理工具與生態(tài)支持 - developer
- 八 內(nèi)置高級(jí)功能 - professional
- 九 文件讀取和寫(xiě)入
概述
圖靈完備性語(yǔ)言
圖靈完備的語(yǔ)言,有循環(huán)執(zhí)行語(yǔ)句,判斷分支語(yǔ)句等。理論上能解決任何算法。但有可能進(jìn)入死循環(huán)而程序崩潰。
Pyhton java php等都是圖靈完備的
識(shí)別類(lèi)型
https://blog.csdn.net/sinat_38682860/article/details/86492429?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromBaidu-1.control&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromBaidu-1.control
四個(gè)概念:
強(qiáng)類(lèi)型 & 弱類(lèi)型
動(dòng)態(tài)類(lèi)型 & 靜態(tài)類(lèi)型
因此:
Python是動(dòng)態(tài)強(qiáng)類(lèi)型語(yǔ)言 編程語(yǔ)言環(huán)境幫助我們判斷類(lèi)型
Java是靜態(tài)強(qiáng)類(lèi)型的
C是靜態(tài)弱類(lèi)型的 char a -> %c顯示a %d顯示65 人來(lái)判斷是什么類(lèi)型 (PHP也是弱類(lèi)型)
強(qiáng)弱是指本身能夠判斷這個(gè)變量是什么類(lèi)型
動(dòng)靜是指聲明變量時(shí)指定變量類(lèi)型是靜態(tài)類(lèi)型(有強(qiáng)制類(lèi)型轉(zhuǎn)換),不需要指定的是動(dòng)態(tài)類(lèi)型(可以自動(dòng)轉(zhuǎn)換)。
學(xué)習(xí)路徑
一 掌握該語(yǔ)言的背景 - 2h
二 掌握該語(yǔ)言的基本程序邏輯語(yǔ)法 - 1h
1、順序結(jié)構(gòu)
2、分支結(jié)構(gòu)
1)if語(yǔ)句
if(表達(dá)式){語(yǔ)句塊; } else if(表達(dá)式){語(yǔ)句塊; } else{語(yǔ)句塊; }2)switch … case多分支語(yǔ)句
switch(表達(dá)式){case 常量1:{語(yǔ)句塊;break;}case 常量2:{語(yǔ)句塊;break;}[default:{語(yǔ)句塊;}] }3、循環(huán)結(jié)構(gòu)
break和continue語(yǔ)句:break是終止本層循環(huán),跳到外層繼續(xù)執(zhí)行代碼;continue終止本次循環(huán),繼續(xù)下一次循環(huán);
1)while
public static void main(String args[]){int result = 0;int i = 0;while(i<=100){result += i;i++;}System.out.println("result = "+result); }2)do…while
public static void main(String args[]){int result = 0;int i=0;do{result += i;i++;}while(i<=100);System.out.println("result = "+result); }3)for
public static void main(String args[]){for (int i=0;i<10;i++){if(i==3) break;System.out.println("i = "+i);}System.out.println("Game over!"); }4)foreach 【java5的新特征之一】
for(元素類(lèi)型t 元素變量x:遍歷對(duì)象obj){ 引用了x的java語(yǔ)句; } public void test(){int arr[] = {2,3,4};System.out.println("-----排序前一維數(shù)組-----");for(int x:arr){System.out.println(x);//逐個(gè)輸出數(shù)組元素}Arrays.sort(arr);System.out.println("-----排序后一維數(shù)組-----");for(int x:arr){System.out.println(x);}//輸出二維數(shù)組int arr2[][] = {{1,2,3},{4,5,6}};System.out.println("二維數(shù)組輸出測(cè)試");for(int x[] : arr2){for(int e:x){System.out.println(e);}}//輸出三維數(shù)組int arr3[][][] = {{{1,2},{3,4}},{{5,6},{7,8}}};System.out.println("三維數(shù)組輸出測(cè)試");for(int[][] a2:arr){for(int[] a1:a2){for(int x:a1){System.out.println(x);}}} }三 掌握該語(yǔ)言的變量 - 2h
1 明確語(yǔ)言的類(lèi)型
靜態(tài)?動(dòng)態(tài)?
強(qiáng) or 弱 ?
2 基本類(lèi)型和封裝類(lèi)型
變量類(lèi)型是值 or 引用類(lèi)型?
C、C++ - 值類(lèi)型(保存地址) Python、Javascrip - 引用類(lèi)型(保存指針 判斷時(shí)用equal判斷,否則判斷指針指的是否是同一個(gè)地址了) Java 兩者都有
1)基本數(shù)據(jù)類(lèi)型
(1)內(nèi)置數(shù)據(jù)類(lèi)型
八種基本類(lèi)型:六種數(shù)字類(lèi)型(四種整數(shù)型、兩個(gè)浮點(diǎn)型),一種字符類(lèi)型,一種布爾類(lèi)型。
byte:8位,有符號(hào)
short:16位,有符號(hào)
int:32位,有符號(hào)
long:64位,有符號(hào)
float:單精度、32位
double:雙精度、64位
boolean:表示一位的信息,取值true和false
char:單個(gè)的16位Unicode字符
(2)引用數(shù)據(jù)類(lèi)型
類(lèi)似于C/C++的指針,引用類(lèi)型指向一個(gè)對(duì)象,指向?qū)ο蟮淖兞渴且米兞俊_@些變量在聲明時(shí)被指定為一個(gè)特定的類(lèi)型(Employee,Puppy),變量一旦聲明后,類(lèi)型就不能改變了。
- 對(duì)象、數(shù)組都是引用數(shù)據(jù)類(lèi)型。
- array.clone() 否則傳過(guò)去的是地址
- 所有引用類(lèi)型的默認(rèn)值都是null。
- 一個(gè)引用類(lèi)型可以用來(lái)引用任何與之兼容的類(lèi)型。
(3)常量
常量在程序運(yùn)行時(shí)不能被修改,使用final關(guān)鍵字來(lái)修飾,聲明方式和變量類(lèi)似,變量名常使用大寫(xiě)字母:
final double PI = 3.14159;(4)特殊轉(zhuǎn)義字符
(5)類(lèi)型轉(zhuǎn)換
運(yùn)算符
1)算數(shù)運(yùn)算符
| + | 加 |
| – | – |
| - | 減 |
| – | – |
| * | 乘 |
| – | – |
| / | 除 |
| – | – |
| % | 求余 |
| – | – |
| ++ | 自增 |
| – | – |
| – | 自減 |
2)關(guān)系運(yùn)算符
| == | 判斷是否相等 |
| – | – |
| != | 判斷是否不等 |
| – | – |
| > | 大于? |
| – | – |
| < | 小于? |
| – | – |
| >= | 大于等于? |
| – | – |
| <= | 小于等于? |
3)位運(yùn)算符
| & | 與 |
| – | – |
| – | – |
| ^ | |
| – | – |
| ~ | 按位取反 |
| – | – |
| << | 按位左移 |
| – | – |
| >> | 按位右移 |
4)邏輯運(yùn)算符
| && | 邏輯與 |
| – | – |
| – | – |
| ! | 邏輯非 |
5)賦值運(yùn)算符
6)其他運(yùn)算符
泛型
** 自定義泛型* 泛型字母:T Type* K V key value* E Element* 泛型類(lèi):只能用在成員變量上,只能使用引用類(lèi)型* 泛型接口:只能用在抽象方法上* 泛型方法:返回值前加上* */* //利用泛型方法打印不同的字符串元素 public class GenericMethodTest {public static <E> void printArray(E[] inputArray) {for(E x:inputArray) {System.out.printf("%s ",x);}System.out.println();}public static void main(String[] args) {Integer[] intArray = {1,2,3,4,5};Double[] doubleArray = {1.1,1.2,1.3,1.4};Character[] charArray = {'a','b','c','d'};System.out.println("整型數(shù)組元素為:");printArray(intArray);System.out.println("浮點(diǎn)型數(shù)組元素為:");printArray(doubleArray);System.out.println("字符串型數(shù)組元素為:");printArray(charArray);} }// <任意字符extends類(lèi)/接口> 表示泛型的上限, 同樣的super表示泛型的下限 public static <T extends Comparable<T>> T maximum(T x,T y,T z) {T max = x;if(y.compareTo(max)>0) {max = y;}if(z.compareTo(max)>0) {max = z;}return max;}public static void main(String[] args) {Scanner scan = new Scanner(System.in); System.out.println("請(qǐng)輸入三個(gè)整型數(shù)字:");int a = scan.nextInt();int b = scan.nextInt();int c = scan.nextInt();System.out.println("最大的數(shù)為:"+maximum(a,b,c));System.out.println("請(qǐng)輸入三個(gè)浮點(diǎn)型數(shù)字:");float d = scan.nextFloat();float e = scan.nextFloat();float f = scan.nextFloat();System.out.println("最大的數(shù)為:"+maximum(d,e,f));}3 時(shí)間和日期的類(lèi)型和處理
保存時(shí)間1970年格林威治到現(xiàn)在的時(shí)間戳
Date類(lèi)
Calendar類(lèi)
4 字符串的實(shí)現(xiàn)和種類(lèi)
可變 or 不可變?
字符串常量池 :String創(chuàng)建的字符串存儲(chǔ)在公共池中,而new創(chuàng)建的字符串對(duì)象在堆上
StringBuffer類(lèi)、StringBuilder比StringBuffer速度快
使用stringBuffer類(lèi)時(shí),每次都會(huì)對(duì)Stringuffer對(duì)象本身進(jìn)行操作,而不是生成新的對(duì)象,要求線(xiàn)程安全的情況下,必須使用StringBuffer類(lèi)
正則表達(dá)式函數(shù) Matcher類(lèi)
特殊點(diǎn):
在 Java 中,\ 表示:我要插入一個(gè)正則表達(dá)式的反斜線(xiàn),所以其后的字符具有特殊的意義。正常反斜杠表示:\\
四 容器對(duì)象學(xué)習(xí) - 1h
Hash map、字典、數(shù)組等等
Java -
C++ 導(dǎo)入模板庫(kù)
1、容器對(duì)象的種類(lèi)和實(shí)現(xiàn)原理
2、遍歷
3、深淺復(fù)制
4、序列化和反序列化
5、查閱手冊(cè),了解全部容器支持的函數(shù)并掌握常用容器操作函數(shù)
五 實(shí)現(xiàn)抽象的方法、類(lèi)、接口與函數(shù)的實(shí)現(xiàn)、使用 - 2h - coder
1、函數(shù)的定義與調(diào)用
2、參數(shù)使用與傳遞方式
3、類(lèi)和對(duì)象的實(shí)現(xiàn)方式 - 封裝繼承多態(tài)
4、多繼承還是接口
5、常見(jiàn)的設(shè)計(jì)模式的實(shí)現(xiàn),單例模式、代理模式(委托),觀(guān)察者模式
六 函數(shù)式編程的支持
1、高階函數(shù)對(duì)象
2、語(yǔ)法特性與編程習(xí)慣(如鏈?zhǔn)秸Z(yǔ)法、閉包等)
七 依賴(lài)與項(xiàng)目管理工具與生態(tài)支持 - developer
java的maven、gradle
八 內(nèi)置高級(jí)功能 - professional
并發(fā)模型、多線(xiàn)程,多進(jìn)程,系統(tǒng)調(diào)用,磁盤(pán)管理,數(shù)據(jù)庫(kù)管理,網(wǎng)絡(luò)支持等特性
至少要會(huì)查看手冊(cè)
任務(wù):
1、完成一個(gè)支持消息循環(huán)的交互程序
開(kāi)始運(yùn)行之后不結(jié)束 while循環(huán)之類(lèi)的 通過(guò)輸入某個(gè)命令,再退出
rpg小程序 完成六步以上的劇情??
精細(xì)的控制 二進(jìn)制位進(jìn)行操作
交互應(yīng)用程序 凱撒密碼對(duì)數(shù)據(jù)進(jìn)行加密
加密前選擇位移的序號(hào) 在輸入一串字符串 回車(chē)后輸出加密字符串 放到文本 在解密程序 導(dǎo)入標(biāo)準(zhǔn)輸入流 輸入一個(gè)序號(hào)
破解 不知道加密序號(hào) 導(dǎo)入文本中數(shù)據(jù) 找到加密序號(hào) 找出加密前的 正確的字符串需要人為判斷 機(jī)器只是工具 人才知道要的是什么
九 文件讀取和寫(xiě)入
1、文件類(lèi)繼承關(guān)系
2、文件讀取
(2)按行讀取
使用BufferedReader中的readLine()方法。無(wú)參數(shù),返回包含改行的內(nèi)容字符串,不包含任何行終止符,如果已經(jīng)到達(dá)流末尾,則返回null。
(3)自動(dòng)換行寫(xiě)入
利用OutputStream中的Println()方法
總結(jié)
以上是生活随笔為你收集整理的Forth Week :快速上手一门编程语言的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Third Week :Linux下的C
- 下一篇: Fifth Week:Node.js学习