今日内容
1. StringBuffer
StringBuffer类--字符缓冲区
线程安全的类,支持可变的字符串序列!
构造方法
public StringBuffer()
---空参构造,初始容量16个字符
public StringBuffer(int capacity)
---有参构造,指定初始容量(不常用)
public StringBuffer(String str)
---将指定的字符串内容构造到字符串缓冲区,容量为16+字符串长度
int length()
---获取字符串缓冲区长度
int capacity()
---获取缓冲区容量大小
StringBuffer的追加和插入
public StringBuffer append()
---将指定类型的内容追加进字符串缓冲区,返回它本身
public StringBuffer insert(int index,String str/任意类型)
---将指定的任意类型的内容插入到指定的位置,返回它本身
StringBuffer的获取功能
public char charAt(int index)
---获取到指定位置的字符串字符
StringBuffer的删除功能
StringBuffer delete(int start , int end)
---删除指定位置开始到指定位置结束的字符
StringBuffer deleteCharAt(int index)
---删除指定位置的字符串字符
StringBuffer的替换功能
public StringBuffer replace(int start , int end , String str)
---用新字符串替换指定位置开始到指定位置结束的字符串
//测试StringBuffer功能
public class StringBufferTest {
public static void main(String[] args) {
//追加
//public StringBuffer append()---在字符串缓冲区末尾追加任意类型数据
StringBuffer sb = new StringBuffer() ;//无参构造
String str = "ABCDE" ;
int i = 10 ;
char c = '天' ;
sb.append(str) ;
sb.append(i).append(c) ;
System.out.println(sb);//ABCDE10天
//插入
//public StringBuffer insert(int index,任意类型数据)---在指定位置插入任意数据
StringBuffer sb1 = new StringBuffer("ABCDE") ;//指定字符串加进去的构造
int i1 = 20 ;
sb1.insert(2,i1) ;//将20插入到角标2的前面
System.out.println(sb1);//AB20CDE
//获取
//public char charAt(int index)---获取指定位的字符串字符
StringBuffer s2 = new StringBuffer("ABCDE") ;
//获取角标为2的字符
System.out.println(s2.charAt(2));//C
//删除
//StringBuffer delete(int start , int end)---删除指定位置开始到指定位置结束的字符
//StringBuffer deleteCharAt(int index)---删除指定位置的字符串字符
StringBuffer s3 = new StringBuffer("ABCDE") ;
//删除角标[0-2)的字符
System.out.println(s3.delete(0,2));//CDE
//删除角标为2的字符
System.out.println(s3.deleteCharAt(2));//CD
//替换
//public StringBuffer replace(int start , int end , String str)
StringBuffer s4 = new StringBuffer("ABCDE") ;
s4.replace(1,4,"bcd") ;
System.out.println(s4);//AbcdE
//截取功能和String一样
}
}
StringBuffer的特有功能--反序
public StringBuffer reverse()
---对字符串进行反序!
import java.util.Scanner;
//测试反序
public class StringBufferTest {
public static void main(String[] args) {
//判断一个数是不是对称数
//创建键盘输入
Scanner sc = new Scanner(System.in) ;
System.out.println("请输入一组数据:");
String str = sc.nextLine() ;
StringBuffer s = new StringBuffer(str) ;
if(s.reverse().toString().equals(str)){
System.out.println("是对称数!");
}else {
System.out.println("不是对称数!");
}
}
}
String--->StringBuffer
可以通过StringBuffer的有参构造
String str = "xxx" ;
StringBuffer sb = new StringBuffer(str)
可以通过append追加来转换
StringBuffer--->String
可以通过String构造方法
String str = new String(Buffer) ;
可以通过toString来转换
StringBuffer sb = new StringBuffer("xxx") ;
String str = sb.toString() ;
String和StringBuffer/StringBuilder的区别?
String
是一个常量,一旦被赋值,其值不能被更改 ,不可变的字符序列!
作为形式参数,形式参数的改变不影响实际参数
StringBuffer
支持可变的字符串序列,线程安全的类--->同步的--->执行效率低
StringBuilder
和StringBuffer具备相互兼容的API,线程不安全的类---不同步的---->执行效率高
单线程程序(只考虑效率)中,使用StringBuilder去替代StringBuffer
多线程环境下(要考虑安全),使用StringBuffer
2. Integer
基本数据类型和引用数据类型关系
基本数据类型 ----> 引用数据类型
int Integer String
不同的数据类型有不同的包装类型
Integer
用来包装int类型数据
public static final int MAX_VALUE
---Integer中的最大值
public static final int MIN_VALUE
---Integer中的最小值
public static String toBinaryString(int i)
---将十进制--转换二进制的字符串形式
public static String toHexString(int i)
---将十进制--转换十六进制的字符串形式
public static String toOctalString(int i)
---将十进制--转换八进制的字符串形式
Integer的构造方法
public Integer(int value)
---将int类型数据包装为Integer类型
public Integer(String s)throws NumberFormatException
---将字符串类型的数字包装Integer类型,若不是数字就会报错
数据转换
Int--->String
public static String toString(int index)
---静态方法,利用toString
String--->int
public static int parseInt(String str)
---万能方法,可以转换任何数据类型
//数据类型转换
public class IntegerTest {
public static void main(String[] args) {
//String--->int
String str = "100773429" ;
Integer.parseInt(str) ;
System.out.println(str);//100773429
//int--->String
int i = 100773429 ;
Integer integer = new Integer(i) ;
String str1 = integer.toString();
System.out.println(str1);//100773429
}
}
3. Character
Character
构造方法
Character(char value)
---用来包装char类型
成员方法
public static boolean isDigit(char ch)
---用来判断是否有数字字符
public static boolean isLowerCase(char ch)
---用来判断是否有小写字母
public static boolean isUpperCase(char ch)
---用来判断是否有大写字母
import java.util.Scanner;
//Character判断测试
public class CharacterTest {
public static void main(String[] args) {
//键盘录入一个字符串,统计一个字符串中大写字母字符,小写字母字符,数字字符出现的次数
//键盘录入
Scanner sc = new Scanner(System.in) ;
//提示输入一段带有小写字母,大写字母,数字的数据
System.out.println("请输入小写字母,大写字母,数字:");
String str = sc.nextLine() ;
//输出输入的字符串
System.out.println(str.toString());
//将输入的字符串转变成字符数组
char[] chars = str.toCharArray();//将字符串转换为字符数组的方法
//统计数据
int sumDigit = 0 ;//数字
int sumLower = 0 ;//小写
int sumUpper = 0 ;//大写
//遍历数组+条件判断
for(int x = 0 ; x < chars.length ; x++){
//接收每一个字符判断
char ch = chars[x] ;
if(Character.isDigit(ch)){ //如果是数字
sumDigit++ ;//统计次数
}else if(Character.isLowerCase(ch)){ //如果是小写字母
sumLower++ ;
}else if(Character.isUpperCase(ch)){ //如果是大写字母
sumUpper++ ;
}else { //有可能输入标点....
System.out.println("无效内容!");
}
}
//输出结果
System.out.println("出现数字次数"+sumDigit+"\n"+"出现小写字母的次数"+sumLower+"\n"+"出现大写字母的次数"+sumUpper+"\n");
/*
1584adafSHDFGD
出现数字次数4
出现小写字母的次数4
出现大写字母的次数6
*/
}
}
4. Date
Date
构造方法
public Date()
---系统时间的日期格式
成员方法
public long getDate()
---获取指定Date对象的系统时间的毫秒值
类型转换
让系统时间的日期格式变成方便我们查看的普通格式
Date--->String日期文本---format方法
利用DateFormat的子类
---SimpleDateFormat
public final String format(Date date)
构造方法
SimpleDateFormat(String pattern)
---pattern--格式
--y(小写)
对应的年--2022-->yyyy
--M(大写)
对应的月--05-->MM
--d(小写)
对应的日--08-->dd
String日期文本--->Date---parse方法
利用DateFormat的子类
---SimpleDateFormat
SimpleDateFormat(String pattern)
注意
String日期文本和转换器SimpleDateFormat内的格式必须"一摸一样"!--不然报错
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
//测试转换
public class DateTest {
public static void main(String[] args) throws ParseException {
//String日期文本--->Date
String str = "2000-02-15";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd") ;//格式要一模一样
//转换parse
Date date = sdf.parse(str) ;
System.out.println(date);//Tue Feb 15 00:00:00 CST 2000
//Date--->String日期文本
//创建Date对象获取系统时间
Date date1 = new Date() ;
//转换器转换
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy年MM月dd") ;
String str1 = sdf1.format(date1);
System.out.println(str1);//2022年11月15
}
}
5. System
System
不能实例化
成员方法
public static long currentTimeMillis():获取系统时间毫秒值(应用场景:计算程序的执行效率)
public static void exit(int status):参数为0,正常终止jvm
public static void gc():手动开启垃圾回收器
---开启垃圾回收器,会调用Object类的finalize()垃圾回收方法
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) :复制数组
参数1:原数组
参数2:原数组中的某个位置
参数3:目标数组
参数4:目标数组中的某个位置
参数5:从原数组的那个位置srcPos指定长度复制到目标数组中
6. Random
Random
伪随机数生成器
构造方法
public Random()
---创建新的随机数生成器
public Random(long seed)
---创建新的随机数生成器(以指定的long 的类型计算随机数):每一次均匀分布都一样的 (不推荐)
成员方法
public int nextInt()
---获取的int类型的取值范围
public int nextInt(int n)
---[0,n)随机数