一、 自动装箱和拆箱
1. 有时候需要将基本类型转换为引用类型对象;
自动装箱例子: (基本数据类型—>引用数据类型)
Integer i = 10; 相当于Integer i = newInteger(10);
进行编译时,编译器根据上下文判断是否进行自动装箱动作,在上述变量i引用的是Integer类的实例。
基本数据类型 | boolean | byte | short | char | long | float | double | ....... |
包装 类型 | Boolean | Byte | Shrot | Character | Long | Float | Double | ........ |
2. 自动拆箱(引用数据类型—>基本数据类型)
例子:Integer m = 10; int n = m;相当于n =m.intValue();
m变量在自动装箱为Integer的实例后,如果被赋值给一个int类型的变量n,则会自动转换为int类型再赋值;
3. 运算式,可以进行自动装箱和拆箱;
二、 枚举类型
1. 示例:public enum Color{ RED,BLUE,BLACK; },声明用enum,而不用class;
2.
a) enum很像特殊的class,实际上enum声明定义的类型就是一个类;
b) 这些类都是类库中Enum类的子类(java.lang.Enum<E>),它们继承了Enum中许多有用的方法;
c) 枚举值都是public static final的,即常量,因此枚举类型中的枚举值应全部大写;
d) 枚举类型是class,在枚举类型中有构造器,方法和字段,但枚举的构造器有很大的不同:
i. 构造器只是在构造枚举值的时候被调用;
ii. 构造器私有private,不允许有public构造器;
e) 枚举可以在switch语句中使用;
f) 枚举类型的值必须作为枚举类的第一条语句出现
三、 String、StringBuffer和StringBuilder
1. String对象一旦创建就不能改变。如果需要进行大量的字符串修改操作,应该使用StringBuffer/StringBuilder类或者字符数组,最终结果可以被转换成String对象;
2. StringBuffer线程安全的可变字符序列;
a) StringBuffer是一个类似于String的字符串缓冲区,通过某些方法调用可以改变该序列的长度和内容;
b) 每个字符缓冲区都有一定的容量。只要字符缓冲区所包含的字符序列的长度没有超出此容量,就不需要分配新的内部缓冲区数组;
c) 如果内部缓冲区溢出,则此容量会自动增大;
3. StringBuilder
a) StringBuilder类是StringBuffer类的一个补充等价类用于单线程的使用;
b) 与StringBuffer相比,通常应该优先使用StringBuilder类,因为它支持与StringBuffer所有相同的操作,但由于它不执行同步,所以速度更快;
c) 常用方法(两者均有)
1. public int length()--------------返回容器字符个数
2. public intcapacity()------------返回容器大小
3. public StringBufferappend(String str)---------------添加字符或字符串
4. public StringBuffer insert(intoffset,String str)------------在指定位置插入字符(串)
5. public int indexOf(Stringstr)------------查找字符(串)首次出现的位置,返回索引
6. public int indexOf(Stringstr,int fromIndex)-----------从指定位置开始查找,查找字符(串)首次出现的位置
7. public int lastIndexOf(Stringstr)--------------查找字符串最后一次出现的位置
8. public StringBufferreverse()-----------------字符串逆置
9. public String toString()
主要见API
四、 常用类(Date日期类、SimpleDateFormat日期格式类、Calendar日历类、Math数学
工具类、Random随机数类)
1. Date日期类、SimpleDateFormat日期格式类
Date表示特定的时间,精确到毫秒
i. 构造方法:public Date() publicDate(long date)
ii. 常用方法:
a) public longgetTime()-------------------获得时间
b) public void setTime(longtime)-----------设置时间
c) public boolean before(Datewhen)---------------确定此日期是否在设定日期之前
d) public boolean after(Datewhen)---------------确定此日期是否在设定日期之后
e) public int compareTo(DateanotherDate)----比较,相等返回0,小返回-1,大返回1
f) public StringtoString()----------------------列出详细信息
详见API
iii. DateFormat是日期/时间格式化抽象类,以与语言无关的方式格式化并分析日期和时间;日期/时间格式化子类(如SimpleDateFormat)允许进行格式化(也就是日期—>文本)、分析(文本—>日期)
构造方法:public SimpleDateFormat()
publicSimpleDate(String pattern)
常用方法:public final String format(Date date)---------把Date对象转换成字符串
public Dateparse(String source)-----------把字符串转换成Date类型
2. Calendar日历类
i. Calendar类是一个抽象类,为特定瞬间与一组诸如YEAR、MONTH、DAY_OF_MONTH、HOUR等日历字段之间的转换提供了一些方法,并为操作日历字段提供了一些方法;
ii. Calendar提供了一个类方法getInstance,以获得此类型的一个通用的对象。Calendar的getInstance方法返回一个Calendar对象,其日历字段已由当前日期和时间初始化。
iii. 常用方法:
a) public static Calendar getInstance()-----------------返回一个Calendar的对象
b) public final DategetTime()-----------------------------获得时间
c) public final void setTime(Datedate)-----------------设置日期
d) public int get(intfield)-----------------------------------获取指定字段
e) public final void set(int year,intmonth,int date)--------------设置指定的年月日
f) public boolean before(Objectwhen)----------判断Calendar时间是否在指定的时间之前
g) public boolean before(Objectwhen) ---------判断Calendar时间是否在指定的时间之后
h) public int compareTo(CalendaranotherCalendar)-----比较两个Calendar对象的时间
3. Math数学工具类
i. 常用方法:
a) public static doublesqrt(double a)--------开方
b) public static double ceil(doublea)--------求比a大的第一个整数
c) public static doublefloor(double a)-------- 求比a小的第一个整数
d) public static double pow(doublea,double b)--------幂,a为底数,b为指数
e) public static long round (doublea)--------四舍五入
f) public static int round(floata)--------四舍五入
g) public static doublerandom()--------(0,1)间随机数,开区间
详见API
ii. Random随机数类
l Java中,有三种产生随机数的方法:
a) 通过System.currentTimeMillis()来获取一个当前时间毫秒数的long型数字;
b) 通过Math.random()返回一个0—1之间的double值;
c) 通过Random类来产生一个随机数,这是专业的Random工具类,功能强大;
l Random类中实现的随机算法是伪随机,即有规则的随机。随机时,随机算法起源数字称为种子数(seed),在种子数的基础之上进行一定的变换,从而产生需要的随机数字。相同种子数的Random对象,相同次数生成的随机数字相同。
l 构造方法:publicRandom()
public Random(one seed)
l 常用方法:
public void nextBytes(byte[] bytes)------------随机产生多个byte类型的数据
public int nextInt/Boolean/Float/Double()------------随机产生一个整数
public int nextInt(int n)-----------随机产生[0,n)之间的整数
详见API