java&python使用對比的淺析


本人寫了一段時間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(主要是它只能運用於單核機器),原諒渣渣的我

使用比較:

  1. 基礎語法篇:

先個來一個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語言提供了八種基本類型。六種數字類型(四個整數型,兩個浮點型),一種字符類型,還有一種布爾型。數字類型包括:byteshortintlong,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.集合的應用: 

  1. 列表:

Java 的列表聲明方法:

List<String> list=new ArrayList<String>(); //此處舉了個存儲類型為String的列表

Python 的列表:

List = []   #聲明是不是很簡單,感覺跟java的數組聲明有些像

 

  1. 字典(map):

這里的叫法不一樣,python中將鍵值對 key – value 叫作 字典,而java中叫作Map,但實際的存儲方式其實都是鍵值對

Java 聲明辦法:

Map<String,String> map = new HashMap<>(); //聲明了一個鍵值都為String類型的map

 

Python聲明辦法:

Dic = {}  #依然簡單粗暴

 

  1. set

java 聲明方法:

Set<String> set = new HashSet<>();  //聲明一個類型為String的set

 

Python聲明辦法:

 set () 或者 使用大括號 { }  #此處需要記住這里必須得有set 這個單詞在,大小寫也記住,要不然解釋器也不知道你聲明的是啥玩意

 

至此,我的總結暫時完了,總結的都是些很初級的東西,主要說我本身就很初級~ 但是還是懷着互相學習的精神來寫了我這篇處女帖,但我真心不知道咋排版。原諒渣渣得我,我也在努力不渣!有誰有啥問題,可以帖子留言~假如真有問題我一定會改的!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM