廖雪峰PythonJava对比学习1
廖雪峰PythonJava对比学习1
智汇君廖雪峰PythonJava对比学习1
语言类型
1 | java是javac编译器先编译成字节码.class文件,后java虚拟机解释生成机器码执行 |
1 | intellij idea使用python |
1 | 静态语言java |
输入和输出
python
1 | python里输入input,输出print |
java
1 | java里输入: |
1 | import java.util.Scanner; |
1 | import java.util.Scanner; |
1 | nextFloat() |
数据类型
1 | java中除了整型,浮点型,布尔,字符型以外都是引用类型 |
字符串
1 | 用单引号或者双引号都可以表示字符串(java中字符用单引号,字符串用双引号) |
字符串转义
1 | 字符串转义: |
字符串格式化
1 | 字符串格式化: |
字符串连接
1 | 字符串连接: |
1 | java中高效的方式: |
字符串替换
1 | >>> a = 'abc' |
1 | java中还有这个方法: |
1 | sql有个replace函数 |
整数
1 | python里整型浮点数可以表示无限大 |
空值
1 | 空值None(java中null,同sql) |
常量
1 | python里默认用全大写的英文名字表示常量但是还是可以改变它的值:PI=3.14.. |
列表
1 | list:有序集合列表 里面可以是不同的数据类型 insert(index,v) append(v) pop() pop(5) .sort() |
LIST ARRAYLIST LINKEDLIST
1 | java中有对应的叫array数组,但是这个是一个很基本的东西,删除和添加元素时需要自己移动元素,普通数组一旦定义就不能更改长度 |
equals()
1 | 要能够使用contain(),indexof(x)等这些方法,传入的元素需要正确编写equals()方法 |
1 | 对于引用字段比较,我们使用equals(),对于基本类型字段的比较,我们使用== |
元组
1 | tuple:有序不可改变集合元组,存储的元素为列表时列表里的数据可以改变的,只是指向不变 |
集合
1 | set和dict差不多:无序,不重复(dict的key不重复)(可以用它去重) |
1 | java中有set,常用的实现类是hashset底层使用了hashmap |
hashset
treeset
Queue
1 | LinkedList即实现了List接口,又实现了Queue接口 |
PriorityQueue
1 | 需要对元素实现comparable接口重写compareTo方法,或者传入的Comparator实现compare方法 |
Deque
1 | 允许两头都进,两头都出,这种队列叫双端队列 |
Stack
1 | Stack只有入栈和出栈的操作 |
tostring
1 | 让print知道如何打印一个自定义对象 |
1 | python里叫__str__()方法 |
字典
1 | dict['xx']和dict.get('xx'):前者没有key值时报错后者返回None |
MAP HASHMAP
1 | java中也有类似的map接口,常用的实现类是hashmap |
1 | hashmap底层使用了数组来存储key-value,对key使用hashcode将值存储在对应的位置上,当不同的key计算hash值后相同,这就叫hash冲突(会用数组来存储相同的映射值) |
hashCode()
1 | 要能正确使用map,key需要实现equals方法,value需要实现hashcoe方法 |
EnumMap
1 | key的对象是enum类型 |
TreeMap
1 | 有序的map,保证遍历顺序和存入的顺序一样 |
compare方法
1 | 传入Comparator时,需要实现这个方法 |
compareTo方法
1 | 让java知道如何比较自定义对象 |
1 | int(),list(),set(),len() |
1 | match case |
1 | if isinstance(x, (int, float)) |
1 | java: |
运算符
1 | python |
1 | java |
编码
1 | ASCII:一个字节表示一个字符 |
1 | python: |
1 | switch case |









