java字符串相关操作


/* 1.首字母转大写 */
String str = "hello";
str = str.substring(0, 1).toUpperCase() + str.substring(1);
System.out.println(str);

// 仅限首字母是小写的字符串
char[] cs = str.toCharArray();
cs[0] -= 32;
System.out.println(cs);


/* 2.字符串连接 */
String strPlus = "java" + " is" + " cool";
// 等价于下面的代码,+号每拼接一次会新建一个StringBuilder对象
// String a = "java";
// StringBuilder sb = new StringBuilder();
// sb.append(a).append(" is").append(" cool");
// String strPlus = sb.toString();

String concat = "java".concat(" is");// 需要多少扩容多少,每次生成一个新的String对象
// 源码,申请一个char类型的buf数组,将需要拼接的字符串都放到这个数组里,再转成String对象
/*
 * public String concat(String str) { int otherLen = str.length(); if
 * (otherLen == 0) { return this; } int len = value.length; char buf[] =
 * Arrays.copyOf(value, len + otherLen); str.getChars(buf, len); return
 * new String(buf, true); }
 */

StringBuffer sbf = new StringBuffer();// 线程安全效率低
sbf.append("java" + " is").append(" cool");// 不要使用append(a+b)的形式
System.out.println(sbf);

StringBuilder sbd = new StringBuilder();// 线程不安全效率高,指数级扩容,每次翻两倍
sbd.append("java").append(" is").append(" cool");
System.out.println(sbd.toString());

String join = String.join("-", "Java", "is", "cool");// 内部使用StringBuilder
System.out.println(join);// Java-is-cool
// 大量字符串拼接效率:StringBulider > StringBuffer > String.concat > “+”
// 少量字符串拼接效率:String.concat > StringBulider > StringBuffer > “+”
// String.concat比StringBuilder快,原因大致有两点,一是StringBuilder的调用栈更深,二是StringBuilder产生的垃圾对象更多,并且它重写的toString方法为了做到不可变性采用了“保护性拷贝”,因此效率不如concat。


/* 3.判断字符串是否在list */
String astr = "a,b,c";
List<String> asList = Arrays.asList(astr.split(","));//数组转list集合
asList.contains("a");//return Boolean true

/* 4.Arrays.asList */
String ss = "a,b,c";
String[] split = ss.split(",");
int[] is={1,2,3};
Integer[] ins={1,2,3};
List<String> listss = Arrays.asList(split);
List<int[]> listis = Arrays.asList(is);
List<Integer> listins = Arrays.asList(ins);
System.out.println(listss+"***"+listis+"***"+listins);//[a, b, c]***[[I@15db9742]***[1, 2, 3]
System.out.println("列表中的元素数量是:" + listss.size()+"***"+listis.size()+"***"+listins.size());//3***1***3
//说明:Arrays.asList方法接收一个变长参数,这个变量是int数组;Integer是可变长参数,传入的是Integer数组里的元素


/* 5.String和List转换 */
String[] strarr = {"a","b","c"};
// 方式1:String数组转list
List<String> strList = Arrays.asList(strarr);
// 方式2:String数组转list
ArrayList<Object> addList = new ArrayList<>();
Collections.addAll(addList, strarr);
// 方式3:String数组转list
for (String stra : strarr) {
	addList.add(stra);
}
// 方式1:List转String数组
String[] strs=strList.toArray(new String[strList.size()]);
// 方式2:List转String数组
String[] strs2 = new String[strList.size()];
for(int i=0;i<strList.size();i++){
   strs2[i]=strList.get(i);
}


/* 6.合并两个map */
Map<Object, Object> map1 = new HashMap<>();
Map<Object, Object> map2 = new HashMap<>();
map1.putAll(map2);// 键值相同的会覆盖

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值