Java数组与字符串

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 安全 效率中 用于 多线程、操作多、数据多

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值