Java基础整理
- 数据类型
- bit 位是计算机中最小的数据表示单位,它只有0/1两种状态 1byte = 8bit
- 8种基本数据类型
- 整型 int
- 字节型 byte (-128~127)
- 短整型 short (16位)
- 长整形 long (64位,在其后加L)
- 单精度浮点型 float (在其后加F)
- 双精度浮点型 double (java中所有浮点型默认double,double类型变量不能赋值给float类型变量,需要强转)
- 字符型 char
- 布尔型 boolean
- ++自增运算符
- int b = a++;先将a赋值给b,再讲a自增1
- int b = ++a;先将a自增1,再赋值给b
- 成员变量与局部变量的比较
- 两者使用前都需要声明
- 局部变量使用前还需要初始化,成员变量可以不进行初始化,有默认值。
- byte、short、int、long 默认值0
- float、double 默认值0.0
- char 默认值‘\u0000’ 即空字符串
- boolean 默认值false
- new关键字在生成对象的时候干了三件事情
- 为对象开辟内存空间
- 调用类的构造方法
- 返回对象的地址
- 在构造方法中调用另一个构造方法,使用this()方法调用,注意:this()之前必须为第一行代码。
- 接口中的方法默认都是public、statics、final
- String是常量(被final修饰),其对象一旦创建完毕,就不会再改变。当我们使用+拼接时,它不会修改原有对象,而是重新创建新的对象。
- 字面值赋值与new String的区别
- String s = "aaaa";字面值只会在String Pool(字符串池)中创建对象,并将地址赋给s引用
- String s = new String("aaaa");new String 会在String Pool和堆中都创建对象,最终将堆中的对象地址赋给s引用
- 数组和集合的比较
- 数组长度固定,集合长度可变
- 数组存放基本数据类型,集合存放对象引用(放置基本数据类型时会被自动装箱成包装类)
- 集合中放置的是Object类型,所以取出时也是Object类型,需要强转
- ArrayList底层是采用数组实现的,当我们调用集合不带参数的构造方法生成对象时,会在底层创建一个长度为10的Object类型的数组。当存储数量超过10时,底层会重新生成一个比原数组更长的数组,将原有数据赋值到新数组中,再将新数据放到新数组中。如此重复。
- 使用hashset时,hashCode()方法就会得到调用,判断新增对象的hashCode值是否与集合中对象的hashCode值一致,如果一致,再调用equals()方法,返回去,判定已存在。否则添加该对象。
- 可变参数本质上就是一个数组,它在传参时可以是离散值也可以是一个数组。但如果方法使用数组作为参数,那么就不能传入离散值。可变参数必须作为最后一个参数(一个方法只能有一个可变参数)。