Java语言基础、字符串、数组
一、字符串
1 String:
不可变每次操作会创建一个新的String对象。频繁操作带来开销较大。
String操作:
String str1 = "Hello";
String str11 = "Hello";
str1.equals(str11) //比较值是否相同 ----->true
str1 == new String("Hello") //比较对象的引用是否相同-->False
str1.charAt(1) //返回的是索引为1的字符----->e
str1.length() //字符串长度----->5
str1.substring(1, 4) //截取字符串1-4----->ell
str1.toCharArray()[1] //将字符出啊你转化为字符数组--->e
str1.concat("e") //将给定字符串拼接到末尾->Helloe
str1.endsWith("o") //str1是否是以o结尾//--->true
str1.getBytes() //使用平台的默认字符集将此 String编码为字节序列,将结果存储到新的字节数组中。
str1.indexOf("e") //返回e所在的索引--->1
char [] strs = new char[4]; //创建字符数组
str1.getChars(1,4,strs,1); //将str1的1-4复制到strs中从索引1开始 ----->[,e,l,l]
str1.replace("e", "E") //把e替换为E----->HEllo
"hhhh".replaceFirst("h", "H")//替换第一个h为H--->Hhhh
"hhhh".replaceAll("h", "H") //替换h为H--->HHHH
"he,llo".split(",") //从,分割字符串为一个数组--->[he,llo]
str1.toLowerCase() //将str1转换为小写--->hello
str1.toUpperCase() //将str1转换为大写--->HELLO
2 StringBuffer:
StringBuffer是线程安全的,锁的获取和释放会带来额外的系统开销。创建对象会创建一个容量为16的字符数组。
StringBuffer操作:
StringBuffer str2 = new StringBuffer(); //不加长度默认创建的字符缓冲区容量为16字符
StringBuffer str3 = new StringBuffer(10);//加上长度创建的字符缓冲区容量为10字符
StringBuffer str4 = new StringBuffer(“你好”);//创建的字符缓冲区容量为18(16+你好)
str2.capacity() //返回字符串容量大小--->16
str4.append("啊!") //在你好后面追加字符串啊!--->你好啊!
str4.charAt(1) //返回索引为1的字符--->好
str4.delete(0,1) //删除从索引0开始长度为1--->好
str4.insert(1, "真") //在str4的1出插入真--->你真好
str4.substring(1) //从1开始截取---->好
str4.indexOf("好") //好所在的索引--->1
StringBuffer str5 = new StringBuffer("abcdefg");
str5.reverse() //倒序输出gfedcba
str5.substring(0,2) //从0开始截取长度为2--->ab
str5.replace(1, 3, "aaaa")//替换1-3之间的为aaa--->aaaaadefg
str5.setCharAt(0,'c') //设置索引为0的为ccbcdefg
str5.length() //长度--->7
str5.toLowerCase() //将str5转换为小写
str5.toUpperCase() //将str5转换为大写
3 StringBuilder:
StringBuilder的线程不安全,效率比Buffer高。创建对象会创建一个容量为16的字符数组。
-------StringBuilder操作类似Buffer--------区别是在相同的方法上少了synchronized关键字
4 总:
StringBuilder,StringBuffer内部维护的是字符数组,每次的操作都是改变字符数组的状态,避免创建大量的String对象
一、数组
数组创建的三种方式
int[] a1 = new int[10];
int[] a2 = {1, 2, 3};
int[] a3 = new int[]{1, 2, 3};
多维数组创建方式
String[][] stra1 = new String[2][3];
String[][] stra2 = new String[2][];
String[][] str3 = {{"1", "2", "3"},{"1", "2"}};
String [][] str4 = new String[][]{{"1", "2", "3"},{"1", "2"}};
数组操作:
System.out.println(a2.length); //a2长度
System.out.println(Arrays.equals(a2,a3)); //比较两个数组--->true
a2.equals(a3) //比较的为对象---->false
Arrays.asList(a2)//转换为List
Arrays.sort(a2) //排序
Arrays.binarySearch(a2, 1)//在a2中查找1所在的索引
Arrays.toString(Arrays.copyOf(a2, 10))//复制a2到一个长度为10的新数组中---->[1, 2, 3, 0, 0, 0, 0, 0, 0, 0]
数组遍历:
1、for循环
for (int i = 0;i<a2.length;i++){
System.out.println(a2[i]);
}
2、foreach
for (int i :a2){
System.out.println(i);
}
3、静态输出(无操作)
Arrays.toString(a2)