本人寫了一段時間java了,最近半年在寫python,遂想將其使用中的共同點和異同點整理出來,方便自己和大家學習。
兩者的本質區別,請參考如下別人寫的帖子:
https://blog.csdn.net/sinat_30603081/article/details/78489261?locationNum=1&fps=1
https://blog.csdn.net/qq_17635843/article/details/77880694
本人不是特別清楚,只大概知道java 是強類型語言,python是弱類型語言,java 的運行速度和效率高於python(主要是它只能運用於單核機器),原諒渣渣的我
使用比較:
- 基礎語法篇:
先個來一個hello world 鎮鎮樓:
public class HelloWorld {
public static void main(String []args) {
System.out.println("Hello World");
}
}
if __name__ == '__main__':
print("Hello World")
此處大家已經明顯感覺到了 java是通過花括號({ })和分號來區分代碼的,而python通過代碼縮進來保障這一點的,所以大家在寫python代碼時一定得注意行縮進,要不然后期代碼會報錯的,這點也是python異於別的語言的一個特點。
2.修飾符:
Java的: public , protected, private
Python的:雙下划線“__” 表示私有
3.數據類型:
Java語言提供了八種基本類型。六種數字類型(四個整數型,兩個浮點型),一種字符類型,還有一種布爾型。數字類型包括:byte,short,int,long,float,double,
Python:Number(數字),String(字符串),List(列表),Tuple(元組),Set(集合),Dictionary(字典) 這里python語言比起java 有些特殊,如List ,Tuple,Set等在java為內置的集合類,而在python卻是一種數據類型,python的數字類型支持: int、float、bool、complex(復數)這四種類型,此處大家需要注意一些東東:python3 和 python2在int類型上有個區別,那就是python2 支持支持整形和長整型兩種數字類型,而python3 只有整形,還有一個問題很重要很重要的,那就是python2 本身是沒有布爾類型的,它用0表示False,用1表示True,到了python3,把True,和Fale作為了關鍵字,但是它們的值還是0和1,仍然可以進行加減。剩下的String 字符串類型和java中的String 類相似,至於 List(列表),Tuple(元組),Set(集合),Dictionary(字典) 我會在后續的java 集合類內會做對比的。
4.運算符:
算數運算符:
Java 和python 支持基本的 + - * / 以及 % 運算,特殊的是java 還支持 自增 ++ 以及自減 – 運算,而python還支持一些冪運算 ** ,以及取整除運算 //,這些運算java只能通過調用內置大的一些方法和api才能達到對應的效果
比較運算符:
二者均支持:== != > < >= <= 這6個運算符
位運算符:
二者均支持:& | ^ ~ >> << 這6個運算符
邏輯運算符:
Java支持的邏輯運算符為: && || !
Python支持的邏輯運算符為:and or not
特有篇:
最后 python還支持成員運算符 :in 以及 not in這是java所沒有的 和身份成員運算符:is 和 is not
運算優先級請看如下截圖(出自菜鳥教程):
Python篇:

Java篇:

