黑马程序员_基本类型与包装类

 
---------- android培训、java培训、期待与您交流! ----------

 

基本类型包装类

    Java的基本数据包括byte、int、short、long、float、double、char,Java同时也提供了基本数据类型相关的类,Java语言用包装类来把基本类型数据转换为对象。每个Java基本类型在java.lang包中都有一个相应的包装类

基本类型与包装类的对应:

图片

 

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。

图片

需要注意的是,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类实例

图片


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类的主要方法:

图片


   使用这些方法时,用法为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


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值