foreach语句
遍历数组
String[] d= {"sad","qwe","fdg"};
for (String x:d) {
System.out.println(x);
}
=>
sad
qwe
fdg
数组
使用fill()方法将18612345678输出成186****5678
package xiaoxiong1;
import java.util.Arrays;
public class test {
public static void main(String[] args) {
char arr[]= {'1','8','6','1','2','3','4','5','6','7','8'};//填充
Arrays.fill(arr, 3,7,'*');//'*'为字符,要char
/*for(int i=0;i<arr.length;i++) {
System.out.println(arr[i]);
}*/
System.out.println(Arrays.toString(arr));
}
}
=>
[1, 8, 6, *, *, *, *, 5, 6, 7, 8]
复制数组
int arr[]= {1,8,6,1,2,3,4,5,6,7};
int newarr[]=Arrays.copyOfRange(arr,0,3);
=>[1, 8, 6]
int arr[]= {1,8,6};
int newarr[]=Arrays.copyOf(arr,5);
=>[1, 8, 6, 0, 0]
字符串
字符串链接
String a="时间";
String b="就是金钱";
a+=b; =>时间就是金钱
a.concat(b); =>时间就是金钱
注意length有()
String a="123 456";
int size=a.length();
System.out.println(size);
=>7
获取指定字符
String b="时间就是金钱";
char chr=b.charAt(4);
System.out.println(chr);
=>金
获取字符串位置
String b="时间就是金钱";
int size=b.indexOf('是');
=>3
输出三次获取的索引位置
String str = "We are the world";
int firstIndex = str.indexOf("r"); =>4
int secondIndex = str.indexOf("r", firstIndex + 1); =>13
int thirdIndex = str.indexOf("r", secondIndex + 1); =>-1
要查找的是字符串,返回的是字符串最右边出现处的索引
String b="时间是金就是金钱";
System.out.println(b.lastIndexOf("是金"));
=>5
//不存在的话,值为-1
从4开始往回数
String b="时间是金就是金钱";
b.lastIndexOf("是金",4);
=>2
startsWith,判断字符串首内容
String b=" 时间是金就是金钱";
b.startsWith(" ");
=>true
b.startsWith("时间",2);
=>false
endsWith,后缀
String b=" 时间是金就是金钱.java";
b.endsWith(".java");
=>true
获取字符数组,toCharArray()
String b=" 时间是金就是金钱.java";
char[] chr=b.toCharArray();
System.out.println(Arrays.toString(chr));
=>[ , 时, 间, 是, 金, 就, 是, 金, 钱, ., j, a, v, a]
判断字符串是否存在
String b=" 时间是金就是金钱.java";
System.out.println(b.contains("ja"));
=>true
截取字符串
String b=" 时间是金就是金钱.java";
System.out.println(b.substring(5));
=>就是金钱.java
//包括起始索引,不包括结束索引
System.out.println(b.substring(5,8));
=>就是金
字符串替换,replace()
String b=" 时间是金就是金钱.java";
System.out.println(b.replace("是","我"));
=> 时间我金就我金钱.java
replaceAll()
“\\d"表示数字0~9中的任何一个,”\\d"是元字符
String a="123 456abc";
System.out.println(a.replaceAll("\\d","?"));
=>??? ???abc
replaceFirst()
String b=" 时间是金就是金钱.java";
System.out.println(b.replaceFirst("是","?"));
=> 时间?金就是金钱.java
字符串分割split()
String c="http\\:www.mingri.com:192.168.1.1:2025";
String[] d=c.split(":");
System.out.println("网页地址:"+d[1]);
System.out.println("服务器地址:"+d[2]);
=>
网页地址:www.mingri.com
服务器地址:192.168.1.1
对字符串"125a:562a:980"同时用"2"和":"分割,且只分割3次,分割几次结果就是几块,“|”用来多个分割符
String a="125a:562a:980";
String[] d= a.split("2|\\.",3);
for (String x:d) {
System.out.print("["+x+"]");
}
=>
[1][5a:56][a:980]
大小写转换
String a="abc DEF";
System.out.println(a.toLowerCase());
=>abc def
System.out.println(a.toUpperCase());
=>ABC DEF
去除空白内容
String a=" a b c ";
System.out.println(a.trim());
=>a b c
//a.trim()只能去除首尾处空白
System.out.println(a.replaceAll("\\s", ""));
=>abc
//利用正则表达式“\\s”
比较字符串是否相等,equals()
String a="abc";
String b=new String("abc");
String c=new String("ABC");
System.out.println(a.equals(b));
=>true
System.out.println(a==b);
=>false
System.out.println(a.equalsIgnoreCase(c));
=>true
System.out.println("abc".equals("ABc"));
//也可以直接用字符串常量作比较
判断一个字符串str是否为空,需要分别判断str是否等于null或""
String str="123";
if (null==str||"".equals(str)){
System.out.println("为空");
}
格式化字符串,format()
Date date=new Date();
String year=String.format("%tY", date);
System.out.println(year);
=>2019
System.out.println(date);
=>Thu Feb 28 13:59:31 CST 2019
String str=String.format("%,d", 12345);
System.out.println(str);
=>12,345
可变字符串
StringBuffer
StringBuffer sbf=new StringBuffer("abc");
StringBuffer sbf=new StringBuffer("32");//初始容量为32个字符
StringBuffer sbf=new StringBuffer("");//无初始值
append()
sbf.append("sda");
System.out.println(sbf);
=>abcsda
setCharAt()
StringBuffer sbf=new StringBuffer("123456");
sbf.setCharAt(2, 's');
System.out.println(sbf);
=>12s456
//单个字符
insert
sbf.insert(2, "asd");
//字符串也可以
reverse()
sbf.reverse();
delete
StringBuffer sbf=new StringBuffer("123456");
sbf.delete(2,4);
System.out.println(sbf);
=>
1256
//start 包括 end 不包括
StringBuilder类
总结
String 不安全 效率低 用于操作少、数据少
StringBuilder 不安全 效率高 用于 单线程、操作多、数据多
StringBuffer 安全 效率中 用于 多线程、操作多、数据多