1. 程式人生 > >python資料型別與c++,java資料型別區別

python資料型別與c++,java資料型別區別

 最近開始學習Python,都說最好的學習方式就是比較。從今天開始,用部落格來記錄Python和之前學習的C++、Java語言的區別,看看這是否是一個學習新語言的好途徑。

    C++的支援的基本資料型別:bool、char、wchar_t、short、int、long、long long、float、double、long double;其中 char、wchar_t、short、int、long、long long可以通過unsigned修飾符修飾

    C++中各種基本資料型別佔用的儲存空間,是依照機器來定的,c++中僅定義了各個資料型別佔用的最小儲存空間:       

    bool - 未定義最小儲存空間

    char/unsigned char - 1個位元組

    wchar_t/unsigned wchar_t - 2個位元組

    short/unsigned short  - 2個位元組

    int/unsigned int - 2個位元組

    long/unsigned long - 4個位元組

    float - 單精度浮點數,6位有效數字(一般是4個位元組)

    double - 雙精度浮點數,10位有效數字(一般是8個位元組)

    long double - 擴充套件精度浮點數,10位有效數字(一般是12個位元組)

    Java支援的基本資料型別:boolean、char、byte、short、int、long、float、double,不支援unsigned修飾符,資料型別都是帶符號的

    Java中各種資料型別佔用的儲存空間,是規定好了的,並不因為機器的不同而不同。JAVA定義的各種資料型別支援的儲存空間如下:

    boolean - 1位

    byte - 1個位元組

    char - 2個位元組

    short - 2個位元組

    int - 4個位元組

    long - 8個位元組

    float - 4個位元組

    double - 8個位元組

    Python支援的基本資料型別:bool型別、整型、浮點型、字串、列表、元組、集合、字典;資料型別不存在unsigned一說,都是帶符號的

    Python中各種資料型別佔用的儲存空間,並沒有任何規定,完全取決於賦值的資料;所以,和C++和Java不同,python中可以表達任意大的數值

Java和C++的對比

    JAVA和C++的一個大的區別是,java中資料型別的大小是固定的,這個是因為java是跨平臺的語言,顯然,如果資料型別長度都不一致,就無法實現跨平臺了。另一個區別是,JAVA的資料型別沒有C++豐富,既沒有long long、long double這種資料型別,也不支援unsigned一說。此外,在JAVA中char型別是2個位元組的,一次性解決了C++中char和wchar_t的問題

Python和JAVA/C++的對比    

    從上面的基本資訊可以看出來,python和C++以及Java的區別非常大,它並沒有int、long等這類定義資料型別的關鍵字,其次,它也沒有規定各個資料型別的儲存空間大小。這是因為和C++、JAVA都是靜態強型別語句不同,python是一種動態強型別語言,它不是依靠在編碼時通過關鍵字來指定變數的型別,而是通過在執行時,計算變數的取值,自動為變數選擇合適的資料型別。所以,python同樣有各種資料型別的概念,卻沒有關鍵字去定義。【所謂強型別語言,指的是一個變數的資料型別一旦被定義了(無論是靜態型別語言的通過關鍵字顯示定義,還是動態語言的自動匹配),那麼該變數的資料型別就不能被改變,除非是有強制的型別轉換髮生】

    而Python中各個資料型別,並不需要定義其儲存空間,也是這個原因。Python會根據變數的取值,自動為其分配儲存空間,數值1和數值1000000000000000,對於python而言,都是整型資料,儲存佔用的空間顯然不一樣。

    Python和其他兩種語言的不同之處還在於,Python本身提供了內建的複雜資料型別:字串、列表、元組、集合和字典。Python中的複雜資料型別,在JAVA和C++中都有其他的方式實現,在後面的文章中會詳細對比這幾種資料型別的差別。

轉載地址《http://galaxyflower.blog.51cto.com/9006676/1441780》