String
字符串是常量,创建之后不可改变
字符串字面值存储在字符串池中,可以共享
package com.zhang.oop.Stri;
public class Demo01 {
public static void main(String[] args) {
String name = "Hello"; //产生一个对象,字符串池中存储
name = "zhangsan";
String name2 = "zhangsan";
String str = new String("java"); //产生两个对象,堆,池各一个
String str2 = new String("java");
System.out.println(str==str2); //比较内存地址 false
System.out.println(str.equals(str2)); //比较字符串
}
}
1.常用方法
- charAt(int index); 返回某个位置的字符
- contains(String str); 判断是否包含某个字符串
- toCharArray(); 返回字符串对应的数组
- indexof(String str,Index int); 从int数值开始往后找,返回字符串首次出现的位置
- lastIndexof();返回字符串最后一次出现的位置
- trim(); 去掉字符串前后空格
- toUpperCase(); 把小写转成大写
- toLowerCase(); 把大写转成小写
- endsWith(str); 判断是否以str结尾
- startsWith(); 判断是否以str开头
- replace(); 用新的字符或字符串替换旧的字符或字符串
- split(); 对字符串进行拆分
package com.zhang.oop.Stri;
public class Demo01 {
public static void main(String[] args) {
String str = "Hello Word";
System.out.println(str.charAt(3)); //l
System.out.println(str.contains("plj")); //false
System.out.println(Arrays.toString(str.toCharArray())); //[H, e, l, l, o, , W, o, r, d]
System.out.println(str.indexOf("l")); //2
System.out.println(str.indexOf("l",3)); //3
System.out.println(str.lastIndexOf("l")); //3
System.out.println(str.trim());
System.out.println(str.toUpperCase()); //HELLO WORD
System.out.println(str.endsWith("rd")); //true
System.out.println(str.startsWith("He")); //true
System.out.println(str.replace("l","e")); //Heeeo Word
String[] arry = str.split("[ ,]+");//连续多个空格或者逗号
for (String s : arry) {
System.out.println(s); //Hello Word(两部分)
}
}
}
2.可变字符串
StringBuffer:运行效率高,线程安全
StringBulider:运行效率快,线程不安全
package com.zhang.oop.Stri;
public class Demo02 {
public static void main(String[] args) {
StringBuffer str = new StringBuffer();
str.append("java是最好的");
str.append("java是最棒的");
System.out.println(str); //java是最好的java是最棒的
str.insert(0,"最前面");
System.out.println(str); //最前面java是最好的java是最棒的
str.replace(0,3,"hello");
System.out.println(str); //hellojava是最好的java是最棒的
str.delete(0,6);
System.out.println(str); //ava是最好的java是最棒的
}
}
3.Bigdecimal
package com.zhang.oop.Stri;
import java.math.BigDecimal;
import java.math.BigInteger;
public class Demo03 {
public static void main(String[] args) {
BigDecimal bd1 = new BigDecimal("1.0");
BigDecimal bd2 = new BigDecimal("0.9");
System.out.println(bd1.multiply(bd2)); //乘
System.out.println(bd1.subtract(bd2)); //减
System.out.println(bd1.add(bd2)); //加
BigDecimal r1 = new BigDecimal(("1.4"))
.subtract(new BigDecimal("0.5"))
.divide(new BigDecimal("0.9")); //混合运算:(1.4-0.5)/0.9
System.out.println(r1);
BigDecimal r2 = new BigDecimal("10") //除法,保留两位小数,四舍五入。
.divide(new BigDecimal("3"),2,BigDecimal.ROUND_HALF_UP);
System.out.println(r2);
}
}
double 是近似值存储。
4.SimpleDateFormat
package com.zhang.oop.Stri;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.SimpleFormatter;
public class Demo04 {
public static void main(String[] args) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日HH:mm:ss");
Date date = new Date();
String str = sdf.format(date);
System.out.println(str);
Date date2 = sdf.parse("2022年03月20日20:09:23"); //格式要对,不对的话要抛出异常
System.out.println(date2);
}
}
y---年 M----月 d----日 H----时 m---分 s---秒 S---毫秒
5.System类
package com.zhang.oop.Stri;
public class Demo05 {
public static void main(String[] args) {
long start = System.currentTimeMillis(); //可以测试程序跑了多长时间
int[] arr ={1,4,3,6,8,2,6,5};
int[] deat = new int[8];
System.arraycopy(arr,3,deat,2,4); //源数组,从哪个位置开始复制,目标数组,目标数组开始位置,复制的长度
for (int i : deat) {
System.out.println(i); // 0,0,0,6,8,2,6,0
}
long end = System.currentTimeMillis();
System.out.println(start-end);
}
}