Java数据类型
Java8大数据类型 byte 、short 、 int 、 long 、float 、 double 、 char 、boolean 对应的包装类分别为 Byte 、 Short 、 Integer 、 Long 、 Float 、 Double 、Boolean
自动类型转换:也称隐式等待,JVM自动完成
转换规则:从小到大自动转换 byte → short(char)→ int → short → long → float → double
注:整数之间进行类型转换时数值不会发生变化,但当整数数值较大转换成小数类型时,可能会存在精度损失
强制类型转换:存储范围大的类型到存储类型小的类型进行转换
转换规则:double → float → long → int → short(char) → byte
double d = 3.14
int i = (int)d
注:强制类型转换通常存在存储精度的损失,慎用
同类型之间的运算,只需要考虑临界值的问题,非同类型的会用到上述两种类型转换
小知识点:
1、char类型变量是用来存储Unicode编码的字符,unicode字符集包含了汉字,所以char可以用来存储汉字,但是当Unicode中不包含某些生僻字时,char就不支持存储该生僻字。
2、Integer是int类型的包装类,int 默认值为0,Integer 默认值为null,由此说明Integer可以区分未赋值和0的区别
数据结构
数据结构的分类:数组 、 堆 、 栈 、 队列 、链表 、 树 、 散列表 、 图
数组:可在内存中连续存储多个元素的结构,内存费配种也是连续的,数组通过下标进行访问。
优点:按照索引查询元素速度快,遍历数组方便
缺点:数组大小固定无法扩容,一个数组只能存储一种类型,数组添加操作慢,因为操作时需要移动其他的元素
使用场景:查询频繁,对存储空间要求不高,很少进行增删的情况
栈:特殊的线性表,且仅能在一端操作,栈顶可以操作,栈底不可进行操作,特点是先进后入,从栈顶放入元素叫入栈,取出叫出栈,常用于递归。
队列:线性表,可在一端添加元素,另一端取出元素,先进先出,添加元素称之为入队,反之称之为出队,多线程阻塞队列管理非常适用
链表:链表是物理存储单元上非连续的、非顺序的存储结构,数据元素的逻辑顺序是通过链表的指针地址实现,每个元素包含两个结点,一个是存储元素的数据域 (内存空间),另一个是指向下一个结点地址的指针域。根据指针的指向,链表能形成不同的结构,例如单链表,双向链表,循环链表等。
树:树是一种数据结构,它是由n(n>=1)个有限节点组成一个具有层次关系的集合
散列表:也叫哈希表,是根据关键码和值 (key和value) 直接进行访问的数据结构,通过key和value来映射到集合中的一个位置,这样就可以很快找到集合中的对应元素
堆:堆是一种比较特殊的数据结构,可以被看做一棵树的数组对象
图:图是由结点的有穷集合V和边的集合E组成(无需了解)