本周的学习内容主要集中在了常用类,部分容器的学习,自我感觉上是这部分内容有些难度了,应用并不熟练,想要融会贯通仍需要很多的练习,尤其是io流,此部分的学习完成后要进行图书馆管理系统的项目练习,仍旧感觉没什么头绪,仍须加强练习。
目录
常用类
包装类
用途:(官网定义)
1. 作为和基本数据类型对应的类型存在,方便涉及到对象的操作,如Object[]、集合等的操作。
2. 包含每种基本数据类型的相关属性如最大值、最小值等,以及相关的操作方法(这些操作方法的作用是在基本数据类型、包装类对象、字符串之间提供相互之间的转化!)。
自动装箱和拆箱:
简单地讲就是基本数据类型和包装类之间进行自动的互相转换。
内容不难,直接上代码
自动装箱
Integer i = 100;//自动装箱
Integer i = Integer.valueOf(100);//调用的是valueOf(100),而不是new Integer(100)
自动拆箱
Integer i = 100;
int j = i;//自动拆箱
//相当于编译器自动为您作以下的语法编译:
int j = i.intValue();
注意:
包装类会有缓存问题,要进行缓存处理
缓存处理的原理为:如果数据在-128~127这个区间,那么在类加载时就已经为该区间的每个数值创建了对象,并将这256个对象存放到一个名为cache的数组中。每当自动装箱过程发生时(或者手动调用valueOf()时),就会先判断数据是否在该区间,如果在则直接获取数组中对应的包装类对象的引用,如果不在该区间,则会通过new调用包装类的构造方法来创建对象。
现可以自动添加
Integer i = 100; int j = new Integer(100);
自动装箱调用的是valueOf()方法,而不是new Integer()方法。
自动拆箱调用的xxxValue()方法。
还有equal方法的使用。
String类
其实String类本身指的就是对象内部的成员变量的值无法再改变
下面进行简单的测试
public class App {
public static void main(String[] args) {
String s1 = new String("abcdef");
String s2 = s1.substring(2, 4);
System.out.println(Integer.toHexString(s1.hashCode()));
System.out.println(Integer.toHexString(s2.hashCode()));
}
}
StringBuffer和StringBuilder
均代表可变的字符序列
下列是官网对其详细介绍
1. 重载的public StringBuilder append(…)方法
可以为该StringBuilder 对象添加字符序列,仍然返回自身对象。
2. 方法 public StringBuilder delete(int start,int end)
可以删除从start开始到end-1为止的一段字符序列,仍然返回自身对象。
3. 方法 public StringBuilder deleteCharAt(int index)
移除此序列指定位置上的 char,仍然返回自身对象。
4. 重载的public StringBuilder insert(…)方法
可以为该StringBuilder 对象在指定位置插入字符序列,仍然返回自身对象。
5. 方法 public StringBuilder reverse()
用于将字符序列逆序,仍然返回自身对象。
6. 方法 public String toString() 返回此序列中数据的字符串表示形式。
时间处理类
打印现在的时间
long now = System.currentTimeMillis();
DateFormat类
定义:
把时间对象转化成指定格式的字符串。反之,把指定格式的字符串转化成时间对象。
DateFormat是一个抽象类,一般使用它的的子类SimpleDateFormat类来实现。
格式化字符的具体含义
Math类
常用方法
1. abs 绝对值
2. acos,asin,atan,cos,sin,tan 三角函数
3. sqrt 平方根
4. pow(double a, double b) a的b次幂
5. max(double a, double b) 取大值
6. min(double a, double b) 取小值
7. ceil(double a) 大于a的最小整数
8. floor(double a) 小于a的最大整数
9. random() 返回 0.0 到 1.0 的随机数
10. long round(double a) double型的数据a转换为long型(四舍五入)
11. toDegrees(double angrad) 弧度->角度
12. toRadians(double angdeg) 角度->弧度
File类
该部分建议学习io流时配合api查看,此处不多赘述。
枚举
enum 枚举名 {
枚举体(常量列表)
}
enum Season {
SPRING, SUMMER, AUTUMN, WINDER
}
作用
枚举实质上还是类!而每个被枚举的成员实质就是一个枚举类型的实例,他们默认都是public static final修饰的。可以直接通过枚举类型名使用它们。
容器
本章的学习主要是用来容纳和管理数据的一种方法,前面学习的数组也是一种容器,不过其不够灵活和强大,所以出现了容器的概念。
为了能够更好的学习容器,我们首先要先来学习一个概念:泛型。
它可以帮助我们建立类型安全的集合。在使用了泛型的集合中,遍历时不必进行强制类型转换。从而提高了代码的可读性和安全性。
首先是对泛型的声明
class MyCollection<E> {
Object[] objs = new Object[5];
public E get(int index) {
return (E) objs[index];
}
public void set(E e, int index) {
objs[index] = e;
}
}
在日常的使用中都需要对泛型进行使用
如下
public class Test {
public static void main(String[] args) {
// 以下代码中List、Set、Map、Iterator都是与容器相关的接口;
List<String> list = new ArrayList<String>();
Set<Man> mans = new HashSet<Man>();
Map<Integer, Man> maps = new HashMap<Integer, Man>();
Iterator<Man> iterator = mans.iterator();
}
}
list容器
List是有序、可重复的容器
其中常用的实现类有三个:ArrayList、LinkedList和Vector。
本周学习内容较少,主要是感到吃力了,担心有点贪多,加上油考试就内容少了一些。