5.循環篇:
Java篇:
支持如下三種循環用法:
- while 循環
- do…while 循環
- for 循環
其中 while的用法:
while( 布爾表達式 ) { //循環內容 }
do……while 用法為:
do {
//代碼語句
}while(布爾表達式);
for 的用法:
for(初始化; 布爾表達式; 更新) { //代碼語句 }
python篇:
- while 循環
- for 循環
其中 while的用法:
while 判斷條件:
語句
for 的用法:
for 變量 in 序列:
語句
總結:在日常使用中for是使用最多的循環,此處java 和 python 中都有很多很經典的用法,大家需要很好的掌握,請自行學習別的帖子,此處我不做過多陳述。
條件控制:
Java與python都支持if……else…… 語句,還有同時支持 if...else if...else 語句,只不過 python的這個語句表達式是這樣的 if...elif...else ,邏輯判斷結構都是一樣的只是python的這個表達式較java 比較特殊罷了。
當然 java除了支持if……else 這樣類似的結構外還支持 switch …… case結構,此處我也不做過多陳述了
6.異常處理:
Java 篇:
try
{
// 程序代碼
}catch(ExceptionName e1)
{
//Catch 塊
}
拋出異常方法:
throw/ throws 異常名
Python篇:
try:
<語句> #運行別的代碼
except <名字>:
<語句> #如果在try部份引發了'name'異常
except <名字>,<數據>:
<語句> #如果引發了'name'異常,獲得附加的數據
else:
<語句> #如果沒有異常發生
拋出異常方法:raise [Exception [, args [, traceback]]]
此處java 與 python的捕獲異常方法類似,只不過一個捕獲異常使用 catch,一個使用except罷了。此處python更靈活點,多了個else語句。
7.面向對象:
類的聲明:
Java:
public class Dog{
String breed;
int age;
String color;
void barking(){
}
void hungry(){
}
void sleeping(){
}
}
Python:
class Dog:
breed = ""
age = 0
color = ""
def barking () :
pass
def hungry () :
pass
def sleeping () :
pass
此處我為了找個對應的例子然后寫了個很挫的例子,就是為了讓大家可以更清晰python的舉例
構造方法:
Java的:
public class Puppy{
public Puppy(){
}
public Puppy(String name){
// 這個構造器僅有一個參數:name
}
}
Python的:
class Puppy:
def __init__(self,name):
pass
其中的 __init__ 就是python的構造方法
創建對象:
Java 篇:
public class Puppy{
public Puppy(String name){
//這個構造器僅有一個參數:name
System.out.println("小狗的名字是 : " + name );
}
public static void main(String []args){
// 下面的語句將創建一個Puppy對象
Puppy myPuppy = new Puppy( "tommy" );
}
}
Python 篇:
class Puppy:
def __init__(self,name):
print ("小狗的名字是 : %s" % name)
if __name__ == '__main__':
puppy = Puppy("tommy ")
權限修飾符:
這個時候大家會問,java 有 public ,private 等權限修飾符,python有嗎,我得鄭重說有呀,必須有呀,只不過python 跟java 類似假如不顯示聲明的話默認都是公共的,假如在屬性和方法面前加上”__”(此處是兩個下划線) 時表示的就是私有屬性或者私有方法了。
方法&函數:
Java 中的方法對應python中叫函數,別問我為啥,我就看別的文檔都這么寫的,聲明方法:
Java 篇:
public /private/protected 返回類型 方法名(參數){
方法體
}
Python 篇:
def __ 或者此處啥都不寫 方法名(參數與):
方法體
基本上與java的類似就是多了個 def 罷了
繼承:
Java 篇:
class 父類 { }
class 子類 extends 父類 { }
python篇:
class 派生類 (父類)
這里你會發現其實java 和 python就是省略了一個 extends ,此處我大概點撥一下一個東東,那就是java 只能支持一個一個的繼承,而python 很牛逼呀,支持多重繼承,這點簡直碉堡了
8.集合的應用:
- 列表:
Java 的列表聲明方法:
List<String> list=new ArrayList<String>(); //此處舉了個存儲類型為String的列表
Python 的列表:
List = [] #聲明是不是很簡單,感覺跟java的數組聲明有些像
- 字典(map):
這里的叫法不一樣,python中將鍵值對 key – value 叫作 字典,而java中叫作Map,但實際的存儲方式其實都是鍵值對
Java 聲明辦法:
Map<String,String> map = new HashMap<>(); //聲明了一個鍵值都為String類型的map
Python聲明辦法:
Dic = {} #依然簡單粗暴
- set
java 聲明方法:
Set<String> set = new HashSet<>(); //聲明一個類型為String的set
Python聲明辦法:
set () 或者 使用大括號 { } #此處需要記住這里必須得有set 這個單詞在,大小寫也記住,要不然解釋器也不知道你聲明的是啥玩意
至此,我的總結暫時完了,總結的都是些很初級的東西,主要說我本身就很初級~ 但是還是懷着互相學習的精神來寫了我這篇處女帖,但我真心不知道咋排版。原諒渣渣得我,我也在努力不渣!有誰有啥問題,可以帖子留言~假如真有問題我一定會改的!
