StringBuilder
append 追加
delete 删除
insert 插入
1 StringBuilder封装了一个内容可以改变的字符数组
2 StringBuilder 提供的算法:都是对字符数组内容进行的增删改查操作
3 java String 的链接操作都是使用StringBuilder实现的
String s1 = "abc";
String s3 = s1 + "def" + "efg";
s2 = newStringBuilder(s1).append("def")
.append("efg").toString();
4 StringBuilder操作性能高于String
建议动态的字符串操作采用StringBuilder实现
5 StringBuilder与StringBuffer的区别
StringBuffer早 性能稍差 县城安全的(同步化)
StringBuilder (java 5以后出现) 晚 性能好 非线程安全的
Data 类型
1 Date 封装了 long 时间毫秒数
Date = long 时间数据+算法(历法)方法
2 封装了历法算法,算法可以将java时间换算为人类习惯时间
3 Date 有 y2k 问题! 建议使用Calendar 类提供的算法!
4 Date 类型是java中常用的时间类型
日期的格式化输入输出
SimpleDateFormat 提供了便捷的将java时间转化为(格式化)
人类习惯的日期字符串时间按方法:format
日期输入解析
SimpleDateFormat 提供了将日期字符串解析为java的时间方法
1 创建SimpleDateFormat类,提供需要解析的日期格式
2 调用parse方法将日期字符串解析为日期对象
3 日期对象核心是long类型的时间毫秒数
Calendar与日期计算importjava.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
public class BR {
publicstatic void main(String[] args) throws Exception {
FileInputStreamfis=new FileInputStream("/home/tarena/55.txt");
InputStreamReaderisr=new InputStreamReader(fis,"GBK");
BufferedReaderbr=new BufferedReader(isr);
Stringstr;
while((str=br.readLine())!="-1"){
System.out.println(str);
}
}
}
1 时间计算:就是与时间时刻有关的计算
2 时间计算的原理:毫秒数的计算
3 简单的时间计算:直接使用毫秒数进行+-
4 与历法有关的,需要使用API方法
java的时间
1 根本的时间表示long
2 常用时间类型Date,但是API方法有千年问题
Date.getTime()和setTime()可以得到和设置毫秒数
3 Calendar 类提供了日期计算API
可以对年月日,时分秒星期等分量分别计算
这些计算本质是毫秒数计算
getTime() 和setTime()是设置Calendar的值为Date的值
4 对于简单时间计算 采用毫秒计算即可
5 显示时间:SimpleDateFormat
6 输入时间:SimpleDateFormat
7 人习惯的时间表示是:时间字符串
long------------------->date -------------->calandar
date.setTime() cal.setTime()
calandar------------------->date ----------------->long
cal.getTime() date.getTime()
包装类
1 包装类对象一旦建立是不可改变的!
2 包装类是final的,不可继承
3 包装类包含核心的静态工具方法
Integer.toString()
Integer.toHexString()
Integer.parseInt(String)整数默认输入时候调用方法
Integer.parseInt(String,n)
4 基本类型可以赋值给包装类型(或者父类型)变量
java编译器提供自动包装(自动装箱)
大数精确计算
BigDecimal 精确小数计算
BigInteger 大数计算
线性表 ArrayList
优先后次序的一组对象,每个对象有下标位置
万年历Cal属性:
int year 年份
int month 月份
String monthDate 月份数据
构造器
显示当前月的数据year=今年 month= 本月 monthDate=本月数据
功能
setCalFrame()初始化显示界面,一定在main方法中调用
nextMonth 下个月 月份+1 重新计算 本月数据 显示数据
prevMonth 上个月 月份-1 重新计算 本月数据 显示数据
nextYear 下一年
prevYear上一年
私有功能 createMonthData()重新计算本月数据 show()显示数据
CalFrame私有功能 show()显示数据
CalFrame是一个窗口
属性
cal被窗口显示的日历
JLabel yearMonthLabel显示年份和月份的标签
JTextArea monthTextArea 显示月份数据的文本区域
构造器
创建日历对象
创建yearMonthLabel monthTextArea
组装窗口组建(设置组建的大小位置)
监听事件 监听方向键调用cal的方法(上月 下月 上年 下年)
方法:
init()组装窗口组件(设置组件的大小位置)
showCal(year,month,monthData)显示数据到窗口组件
1 时间java时间是毫秒数
A 时间类型Date代表时间,有时间算法。显示时间的分量Date有2千年问题
B 时间的显示(输出)SimpleDateFormat的format方法将java时间(毫秒)显示为人类习惯的时间字符串
C 时间的输入解析方法SimpleDateFormat的parse方法将人类时间字符串解析为java 时间Date(long)
D 时间的计算Calendar 提供了时间分量计算在年月日星期分量进行计算,本质是毫秒数计算
set()
get()
add()
E 类型转化long<-->Date<-->Calendar
Calendar的简单工厂方法模式
一个静态方法,封装复杂创建过程,用于创建对象实例
简单工厂方法模式封装了复杂的对象创建过程返回对象实例可以动态的适应软件的变化
Calendar getInstance()国家
2 包装类 将基本类型变量包装为对象
A 自动包装
Foo foo=new Foo();
foo.test(5);
calss Foo{
public void test(Object obj){
System.out.println(obj);//obj.toString()
}
}
B 包装类是final 重写了equals,hashCode,toString
C 提供了基本类型的输入输出方法
int :parseInt toString(int)
double:ParseDouble toString(double)
long: ParseLong toString(long)
基本类型:01000001《--》65
3 集合 对象集合
Collection 接口 集:多个对象的结合(add remove clear)无次序
|--List 线性表 接口:有“先后次序”的对象集合
|----|--ArrayList 变长数组实现的线性表(最常用)
|----| 内部封装了一个对象数组,必要时候自动扩容
|----| add(Object) 重写集合的方法,追加元素到线性表尾
|----| add(index,Object)扩展方法,在指定位置插入
|----| clear() 清空 size()大小
|----| remove(Object) remove(index)删除元素
|----|--LinkedList 双向循环链表实现的线性表
|----| 外部特性(方法,功能)与ArrayList一样
|----| 差别:get(index) ArrayList最快:用下标直接定位
|----| 插入慢,会发送元素的移动
|----| get(index) add() LinkedList头尾最快
|----| 最快,中部读取慢
使用范型约束集合元素类型
java推荐使用泛型定义和创建集合!
集合
collection 接口集合 :不需要顺序,重复
List 接口 线性表 :有先后次序的集合
线性表提供了:对线性元素进行:增删改查等方法
ArrayList:数组实现的线性表
LinkedList:双向循环链表实现的线性表,扩展了便捷的头尾更改方法
万年历 外观样子:有年份 月份 月份数据
功能:上月 下月 上年 下年
类 万年历(Cal)
属性 年份 月份 月份数据 关联关系:CalFrame calFrame
构造器 初始化属性 年份 月份 月份数据
初始化为当前年月的日历
方法(功能) 上月 下月 上年 下年
下个月:根据当前月当前计算下个月,计算下个月月份数据
计算数据以后要到界面对象上显示
calFrame
属性 年份月份显示控件(界面上的组件 输入框 按钮等)
显示日历数据区域 控件
包含一个万年历对象Cal
构造器 窗口所有控件 放置所有控件到界面(位置和大小)
创建Cal实例,并且调用cal.setCalFrame(this)
启动方法go()
显示界面,绑定键盘事件,在事件中调用cal下一月方法