String类
String类常用方法
方法 | 说明 |
---|
int length() | 返回当前字符串的长度 | int indexOf(int ch) | 查找ch字符在该字符串中第一次出现的位置 | int indexOf(String str) | 查找str字符串在该字符串中第一次出现的位置 | int lastIndexOf(int ch) | 查找ch字符在在该字符串中最后一次出现在的位置 | int lastIndexOf(String str) | 查找str字符串在该字符串中最后一次出现的位置 | String substring(int beginIndex) | 获取从beginIndex位置开始到结束的字符串 | String substring(int beginIndex,int endIndex) | 获取从beginIndex位置开始到endIndex位置的字符串 | String trim() | 返回去除了前后空格的字符串 | boolean equals(Object obj) | 将该字符与指定对象比较,返回true或false | String toLowerCase() | 将字符串转换为小写 | String toUpperCase() | 将字符串转换为大写 | char charAt(int index) | 获取字符串中指定位置的字符 | String[] split(String regex,int limit) | 将字符串分割为子字符串,染回字符串数组 | byte getBytes() | 将该字符串转换为byte数组 |
注意
-
字符串的下标是从0开始的,范围是从0到变量名.length()-1 -
使用indexOf进行字符或者字符串查找时,如果匹配返回位置下标;如果没有匹配结果则返回-1 -
使用 substring(beginIndex , endIndex) 进行字符串截取时,包括 beginIndex 位置的字符,不包括 endIndex 位置的字符
示例一:
package com;
import org.junit.Test;
import java.util.Arrays;
public class DemoString {
public static void main(String[] args) {
String str = "Thisis JAVA 编程";
System.out.println("当前字符串长度:" + str.length());
char c = '编';
System.out.println("当前字符串“编”的位置:" + str.indexOf(c));
System.out.println("当前字符串“JAVA”的位置:" + str.indexOf("JAVA"));
System.out.println("当前字符串中test的位置:" + str.indexOf("test"));
String[] arr = str.split(" ");
System.out.println("按空格把字符拆分成数组:" + Arrays.toString(arr));
System.out.println(str.substring(3,7));
}
@Test
public void test(){
String fileName = "HelloWorld.java";
String email = "laurenyang@imooc.com";
int index = fileName.lastIndexOf(".");
String prefix = fileName.substring(index + 1,fileName.length());
if(index != -1 && index != 0 && prefix.equals("java")){
System.out.println("该文件名正确");
}else{
System.out.println("该文件名不正确");
}
int index2 = email.indexOf("@");
int index3 = email.indexOf(".");
if (index2 != -1 && index3 > index2){
System.out.println("邮箱格式合法");
}else {
System.out.println("邮箱格式不合法");
}
}
}
“==” 和 equals() 的区别
- ==:判断两个字符串在内存中首地址是否相同,即判断是否是同一个字符串对象
- equals():比较存储在两个字符串对象中的内容是否一致
示例二:
@Test
public void test2(){
String s = "aljlkdsflkjsadjfklhasdkjlflkajdflwoiudsafhaasdasd";
int sum = 0;
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == 'a'){
sum = sum+1;
}
}
System.out.println("字符a出现的次数:"+ sum);
}
StringBuilder类
除了可以使用 String 类来存储字符串,还可以使用 StringBuilder 类或 StringBuffer 类存储字符串
String、StringBuffer与StringBuilder的区别
String | StringBuffer | StringBuilder |
---|
String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不仅效率低下,而且浪费大量优先的内存空间 | StringBuffer是可变类,和线程安全的字符串操作类,任何对它指向的字符串的操作都不会产生新的对象。每个StringBuffer对象都有一定的缓冲区容量,当字符串大小没有超过容量时,不会分配新的容量,当字符串大小超过容量时,会自动增加容量 | 可变类,速度更快 | 不可变 | 可变 | 可变 | | 线程安全 | 线程不安全 | | 多线程操作字符串 | 单线程操作字符串 |
定义 StringBuilder 类的对象
package com.UsedClass;
public class DemoStringBuilder {
public static void main(String[] args) {
StringBuilder stringBuilder = new StringBuilder("This is StringBuilder Test");
System.out.println(stringBuilder);
}
}
StringBuilder 类常用方法
方法 | 说明 |
---|
StringBuilder append(参数) | 追加内容到当前StringBuilder对象的末尾 | StringBuilder insert(位置,参数) | 将内容插入到StringBuilder对象的指定位置 | String toString() | 将StringBuilder对象转换为String对象 | int length() | 获取字符串的长度 |
示例:
package com.UsedClass;
public class DemoStringBuilder {
public static void main(String[] args) {
StringBuilder stringBuilder = new StringBuilder("This is StringBuilder Test");
stringBuilder.append("testappend");
System.out.println(stringBuilder);
stringBuilder.insert(12,"!!");
System.out.println(stringBuilder);
String str = stringBuilder.toString();
}
public void test(){
StringBuilder str = new StringBuilder();
str.append("jaewkjldfxmopzdm");
for(int i = str.length()-3;i>0;i=i-3){
str.insert(i,',');
}
System.out.print(str.toString());
}
}
包装类
可以像操作对象一样操作基本数据类型
包装类主要提供的两大类方法
- 将本类型和其他基本类型进行转换的方法
- 将字符串和本类型及互相转换的方法
包装类的装箱和拆箱
装箱
拆箱
toString类
Data和SimpleDateFormat类
-
SimpleDateFormat 来对日期时间进行格式化,如可以将日期转换为指定格式的文本,也可将文本转换为日期。
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy/MM/dd HH:mm");
SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-
format()方法:将日期转换为指定格式的文本
Date now = new Date();
System.out.println(sdf1.format(now));
System.out.println(sdf2.format(now));
System.out.println(sdf3.format(now));
-
parse() 方法: 将文本转换为日期
String d = "2014-6-1 21:05:36";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = sdf.parse(d);
System.out.println(date);
Math类
该类所有的方法都是静态方法,所以使用该类中的方法时,可以直接使用类名.方法名
常用方法
返回值 | 方法名 | 解释 |
---|
long | round() | 返回四舍五入的整数 | double | floor() | 返回小于参数的最大整数 | double | ceil() | 返回大于参数的最小整数 | double | random() | 返回[0,1]之间的随机浮点数 |
示例:
public class HelloWorld {
public static void main(String[] args) {
int[] nums = new int[10];
for (int i = 0; i < nums.length; i++) {
int x = (int)(Math.random() * 10);
nums[i] = x;
}
for (int num : nums) {
System.out.print(num + " ");
}
}
}
|