java基础查漏补缺day08

java基础查漏补缺day08

  • 1.为什么lang 包不用导入?
  • 2.String底层实现:
  • 3.字符串拼接使用StringBuilder.
  • 4.arraylist扩容策略:arraylist 初始容量为10,超过10,按原长度的1.5倍扩容。
  • 5.Stringbuilder扩容方式:初始16,扩容加倍。
  • 6.三元运算符:
  • 7.为什么flaot类型数据,加减时不需要提升位double?
  • 8.控制台输出引用地址:arraylist_demo03.Student@4554617c
  • 9.ArrayList集合
  • 10.java中为什么要有基本数据类型?

1.为什么lang 包不用导入?

java.lang包是Java语言的核心类库,包括了运行Java程序必不可少的系统类,如基本数据类型、基本数学函数、字符串处理、线程、异常处理类等。每个Java程序运行时,系统都会自动地引入java.lang包,所以这个包的加载是缺省的。

2.String底层实现:

jdk8之前是String -是char[],jdk9–string 是byte[]

3.字符串拼接使用StringBuilder.

因为效率比String “+” 直接拼接要高。

4.arraylist扩容策略:arraylist 初始容量为10,超过10,按原长度的1.5倍扩容。

那么容量变化的规则是什么呢?请看下面的公式:
((旧容量 * 3) / 2) + 1

10->16->25->38->58->88->…

5.Stringbuilder扩容方式:初始16,扩容加倍。

stringBuilder 扩容方式:
1.初始化容量 16 (字符串大小范围0~16)
2.若是大小为17 时,容量为34=162+2 (字符串大小范围17~34)
3.若是大小为35 时,容量为70=34
2+2 (字符串大小范围70~(70*2+2))

6.三元运算符:

三元运算符:要求必须有返回值,表达式1和表达式2要求必须能return,所以不能在表达式1或表达式2中书写输出语句

7.为什么flaot类型数据,加减时不需要提升位double?

因为jvm设计初期是32位的,效率比较高。

8.控制台输出引用地址:arraylist_demo03.Student@4554617c

是对象实例的名称字符串,符号` @ ',和符号进制表示的对象的哈希码

9.ArrayList集合

–删除整数可以用Integer.valueOf(value)或者 new Integer(value).

10.java中为什么要有基本数据类型?

基本数据类型是用的最频繁的类型。
而且占用存储空间小,可以把它们存入栈中,实现快速的操作。
而他们的封装类Integer等,必需创建实例,在堆中开辟内存,既消耗资源,又耗费时间。他们类似于其他大多数非面向对象语言的简单数据类型。

boolean byte short char int long float double 说他们是基本数据类型是因为他们在内存中值使用栈作为存储空间,而与之相对的引用数据类型(String 数组 对象等等)则是同时占用栈与堆。所以,使用基本数据类型的包装类要比基本数据类型的效率低一些。

这样做的原因是出于效率方面的考虑

你可能感兴趣的:(java,开发语言,后端)