python的数据类型:
整数:
浮点数:
字符串:
布尔值:
java的数据类型:
整型: byte short int long
浮点型:float double
逻辑型: boolean(它只有两个值可取true false)
字符型 :char
基本数据类型自动转换
byte->short,char -> int -> long
float -> double
int -> float
long -> double
记住:小可转大,大转小会失去精度!!!
在Python中,等号=是赋值语句,可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量,例如:
a = 1
变量a是一个整数。
b= ‘abc’
变量b是一个字符串。
c = True
变量c是一个布尔值True。
这种变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言。静态语言在定义变量时必须指定变量类型,如果赋值的时候类型不匹配,就会报错。例如Java是静态语言,赋值语句如下:
int a =1; (a是整数类型变量)
a =“abc”;(这是错误的,不能把字符串赋给整数类型)
静态语言(强类型语言) 静态语言是在编译时变量的数据类型即可确定的语言,多数静态类型语言要求在使用变量之前必须声明数据类型。
例如:C++、Java、Delphi、C#等。 动态语言(弱类型语言)
动态语言是在运行时确定数据类型的语言。变量使用之前不需要类型声明,通常变量的类型是被赋值的那个值的类型。
例如PHP/ASP/Ruby/Python/Perl/ABAP/SQL/JavaScript/Unix Shell等等。
Java list与Python list相比较
Java List:有序的,可重复的。(有序指的是集合中对象的顺序与添加顺序相同)
Python list(列表)是有序的,可变的。
Java List分类:
—ArrayList:底层使用数组,线程不安全,查找速度快,增删速度慢
在迭代过程中,对集合对象的增删会出现异常
—LinkedList:底层使用链表,线程不安全,查找速度慢,增删速度快
后进先出,类似于栈
—Vector: 底层使用数组,线程安全,查找速度快,增删速度慢,被ArrayList替代
Python 列表无分类,list是Python的基本数据结构。
方法 | Java List | Python list:[1,‘2’,3] | Python tuple:(1,2,3) |
---|---|---|---|
增加到末尾 | boolean add(E e); | list.append(‘大帝’) | 不可变 |
增加到指定位置 | void add(int index, E element); | list.insert(2,‘大帝’) | 不可变 |
长度 | int size(); | len(list) | 与list相同 |
更新 | E set(int index, E element); | list[i]=‘大帝’ | 不可变 |
删除 | E remove(int index); | list.pop(i) | 不可变 |
删除所有 | void clear(); | list.clear() | 不可变, 可以使用del删除元组 |
查找 | E get(int index); | list[i] | 与 list相同 |
Java Map与Python dict相比较
Java Map属于集合,但不属于Collection体系中一部分,无序的,不可重复,以键值对形式存在。
Python dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度,dict的key必须是不可变对象,因为dict根据key使用哈希算法来计算value的存储位置。
Java Map分类:
— HashMap:底层使用的数据结构是哈希表
保持键的唯一性同HashSet相同。
— TreeMap:底层使用的数据结构是二叉树
保持键的唯一性同TreeSet相同。
Python 字典无分类,dict是Python的基本数据结构。
方法 | Java Map List | Python dict:{‘1’:‘1’,‘2’:‘2’} |
---|---|---|
方法 | Java Map | Python dict:{‘1’:‘1’,‘2’:‘2’} |
增加 | V put(K key, V value); | dict[‘1’]=‘大帝’ |
删除 | V remove(Object key); | del dict[‘1’] |
更改 | 和增加相同,若键相同,会覆盖原值 | dict[‘1’]=‘国王’ |
查找 | V get(Object key); | dict[‘1’] |
Java Set与Python set相比较
Java Set底层使用的就是Java Map的键,值被设置为空,因此Set与Map保持唯一性的原理是相同的。
Python set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。
Java Set:无序,不可重复
—HashSet:底层使用哈希表,线程不安全
保证对象唯一的方式:重写hashcode(),equals(Object obj).使用哈希算法导致无序
—TreeSet:底层使用二叉树,线程不安全
在使用add方法添加对象时,会对加入集合的对象进行排序
保证对象唯一的方式:1 实现Comparable接口,实现compareTo()方法的返回值是0,则不能加入。2 创建一个类,实现Comparator,实现compare()方法。
Python 集合无分类,set是Python的基本数据结构。
方法 | Java Set | Python set |
---|---|---|
创建 | 传入一个list:set([1,2,3])或者直接s={1,2,3} | |
增加 | boolean add(E e); | s.add(4) |
删除 | boolean remove(Object o); | s.remove(4)/s.pop() |
更新 | 谈不上更新 | 谈不上更新 |