Java中数组和字符串的相关知识点总结
1 数组的定义方式
第一种:int[] arr = new int[8]; // 创建长度为8的一维数组
第二种:int[] arr = {1, 2, 3, 4, 5}; // 创建一维数组直接给定值
2 字符串的定义方法
第一种:String s = “hello world”;
第二种:String s= new String(“hello world”);
第三种:String s = new String(array) 其中array为字符数组 public String(char[] value)分配一个新的String ,以便它表示当前包含在字符数组参数中的字符序列。 字符数组的内容被复制; 字符数组的后续修改不会影响新创建的字符串。
第四种:String s = new String(char[] value, offset, count)
参数
value
- 作为字符源的数组
offset
- 初始偏移量
count
- 长度
3 整数和字符串的互转
- int转string
String str = Integer.toString(num);
- String转int
int i = Integer.parseInt(str);
4 获取数组和字符串长度
- 获取数组的长度
使用length获取
int[] arr = new int[8];
System.out.println(arr.length);// 获取数组的长度
- 获取字符串长度
使用length()获取
String str = "Hello World!";
System.out.println(str.length());// 获取字符串的长度
5 String、StringBuffer和StringBuilder
String类是不可变的,不能对其进行删除,添加操作,即不能进行更改,在有的地方就很鸡肋。
StringBuffer对象则代表一个字符序列可变的字符串,当一个StringBuffer被创建以后,通过StringBuffer提供的append()、insert()、reverse()、setCharAt()、setLength()等方法可以改变这个字符串对象的字符序列。一旦通过StringBuffer生成了最终想要的字符串,就可以调用它的toString()方法将其转换为一个String对象。
StringBuilder类也代表可变字符串对象。实际上,StringBuilder和StringBuffer基本相似,两个类的构造器和方法也基本相同。不同的是:StringBuffer是线程安全的,而StringBuilder则没有实现线程安全功能,所以性能略高。
具体原因参照博客String、StringBuffer和StringBuilder的区别
6 数组和List的互转
- List转数组
调用ArrayList的toArray方法
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(1);
list.add(1);
int[] arr1 = new int[3];
Integer[] integers = list.toArray(new Integer[3]); // 泛型类型只能是对象类型,不能是基本类型
- 数组转List
String[] arr = new String[] {"1", "2"};
List list = Arrays.asList(arr);
注意:采用asList方法将数组转换成list的方法所返回的集合不能进行add和remove。查看源码即可知道它是java.util.arrays包下的,是Arrays类自己定义的一个内部类,这个内部类没有实现add、remove方法,而是直接使用父类ArrayList里面的方法。而父类这两方法内容就是抛出异常。