JAVA入门学习进阶知识点2

1.数组
是一种引用类型,是一种简单的数据结构,线性的结构,可以存储任意数据类型的元素。数组中存储的元素类型是统一的,数组长度一旦定义不可再改变。

2.二维数组
一个二维数组a[][],a.length返回的是数组的行数,a[0].length返回的是第一行的列数量,a[n].length返回的是第n-1行列数量

3.数组考查点
中最爱考查的地方就是排序,如冒泡排序和选择排序,务必能够理解并手写出来

4.String
字符串一旦创建,其内容不可再改变
提升字符串的访问效率:在程序中使用了“缓存”技术,所以在Java中所有使用“双引号”括起来的字符串都会在“字符串常量池”中创建一份。字符串常量池在方法区中被存储。
在程序执行过程中,如果程序用到某个字符串,那么程序会在字符串常量池中去搜索该字符串,如果没有找到则在字符串常量池中新建一个该字符串,如果找到就直接拿过来用。(字符串常量池是一个缓存区,为了提高访问字符串的效率)

比较两个字符串是否一致,必须使用String提供的equals方法。
String s1 = String(“abc”);只会在字符串常量池中创建一个“abc”字符串对象。
String s2 = new String(“Hello”);会在字符串常量池中创建一个“hello”字符串对象,并且会在堆中再创建一个字符串对象。该方式比较浪费内存,因此常用第一种方式。
面试题:
以下程序创建了几个对象?答案:将在下节中给出
String s1 = new String(“Hello”);
String s2 = new String(“Hello”);

5.StringBuffer/StringBuilder
StringBuffer/StringBuilder是什么:是一个字符串缓冲区
工作原理:预先在内存中申请一块空间,以容纳字符序列,如果预留的空间不够用,则进行自动扩容,以容纳更多字符序列。
StringBuffer/StringBuilder和String最大的区别:
String是不可变的字符序列,存储字符串常量池中。
StringBuffer底层是一个char数组,但是该char数组是可变的。并且可以自动扩容。
其次,
StringBuffer是线程安全的,可以在多线程环境下使用不会出现问题
StringBuilder是非线程安全的,在多线程环境下使用可能出现问题

(这是以前写的,存为了草稿,现在还是公开出来,以后会补充得更详细)

猜你喜欢

转载自blog.csdn.net/fallwind_of_july/article/details/88036586
今日推荐