数组、String、Stringbuilder、StringBuffer

数组的定义

  --数组是相同类型数据的有序集合。其中,每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问它们。

数组的四个基本特点:

  --其长度是确定的。数组一旦被创建,它的大小就是不可以改变的。

  --其元素必须是相同类型,不允许出现混合类型。

  --数组中的元素可以是任何数据类型,包括基本类型和引用类型。

  --数组变量属引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量,默认值跟成员变量的规则一样。数字0,布尔false,charu0000,引用:null。数组本身就是对象,Java中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型,数组对象本身是在堆中的。

创建数组和初始化

声明:

  --数据类型[]  数组名  =  new  数据类型[数组的长度];

  --数据类型[]  数组名  =  new  数据类型[]{元素值1,元素值2,...};

  --数据类型[]  数组名  =  {元素值1,元素值2,...};

  注:--声明的时候并没有实例化任何对象,只有在实例化数组对象时,JVM才分配空间,这时才与长度有关。因此,声明数组时不能指定其长度(数组中元素的个数),例如: int a[5]; //非法

  --声明一个数组的时候并没有数组被真正的创建。

  --构造一个数组,必须指定长度。

创建数组:

  --静态初始化

    除了用new关键字来产生数组以外,还可以直接在定义数组的同时就为数组元素分配空间并赋值。例如:int[] a = {1,2,3};

  --动态初始化

    数组定义与为数组元素分配空间并赋值的操作分开进行。例如:int[] a = new int[2];a[0] = 1;a[1] = 2;

  --数组的默认初始化

    数组是引用类型,它的元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也被按照实例变量同样的方式被隐式初始化。


String(不可变 Unicode 字符序列)

  --private final char value[];

  --Java字符串就是Unicode字符序列,例如串“Java”就是4个Unicode字符J,a,v,a组成的。

字符串相等的判断  

  s.equals(t)

  --注意:s和t既可以是字符串变量,也可以是字符串常数,例如: “Hello”.equals(t)。

  --判断字符串是否相等不要使用“==”。

String 类常用方法

  --下列方法创建并返回一个新的String对象: concat, replace,  substring, toLowerCase, toUpperCase, trim。

  --提供查找功能的有关方法: endsWith, startsWith, indexOf,,lastIndexOf。

  --提供比较功能的方法: equals, equalsIgnoreCase,  compareTo。

  --其它方法: charAt ,length。

  --public static String valueOf(…)可以将基本类型数据转换为字符串。


StringBuilder(可变字符序列,线程不安全,效率高,推荐使用)

  --char[] value;


StringBuffer(可变字符序列,线程安全,效率低,不推荐使用)

  --char[] value;

数组序排好了,查询方便,添加修改删除不方便。


StringBuilder 与StringBuffer的区别,StringBuilder与String的区别。

  --StringBuilder效率高,线程不安全,StringBuffer效率低,线程安全。

  --String是不可变字符串,StringBuilder是可变字符串。为什么有这样的差异,可以深入源码去解析,比如String类内的 priver final  char  value[] 等方法的原因。

  --如果是简单的声明一个字符串没有后续过多的操作,使用String,StringBuilder均可,若后续对字符串做频繁的添加,删除操作,或者是在循环当中动态的改变字符穿的长度应该用StringBuilder。使用String会产生多余的字符串,占用内存空间。


二分法查找

1 int[] a = {1,2,323,23,543,12,59};
2 Arrays.sort(a);   //使用二分法查找,必须先对数组进行排序
3 System.out.println("该元素的索引:"+Arrays.binarySearch(a, 12));

复制  

1 System.arraycopy(src, srcPos, dest, destPos, length);  //一般使用

填充

1 Arrays.fill(a, 2, 4, 100);  //将2到4索引的元素替换为100

asList

1 int[] a = {1,2,323,23,543,12,59};
2 List<int[]> list = new ArrayList<int[]>();
3 list = Arrays.asList(a);   //将数组转成成list对象中的一个元素
4 System.out.println(list.get(0)[1]);

private final char value[]

原文地址:https://www.cnblogs.com/fanyizhan/p/9910930.html