基本类型与包装类
Java的基本数据包括byte、int、short、long、float、double、char,Java同时也提供了基本数据类型相关的类,Java语言用包装类来把基本类型数据转换为对象。每个Java基本类型在java.lang包中都有一个相应的包装类。
基本类型与包装类的对应:
![图片](https://i-blog.csdnimg.cn/blog_migrate/5dfa658036effdea6768f0c5694c9642.jpeg)
1. Double类和Float类:
1) Double类和Float类实现了对double和float基本型数据的类包装。
2) Double 类在对象中包装了一个基本类型 double 的值。每个 Double 类型的对象都包含一个 double 类型的字段。
Double类的构造方法:
Double(double num)
构造一个新分配的 Double 对象,它表示基本的 double 参数。此外,该类还提供了多个方法,可以将 double 转换为 String,将 String 转换为 double,还提供了其他一些处理 double 时有用的常量和方法。
3) Float 类在对象中包装了一个 float 基本类型的值。Float 类型的对象包含一个 float 类型的字段。
Float类的构造方法:
Float(double value)
构造一个新分配的 Float 对象,它表示转换为 float 类型的参数。此外,此类提供了几种方法,可在 float 类型和 String 类型之间互相转换,并且还提供了处理 float 类型时非常有用的其他一些常量和方法。
2. Byte、Integer、Short、Long类:
1) Byte 类将基本类型 byte 的值包装在一个对象中。
Byte 类的构造方法:
Byte(byte value)
构造一个新分配的 Byte 对象,以表示指定的 byte 值。一个 Byte 类型的对象只包含一个类型为 byte 的字段。 此外,该类还为 byte 和 String 的相互转换提供了几种方法,并提供了处理 byte 时非常有用的其他一些常量和方法。
2) Integer 类在对象中包装了一个基本类型 int 的值。Integer 类型的对象包含一个 int 类型的字段。
Integer类的构造方法:
Integer(int value)
构造一个新分配的 Integer 对象,它表示指定的 int 值。此外,该类提供了多个方法,能在 int 类型和 String 类型之间互相转换,还提供了处理 int 类型时非常有用的其他一些常量和方法。
3) Short 类在对象中包装基本类型 short 的值。一个 Short 类型的对象只包含一个 short 类型的字段。
Short类的构造方法:
Short(short value)
构造一个新分配的 Short 对象,用来表示指定的 short 值。另外,该类提供了多个方法,可以将 short 转换为 String,将 String 转换为 short,同时还提供了其他一些处理 short 时有用的常量和方法。
4) Long 类在对象中封装了基本类型 long 的值。每个 Long 类型的对象都包含一个 long 类型的字段。
Long类的构造方法:
Long(long value)
构造新分配的 Long 对象,表示指定的 long 参数。此外,该类提供了多个方法,可以将 long 转换为 String,将 String 转换为 long,除此之外,还提供了其他一些处理 long 时有用的常量和方法。
3. Character类:
Character 类在对象中包装一个基本类型 char 的值。Character 类型的对象包含类型为 char 的单个字段。
Character 类的构造方法:
Character(char value)
构造一个新分配的 Character 对象,用以表示指定的 char 值。Character类还提供了几种方法,这些方法可以直接通过类名调用,用来确定字符的类别(小写字母,数字,等等),并将字符从大写转换成小写,反之亦然。
一个字符数组大小写转换的例子。
public class ep5_7 {
public static void main(String args[]) {
char a[] = { 'a', 'b', 'c', 'D', 'E', 'F' };
for (int i = 0; i < a.length; i++) {
if (Character.isLowerCase(a[i])) {
a[i] = Character.toUpperCase(a[i]);
} else if (Character.isUpperCase(a[i])) {
a[i] = Character.toLowerCase(a[i]);
}
}
for (int i = 0; i < a.length; i++) {
System.out.print(" " + a[i]);
}
}
}
4. Date与Calendar类:
Java语言提供了以下2个类来处理日期。
java.util.Date:包装了一个long类型数据,表示与GMT(格林威治标准时间)的1970年1月1日00:00:00这一刻所相距的毫秒数。
java.util.Calendar:可以灵活地设置或读取日期中的年、月、日、时、分和秒等信息。
4.1 Date类:
java.util包中的Date类表示特定的时间,精确到毫秒。
使用Date类的无参数构造方法Date()创建的对象可以获取本地当前时间。
分配Date对象并初始化此对象,以表示分配它的时间(精确到毫秒)。
在类Date所有可以接受或返回年、月、日期、小时、分钟和秒值的方法中,将使用下面的表示形式:
年份 y 由整数 y - 1900 表示。
月份由从 0 至 11 的整数表示;0 是一月、1 是二月等等;因此 11 是十二月。
日期(一月中的某天)按通常方式由整数 1 至 31 表示。
小时由从 0 至 23 的整数表示。因此,从午夜到 1 a.m. 的时间是 0 点,从中午到 1 p.m. 的时间是 12 点。
分钟按通常方式由 0 至 59 的整数表示。
秒由 0 至 61 的整数表示;值 60 和 61 只对闰秒发生,尽管那样,也只用在实际正确跟踪闰秒的 Java 实现中。于按当前引入闰秒的方式,两个闰秒在同一分钟内发生是极不可能的,但此规范遵循 ISO C 的日期和时间约定。
时间的格式化DataFormat:
这时可以使用DataFormat 的子类SimpleDateFormat 来实现时期的格式化.
SimpleDateFormat有一个常用构造方法
public SimpleDateFormat(String pattern).
该构造方法可以用参数pattern指定的格式创建一个对象,该对象调用format(Data date)方法格式化时间对象date。
![图片](https://i-blog.csdnimg.cn/blog_migrate/a2b61507eeca90e92e5f18ab3b0fe29c.jpeg)
需要注意的是,pattern中应当含有一些有效的字符序列. 例如:
y或yy 表示用2位数字输出年份 yyyy表示用4为数字输出年份.
M 或MM 表示用2 为数字或文本输出月份,如果想用汉字输出月份,pattern 中应连续包含至少3个M,如 MMM.
d 或dd 表示用2为数字输出日.
H或HH 表示用两位数字输出小时.
m或mm 表示用两位数字输出分.
s或ss 表示用两位数字输出秒.
E 表示用字符串输出星期.
在下面的例子中,用三种格式输出时间。
import java.util.Date;
import java.text.SimpleDateFormat;
class ep5_13 {
public static void main(String args[]) {
Date nowTime = new Date();
System.out.println(nowTime);
SimpleDateFormat matter1 = new SimpleDateFormat(
" 'time':yyyy年MM月dd日E 北京时间");
System.out.println(matter1.format(nowTime));
SimpleDateFormat matter2 = new SimpleDateFormat(
"北京时间:yyyy年MM月dd日HH时mm分ss秒");
System.out.println(matter2.format(nowTime));
Date date1 = new Date(1000), date2 = new Date(-1000);
System.out.println(matter2.format(date1));
System.out.println(matter2.format(date2));
System.out.println(new Date(System.currentTimeMillis()));
}
}
4.2 Calendar类:
java.util.Calendar类是一个抽象类。它为特定瞬间与一组诸如 YEAR、MONT
HOUR、 DAY_OF_MONTH 等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。
抽象类不能采用new实例化,但我们可以使用Calendar类的static方法getInstance()初始化一个日历对象,如:
Calendar calendar = Calendar.getInstance();
set()和get()方法可用来设置和读取日期的特定部分,比如年、月、日、时、分和秒等。上面的calendar对象可以调用方法:
public final void set(int year, int month, int date);
public final void set(int year, int month, int date, int hourOfDay, int minute);
public final void set(int year, int month, int date, int hourOfDay, int minute, int second);
将日历翻到任何一个时间,参数year取负数时表示公元前。
calendar对象调用方法:public int get(int field);
可以获取有关年份、月份、小时、星期等信息,参数field的有效值由Calendar的静态常量指定,例如:calendar.get(Calendar.MONTH);
返回一个整数,如果该整数是0表示当前日历是在一月,该整数是1表示当前日历是在二月等。
calendar对象调用方法:
public long getTimeInMillis();
返回此calendar 的时间值,以毫秒为单位。
Calendar类实例
![图片](https://i-blog.csdnimg.cn/blog_migrate/75b950ef36f2351187bcb6bccf7fb5bb.jpeg)
5. Math与Random类:
java.lang包中的Math 类也称数学类,是一个工具类,它在解决与数学有关的一些问题是有着非常重要的作用。Math 类包含许多用来进行科学计算的类方法,涉及大多数学函数,如sin、cos、exp、abs(绝对值)等,这些方法可以直接通过类名调用。Math类还提供了Math.PI和Math.E两个静态数学常量:E和PI。它们的值分别为2.7182828284590452354和3.14159265358979323846,该类是final的,不能被继承,类中的方法和属性全部是静态,不允许在类的外部创建Math类的对象。因此,只能使用Math类的方法而不能对其作任何更改。
5.1 Math类
Math类的主要方法:
![图片](https://i-blog.csdnimg.cn/blog_migrate/00aeae27551cb372f92270c2c212490e.jpeg)
使用这些方法时,用法为Math.***** (*****为方法名)。用法如:
int a=Math.abs(124);
int b=Math.floor(-5.2);
double s=Math.sqrt(7);
Math类主要方法的举例
class ep5_15 {
public static void main(String args[]) {
System.out.println("Pi=" + Math.PI);
System.out.println("E=" + Math.E);
System.out.println("abs(-6.8)=" + Math.abs(-6.8));
System.out.println("ceil(6.8)=" + Math.ceil(6.8));
System.out.println("floor(8.6)=" + Math.floor(8.6));
System.out.println("max(-5,-6)=" + Math.max(-5, -6));
System.out.println("min(5,6)=" + Math.min(5, 6));
System.out.println("round(8.6)=" + Math.round(8.6));
System.out.println("sqrt(16)=" + Math.sqrt(16));
System.out.println("exp(1)=" + Math.exp(1));
System.out.println("log(e)=" + Math.log(Math.E));
System.out.println("pow(2,3)=" + Math.pow(2, 3));
System.out.println("sin(30degree)=" + Math.sin(Math.toRadians(30)));
System.out.println("atan(90degree)=" + Math.atan(Math.PI / 2));
}
}
5.2 Random类
java.util包中的Random类,此类的实例用于生成伪随机数流。Random 类所实现的算法使用一个protected实用工具方法,每次调用它都可提供最多 32 个伪随机生成的位。
构造方法:
Random();
创建一个新的随机数生成器。
Random类的一个应用例子。
import java.util.Random;
class RandInt {
private Random r = null;
public RandInt() {
r = new Random();
}
public int getint() {
return r.nextInt();
}
}
class RandDouble {
private Random r = null;
public RandDouble() {
r = new Random();
}
public double getDouble() {
return r.nextDouble();
}
}
public class ep5_17 {
public static void main(String[] s) {
RandInt rInt = new RandInt();
System.out.println("产生3个随机生成的整型数字");
for (int i = 0; i < 3; i++) {
System.out.println(rInt.getint() + "");
}
RandDouble rDouble = new RandDouble();
System.out.println("产生3个随机生成的Double类型数字");
for (int i = 0; i < 3; i++) {
System.out.println(rDouble.getDouble() + "");
}
}
}
---------- android培训、java培训、期待与您交流! ----------
详情请查看:http://edu.csdn.net/heima