String对象的字符序列是不可修改的,但StringBuffer类的对象的实体的内存空间可以自动地改变大小,便于存放一个可变的字符序列。
StringBuffer s= new StringBuffer("我喜欢");
//对象s可调用append方法追加一个字符序列
s.append("蓝色");
StringBuffer类有三个构造方法
1.使用无参数构造方法
Date nowTime=new Date();
//获取本机的当前日期和时间
System.out.println(nowTime);
2.使用带参数的构造方法
计算机系统将其自身的时间的“公元”设置在1970年1月1日0时(格林威治时间),根据这个使用Date的带参数的构造方法Date(long time)来创建Date对象。
Date date1=new Date(1000);
date2=new Date(-1000);
正数表示公元后的时间,负数表示公元前的时间。1000表示1000毫秒。
Calendar类在java.util包中。使用calendar类的static方法getInstance()可以初始化一个日历对象。
Calendar c=Calendar.getInstance();
Calendar对象的方法:
public final void set(int year,int month,int date);
public final void set(int year,int month,int date,int hour,int minute);
public final void set(int year,int month,int date,int hour,int minute,int second);
calendar对象调用方法public int get(int field)可以获取有关年份、月份、小时、星期等信息,参数field的有效值有calendar的静态常量指定。
c.get(Calendar.MONTH);
//返回一个整数,0表示当前日历是在1月
c.get(Calendar.DAY_OF_WEEK);
//返回整数,1表示星期日
calendar对象调用方法public long getTimeInMillis()可以返回当前对象中时间的毫秒计时,如果本地时区是北京时区,是与1970.1.1 8点的差值。
import java.util.Calendar;
import java.util.Date;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Calendar c=Calendar.getInstance();
c.setTime(new Date());
int year=c.get(Calendar.YEAR);
int month=c.get(Calendar.MONTH)+1;
int day=c.get(Calendar.DAY_OF_MONTH);
int hour=c.get(Calendar.HOUR_OF_DAY);
int minute=c.get(Calendar.MINUTE);
int second=c.get(Calendar.SECOND);
System.out.println("现在的时间是:");
System.out.println(""+year+"年"+month+"月"+day+"日");
System.out.println(""+hour+"时"+minute+"分"+second+"秒");
int y=2012,m=9,d=1;
c.set(y, m-1,d);
long t1=c.getTimeInMillis();
y=2016;
m=7;
day=1;
c.set(y, m-1,d);
long t2=c.getTimeInMillis();
long subDay=(t2-t1)/(1000*60*60*24);
System.out.println(""+new Date(t2));
System.out.println("与"+new Date(t1));
System.out.println("相隔"+subDay+"天");
}
}
Main.java
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
CalendarBean cb=new CalendarBean();
cb.setYear(2022);
cb.setMonth(6);
String []a=cb.getCalendar();
char[] str="日一二三四五六".toCharArray();
for(char c:str) {
System.out.printf("%3c",c);
}
for(int i=0;i<a.length;i++) {
if(i%7==0)
System.out.println("");
System.out.printf("%4s",a[i]);
}
}
}
import java.util.Calendar;
public class CalendarBean {
int year=0,month=0;
public void setMonth(int month) {
this.month = month;
}
public void setYear(int year) {
this.year=year;
}
public String[] getCalendar() {
String[] a=new String[42];
Calendar rili=Calendar.getInstance();
rili.set(year, month-1,1);
int weekDay=rili.get(Calendar.DAY_OF_WEEK)-1;
int day=0;
if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
day=31;
if(month==4||month==6||month==9||month==11)
day=30;
if(month==2) {
if(((year%4==0)&&year%100!=0)||(year%400==0))
day=19;
else
day=28;
}
for(int i=0;i<weekDay;i++)
a[i]=" ";
for(int i=weekDay,n=1;i<weekDay+day;i++) {
a[i]=String.valueOf(n);
n++;
}
for(int i=weekDay+day;i<a.length;i++)
a[i]=" ";
return a;
}
}
可以使用String类调用format方法对日期进行格式化。
format(格式化模式,日期列表)
按照格式化模式返回日期列表中所列各个日期所含数据(年、月、日、时等数据)的字符串表示。
1.格式化模式
format方法中的“格式化模式”是一个用双引号括起的字符序列,该字符序列中的字符由时间格式符和普通字符构成。
假设当前时间是2016/10/01
Date now=new Date();
String s1=String.format("%tY年%tm月%td日",now,now,now);
String s2=String.format("%tF",now);
保证format方法“格式化模式”中的格式符的个数与日期列表中列出的个数相同。
3.格式化同一日期
用特定地区的星期格式来表示日期中的星期,可以用format的重载方法
format(Locale locale,格式化模式,日期列表);
Locale 表示地域。
Locale类的static常量都是locale对象,其中US表示美国的static。
String s=String.format(Locale.US,"%ta(%,new Date());
计算平方根、绝对值或者获取一个随机数。
java.lang包中的Math类包含进行科学计算的static方法。
两个static常量,E和PI
特别大的整数
public BigInteger(String val) 构造一个十进制的BigInteger类的对象。
该构造方法可能发生NumberFormatException异常。
更加灵活的用于获得随机数的Random类(java.util)
public Random();
public Random(long seed);
Random r=new Random();
r.nextInt();
r.nextInt(100);
//0-99之间的某个整数(闭区间)
r.nextBoolean();
1.格式化模式
程序可以使用String类调用format方法对数字进行格式化
String s=String.format("%.2f",3.141592);
//3.14
2.值列表
String s=String.format("%d元%0.3f斤",888,999.777666);
//888 999.778
3.格式化顺序
format方法默认从左到右,如果不希望,可以在格式符前面添加索引符号 index$ ,n$表示值列表的第n个。
2.修饰符
+:强制添加正号
,:按千分组
3.数据的宽度
即format方法返回的字符串的长度。
%md 左加空格
%-md右加空格
%0md 不加空格(用0代替空格)
1.float Float double Double
%f 格式为十进制浮点数,保留6位小数
%e(%E) 科学计数法的十进制的浮点数(E大写)
%g(%G)
%a(%A)
2.修饰符
+强制添加正号
3.限制小数位数与数据的宽度
%.nf
%mf
Class类是java.lang包中的类。