一,字符串
1.初始化方式
2.常用方法
package com.sk.dome;
/**
* ClassName: StrTest <br/>
* Description: <br/>
* date: 2021/12/27 9:38<br/>
*
* @author 斑马<br />
*/
public class StrTest {
public static void main(String[] args) {
String s1="Hello Word!";
//charAt(int index)返回 char指定索引处的值。
System.out.println(s1.charAt(10));
System.out.println("长度:"+s1.length());
//连接字符串
System.out.println(s1.concat(" hello java!"));
//返回指定字符第一次出现的字符串内的索引。
System.out.println(s1.indexOf("wo"));
System.out.println(s1);
//最后一次出现
System.out.println(s1.lastIndexOf("e"));
//返回从替换所有出现的导致一个字符串 oldChar在此字符串 newChar 。
System.out.println(s1.replace("word","java"));
//将此字符串分割为给定的 regular expression的匹配。
String strs[]=s1.split("");
for (String s3:strs){
System.out.println(s3);
}
//toCharArray()
char c[]=s1.toCharArray();
//变小写
System.out.println(s1.toLowerCase()+"大写:"+s1.toUpperCase());
//截取
System.out.println(s1.substring(3));
System.out.println(s1.substring(3,6));
}
}
二,可变字符串
1.语法
StringBuffer 用于表示可以修改的字符串。
StringBuffer sb1=new StringBuffer();
StringBuffer sb2=new StringBuffer(10);
StringBuffer sb3=new StringBuffer("hello word!");
2.常用方法
package com.sk.dome;
/**
* ClassName: StrBuTest <br/>
* Description: <br/>
* date: 2021/12/27 14:12<br/>
*
* @author 斑马<br />
*/
public class StrBuTest {
public static void main(String[] args) {
//初始化的三种方式
StringBuffer sb1=new StringBuffer();
StringBuffer sb2=new StringBuffer(10);
StringBuffer sb3=new StringBuffer("hello word!");
//在指定位置添加
sb3.insert(1,"张三");
System.out.println("长度:"+sb3.length());
String s=sb3.toString();//转换为字符串
System.out.println(s);
sb3.reverse();//字符反转
//删除 包含开始,不包含结束
sb3.delete(0,3);
//替换 包含开始,不包含结束
sb3.replace(0,2,"你好");
sb3.append("你好!");//在末尾追加字符串
System.out.println("当前容量:"+sb3.capacity());
System.out.println(sb3);
}
}
3.String与StringBuffer,StringBuider的区别
String与StringBuffer的不同点: String类是不可改变的,而StringBuffer类是可变的。 String类覆盖了Object的equals方法,而StringBuffer没有。 String类可以使用”+”进行连接,而StringBuffer对象之间不能通过”+”进行连接。
StringBuilder类与StringBuffer类的功能是一样的,只是后者是线程安全的。所以前者效率会更高。
package com.sk.dome;
/**
* ClassName: StrTest02 <br/>
* Description: <br/>
* date: 2021/12/27 14:37<br/>
*
* @author 斑马<br />
*/
public class StrTest02 {
public static void main(String[] args) {
System.out.println("性能对比");
String str="张三";
StringBuffer sb=new StringBuffer("张三");
StringBuilder sd=new StringBuilder("张三");
//从1970.1.1到当前的毫秒数
long str1=System.currentTimeMillis();//开始
for (int i=0;i<=20000;i++){
str=str+i;
}
long str2=System.currentTimeMillis();//结束时间
long t1=str2-str1;
System.out.println("String 花费:"+t1);
long sb1=System.currentTimeMillis();
for (int i=0;i<=20000;i++){
sb.append(i);
}
long sb2=System.currentTimeMillis();
long sb3=sb2-sb1;
System.out.println("StringBuffer时间:"+sb3);
long sd1=System.currentTimeMillis();
for (int i=0;i<=20000;i++){
sd.append(i);
}
long sd2=System.currentTimeMillis();
long sd3= sd2-sd1;
System.out.println("StringBuider时长:"+sd3);
}
}
三,包装类
1.为什么需要包装类
2.什么是包装类
Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的,这在实际使用时存在很多的不便,为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八个基本数据类型对应的类统称为包装类(Wrapper Class)
3.用法
对于包装类说,这些类的用途主要包含两种: 作为和基本数据类型对应的类类型存在,方便涉及到对象的操作。 包含每种基本数据类型的相关属性如最大值、最小值等,以及相关的操作方法。
1)使用 包装 类进行转换
2).自动装箱拆箱
JDK自从1.5(5.0)版本以后,就引入了自动拆装箱的语法,也就是在进行基本数据类型和对应的包装类转换时,系统将自动进行,这将大大方便程序员的代码书写。
自动装箱:基本类型自动转为包装类(int >> Integer) 自动拆箱:包装类自动转为基本类型(Integer >> int)
自动装箱与拆箱的功能事实上是编译器来帮忙,编译器在编译时期根据语法,决定是否进行装箱或拆箱动作。例如: Integer i = 100; 相当于编译器自动做以下的语法编译: Integer i = new Integer(100);
package com.sk.dome;
/**
* ClassName: Dome01 <br/>
* Description: <br/>
* date: 2021/12/27 15:13<br/>
*
* @author 斑马<br />
*/
public class Dome01 {
public static void main(String[] args) {
int a=9;
Integer b=9;
//包装类可以直接当做基本数据类型进行计算
int c=a+b;
b=a;//基本数据类型转换为包装类
a=b;//包装类转换为基本数据类型
//包装类无法强制转换
//Float d=(Float) b;
//可以通过 包装类.目标类型Value()来进行转换
Float d=b.floatValue();
Double e=123.6;
Integer f=e.intValue();
//转换为String
String g=f.toString();
System.out.println(g);
//字符串转为基本类型
String h="123";
int i=Integer.parseInt(h);
System.out.println(i);
String j="123.6";
Double k=Double.parseDouble(j);
System.out.println(k);
}
}