1、学习周报,LOREM IPSUM DOLOR,String、StringBuffer、StringBuilder,String类:不可变类,一个String对象被创建以后,包含在这个对象中的字符序列是不可改变的,直至这个对象被销毁。 String对象的特殊创建方式:String str= “abc”;String str = new String(); String类的常用方法: 字符串的串联:String str = “a“ + “b“ + “c“ + d“; /StringBuffer str = “a“.appadent(“b“).appadent.(“c“); 就是有四个字符串常量,首
2、先“a“和“b“生成了“ab“存在内存中,然后“ab“又和“c“生成“abc“ 存在内存中,最后又和“d“生成“abcd“,并把这个字符串地址赋给了str,就是因为string的不 可变产生了很多多的临时变量,影响效率,这也就是为什么建议用stringBuffer的原因了,,StringBuffer类:可变的字符序列 StringBuilder类:可变的字符序列,jdk5.0新加入的,效率更高,线程不安全String类是字符串常量,是不可更改的常量。而StringBuffer是字符串变量,它的对象是 可以扩充和修改的。StringBuilder,一个可变的字符序列。此类提供一个与 String
3、Buffer兼容的 API,但不保证同步。该类被设计用作StringBuffer 的一个简易替换,用在字符串 缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在 大多数实现中,它比 StringBuffer 要快。,2.String类与基本数据类型、包装类;与字符数组、字节数组;* 1.字符串 与基本数据类型、包装类之间转换* 字符串 -基本数据类型、包装类:调用相应的包装类的parseXxx(String str);* 基本数据类型、包装类-字符串:调用字符串的重载的valueOf()方法* 2.字符串与字节数组间的转换* 字符串-字节数组:调用字符串的getB
4、ytes()* 字节数组-字符串:调用字符串的构造器* 3.字符串与字符数组间的转换* 字符串-字符数组:调用字符串的toCharArray();* 字符数组-字符串:调用字符串的构造器4.String与StringBuffer的转换String -StringBuffer:使用StringBuffer的构造器:new StringBuffer(String str);StringBuffer-String:使用StringBuffer的toString()方法,char charAt (int index) 返回index所指定的字符String concat(String str) 将两字
5、符串连接boolean endsWith(String str) 测试字符串是否以str结尾boolean equals(Object obj) 比较两对象char getBytes 将字符串转换成字符数组返回char getBytes(String str) 将指定的字符串转成制服数组返回boolean startsWith(String str) 测试字符串是否以str开始int length() 返回字符串的长度String replace(char old ,char new) 将old用new替代char toCharArray 将字符串转换成字符数组String toLowerCa
6、se() 将字符串内的字符改写成小写String toUpperCase() 将字符串内的字符改写成大写String valueOf(Boolean b) 将布尔方法b的内容用字符串表示String valueOf(char ch) 将字符ch的内容用字符串表示String valueOf(int index) 将数字index的内容用字符串表示String valueOf(long l) 将长整数字l的内容用字符串表示String substring(int1,int2) 取出字符串内第int1位置到int2的字符串,正则表达式,日期、时间类,2.1System类 currentTimeMi
7、llis():返回当前时间的long型值。此long值是从1970年1月1日0点0分00秒开始到当前的毫秒数。此方法常用来计算时间差。2.2 Date类:java.util.Date1. Date d = new Date();/返回当前时间的Date:Mon May 12 15:17:01 CST 2014Date d1 = new Date(15231512541241L);/返回形参处此long型值对应的日期/getTime():返回当前日期对应的long型值。 toString()2.3SimpleDateFormat:java.text.SimpleDateFormat格式化 :日期
8、-文本 使用SimpleDateFormat的format()方法 解析:文本-日期 使用SimpleDateFormat的parse()方法/1.格式化1SimpleDateFormat sdf = new SimpleDateFormat();String date = sdf.format(new Date();System.out.println(date);/14-5-12 下午3:24/2.格式化2SimpleDateFormat sdf1 = new SimpleDateFormat(“EEE, d MMM yyyy HH:mm:ss Z“);date = sdf1.format
9、(new Date();System.out.println(date);/星期一, 12 五月 2014 15:29:16 +0800/3.解析:Date date1 = sdf.parse(“14-5-12 下午3:24“);System.out.println(date1)date1 = sdf1.parse(“星期一, 12 五月 2014 15:29:16 +0800“); / date1 = sdf1.parse(“14-5-12 下午3:24“);System.out.println(date1);2.4 Calendar:日历类2.4.1获取实例:Calendar c = Ca
10、lendar.getInstance();2.4.2 get()/set()/add()/date getTime()/setTime(),集合,1.对象的存储:数组(基本数据类型 * |-List接口:存储有序的,可以重复的元素.-相当于“动态”数组新增的方法:删除remove(int index) 修改set(int index,Object obj) 获取get(int index)插入add(int index,Object obj)添加进List集合中的元素(或对象)所在的类一定要重写equals()方法* |-ArrayList(主要的实现类)|-LinkedList(更适用于频繁
11、的插入、删除操作)|-Vector(古老的实现类、线程安全的,但效率要低于ArrayList),|-Set接口:存储无序的,不可重复的元素。-相当于高中的“集合”概念Set使用的方法基本上都是Collection接口下定义的。 添加进Set集合中的元素所在的类一定要重写equals() 和 hashCode()。要求重写equals() 和 hashCode()方法保持一致。1.无序性:无序性!= 随机性。真正的无序性,指的是元素在底层存储的位置是无序的。2.不可重复性:当向Set中添加进相同的元素的时候,后面的这个不能添加进去* |-HashSet(主要的实现类)|-LinkedHashSe
12、t (是HashSet的子类,当我们遍历集合元素时,是按照添加进去的顺序实现的; 频繁的遍历,较少的添加、插入操作建议选择此)|-TreeSet(可以按照添加进集合中的元素的指定属性进行排序)要求TreeSet添加进的元素必须是同一个类的! 两种排序方式:自然排序:要求添加进TreeSet中的元素所在的类implements Comparable接口重写compareTo(Object obj),在此方法内指明按照元素的哪个属性进行排序向TreeSet中添加元素即可。若不实现此接口,会报运行时异常定制排序:创建一个实现Comparator接口的实现类的对象。在实现类中重写Comparator的
13、 compare(Object o1,Object o2)方法在此compare()方法中指明按照元素所在类的哪个属性进行排序将此实现Comparator接口的实现类的对象作为形参传递给TreeSet的构造器中向TreeSet中添加元素即可。若不实现此接口,会报运行时异常要求重写的compareTo()或者compare()方法与equals()和hashCode()方法保持一致。,Map接口:存储“键-值”对的数据 -相当于高中的“函数y = f(x)” (x1,y1) (x2,y2) key是不可重复的,使用Set存放。value可以重复的,使用Collection来存放的。一个key-v
14、alue对构成一个entry(Map.Entry),entry使用Set来存放。 添加、修改 put(Object key,Object value) 删除remove(Object key) 获取get(Object key) size()/ keySet() values() entrySet()* |-HashMap:主要的实现类,可以添加null键,null值|-LinkedHashMap:是HashMap的子类,可以按照添加进Map的顺序实现遍历|-TreeMap:需要按照key所在类的指定属性进行排序。要求key是同一个类的对象。对key考虑使用自然排序 或 定制排序|-Hasht
15、able:是一个古老的实现类,线程安全,不可添加null键,null值不建议使用。|-子类:Properties:常用来处理属性文件Iterator接口:用来遍历集合Collection元素Collections工具类:操作Collection及Map的工具类,大部分为static的方法。,泛型,1.在集合中不使用泛型 2.在集合中使用了泛型 3.自定义泛型类: 【注意点】1.对象实例化时不指定泛型,默认为:Object。2.泛型不同的引用不能相互赋值。3.加入集合中的对象类型必须与指定的泛型类型一致。4.静态方法中不能使用类的泛型。5.如果泛型类是一个接口或抽象类,则不可创建泛型类的对象。6
16、.不能在catch中使用泛型7.从泛型类派生子类,泛型类型需具体化,4.泛型与继承的关系 A类是B类的子类,G是带泛型声明的类或接口。那么G不是G的子类! 5.通配符:? A类是B类的子类,G是带泛型声明的类或接口。则G 是G、G的父类! 以List为例,能读取其中的数据。因为不管存储的是什么类型的元素,其一定是Object类的或其子类的。 以List为例,不可以向其中写入数据。因为没有指明可以存放到其中的元素的类型!唯一例外的是:null 6*. List :可以将List的对象或List的对象赋给List。其中B 是A的子类? super A:可以将List的对象或List的对象赋给List。其中B 是A的父类,LOREM IPSUM DOLOR,LOREM IPSUM DOLOR,LOREM IPSUM DOLOR,LOREM IPSUM DOLOR,LOREM IPSUM DOLOR,LOREM IPSUM DOLOR,LOREM IPSUM DOLOR,LOREM IPSUM DOLOR,