String类/String Buffer类/String Builder类:
String类:
字符串是由多个字符组成的一串字符串,java所有字符串都是String类的实例
创建方式有两种:
package com.ffyc.api.day6.Stringdemo;
public class String1 {
public static void main(String5[] args) {
/*
java.lang.String
java中所有字符串都是此类的实例
"abc"-->字符串对象 底层是一个char数组 private final char value[]
字符串对象创建方式:
1.String s=“abc";
创建时,先去字符串常量池中去查找有没有相同值的对象,没有就创建一个字符串对象1,并返回地址
如果字符串已经存储,不用创建新的,直接返回已存在对象的地址
2.String s1=new String("abc");每次都是在堆中创建新的字符串对象
*/
String s="abc";
String ss="abc";
System.out.println(s==ss);
System.out.println(s.equals(ss));
String s1=new String("abc");
String s2=new String("abc");
System.out.println(s1==s2);
System.out.println(s1.equals(s2));
}
}
String类型赋值后不能被改变,所以诞生了StringBuffer类和StringBuilder类
StringBuffer:
StringBuffer
类概述
我们如果对字符串进行拼接操作,每次拼接,都会构建一个新的
String 对象,
既耗时,又浪费空间。而StringBuffer
就可以解决这个问题
因为它是线程安全的可变字符序列
代码示例:
package com.ffyc.api.day6.StringBufferdemo;
import java.util.Arrays;
public class StringBuffer1 {
public static void main(String[] args) {
/*
StringBuffer类概述
我们如果对字符串进行拼接操作,每次拼接,都会构建一个新的String
对象,既耗时,又浪费空间。而StringBuffer就可以解决这个问题
线程安全的可变字符序列
*/
StringBuffer s1=new StringBuffer(66);//创建默认容量为16的char数组s1; capacity:指定数组容量
StringBuffer s2=new StringBuffer("hidsfbiigdgoogo");//创建内容长度加16的容量的char数组s2
s1.append("smdkfjseohfhedaodojwoid");
System.out.println(s1);
s1.replace(0,9,"oop");
System.out.println(s1);
s1.reverse();
System.out.println(s1);
System.out.println(s2);
s2.insert(4,6);
System.out.println(s2);
s2.deleteCharAt(6);
System.out.println(s2);
}
}
StringBuilder:
StringBuilder类和StringBuffer类的功能是一样的,只不过StringBuffer是线程安全的
String/StringBuffer/StringBuilder三者间对比:
● String
:是字符常量
,
适用于少量的字符串操作的情况
● StringBuilder
:适用于单线程下在字符缓冲区进行大量操作的情况
● StringBuffer
:适用多线程下在字符缓冲区进行大量操作的情况
package com.ffyc.api.day6.Stringbuilderdemo;
public class StringBulider1 {
public static void main(String[] args) {
//总结:
//String:是一个值不可以改变的字符串
// StringBuffer:值可以改变且不需要创建新对象,方法上都加了锁,在多线程(任务)执行时是线程安全的
//StringBuilder:值可以改变且不需要创建新对象,方法上都没加锁,多线程时不安全,适合单线程
StringBuilder s=new StringBuilder(999999);
s.append(666);//向字符串末尾添加内容
s.append(65515536);
System.out.println(s);
s.insert(6,"fafysehifiuewfuei");//向索引位置插入字符串
System.out.println(s);
}
}
Math类/Random类:
Math类:
● java.lang.Math
提供了一系列静态方法用于科学计算;其方法的参数和
返回值类型一般为
double
型。
abs
绝对值
sqrt
平方根
pow(double a, double b) a
的
b
次幂
max(double a, double b)
min(double a, double b)
random()
返回
0.0
到
1.0
的随机数
long round(double a) double
型的数据
a
转换为
long
型(四舍五入)
Random类:
这个类是用来产生随机数的
●
构造方法
public Random()
● 成员方法
public int nextInt()
public int nextInt(int n)
Date类/Calendar类/ SimpleDateFormat类:
●
Date类
●
使用Date类代表当前系统时间
Date d = new Date();
Date d = new Date(long d);
package com.ffyc.api.day7;
import java.util.Date;
public class DateDemo {
public static void main(String[] args) {
Date da=new Date();//获取程序运行时刻时间
System.out.println(da);
System.out.println(da.getDate());
System.out.println(da.getDay());
System.out.println(da.getSeconds());
System.out.println(da.getMonth());
System.out.println(da.getTime());
}
}
Calendar类
●
Calendar类是一个抽象类,在实际使用时实现特定的子类的对象,创建
对象的过程对程序员来说是透明的,只需要使用getInstance方法创建
即可。
Calendar c1 = Calendar.getInstance();
c1.get(Calendar. YEAR);
package com.ffyc.api.day7;
import java.util.Calendar;
import java.util.GregorianCalendar;
public class Calender1 {
public static void main(String[] args) {
Calendar ca=Calendar.getInstance();
System.out.println(ca.get(Calendar.YEAR));
Calendar calendar=new GregorianCalendar();
System.out.println(calendar.get(Calendar.HOUR));
}
}
●
SimpleDateFormat 日期格式化类
●
构造方法
SimpleDateFormat(格式); // yyyy-MM-dd
●
日期转字符串
Date now=new Date();
myFmt.format(now);
●
字符串转日期
myFmt.parse(“2018-02-10”);
字符串日期格式与 指定格式必须一致
例如:String s = “2018-03-15”;
new SimpleDateFormat(“yyyy-MM-dd”)
package com.ffyc.api.day7;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class SimpleDateFormat6 {
public static void main(String[] args) throws ParseException {
/*
把字符串日期 转为 Date对象
*/
String s="2020-05-20";
SimpleDateFormat sdf=new SimpleDateFormat("yy-mm-dd");
Date date=sdf.parse(s);
System.out.println(date.getYear()+1900);
/*
把日期对象 转为 指定格式的字符串
*/
}
}