№2:Java中的包装类

作者: Deque | 来源:发表于2018-10-30 19:55 被阅读0次

1.Java中的包装类

相信各位小伙伴们对基本数据类型都非常熟悉,例如 int、float、double、boolean、char 等。基本数据类型是不具备对象的特性的,比如基本类型不能调用方法、功能简单。。。,为了让基本数据类型也具备对象的特性, Java 为每个基本数据类型都提供了一个包装类,这样我们就可以像操作对象那样来操作基本数据类型。

基本类型和包装类之间的对应关系:

基本类型 对应的包装类型
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean

包装类主要提供了两大类方法:

  1. 将本类型和其他基本类型进行转换的方法

  2. 将字符串和本类型及包装类互相转换的方法
    我们将在后面的小节逐步讲解,表着急哦~~

我们以 Integer 包装类为例,来看下包装类的特性。

Integer 包装类的构造方法:

方法 说明
Integer(int value) 创建一个Integer对象,表示指定的int值
Integer(String s) 创建一个Integer对象,表示String参数所指示的int值

如下代码所示:

int i = 2;  //定义int类型变量,值为2
Integer m = new Integer(5);  //定义Integer包装类对象,值为5
Integer n = new Integer("8");  // 定义Integer包装类对象,值为8

Integer包装类的常用方法:

返回值 方法名 解释
byte byteValue() 将该Integer转为byte类型
double doubleValue() 转为double类型
float floatValue() 转为float类型
int intValue() 转为int类型
long longValue() 转为long类型
static int parseInt(String s) 将字符串转为int类型
String toString() 转为字符串类型
static Integer valueOf(String s) 将字符串转换为Integer类型
示例:
public static void main(String[] args) {
        
        // 定义int类型变量,值为86
        int score1 = 86; 
        
        // 创建Integer包装类对象,表示变量score1的值
        Integer score2=new Integer(score1);
        
        // 将Integer包装类转换为double类型
        double score3=score2.doubleValue();
        
        // 将Integer包装类转换为float类型
        float score4=score2.floatValue();
        
        // 将Integer包装类转换为int类型
        int score5 =score2.intValue();

        System.out.println("Integer包装类:" + score2);
        System.out.println("double类型:" + score3);
        System.out.println("float类型:" + score4);
        System.out.println("int类型:" + score5);
    }

输出结果:

Integer包装类:86
double类型:86.0
float类型:86.0
int类型:86

2.Java中基本类型和包装类型之间的转换

基本类型和包装类之间经常需要互相转换,以 Integer 为例(其他几个包装类的操作雷同哦):

Integer a = new Integer(3);  //定义Integer包装类对象,值为3
int b = a + 5;  //  将对象和基本类型进行运算

在 JDK1.5 引入自动装箱拆箱的机制后,包装类和基本类型之间的转换就更加轻松便利了。

那什么是装箱和拆箱呢?我们分别来看下

装箱:把基本类型转换成包装类,使其具有对象的性质,又可分为手动装箱和自动装箱

int i = 10; //定义一个int基本类型值
Integer x = new Integer(i);  //手动装箱
Integer y = i;  //自动装箱

拆箱:和装箱相反,把包装类对象转换成基本类型的值,又可分为手动拆箱和自动拆箱

Integer j = new Integer(8);  //定义一个Integer包装类对象,值为8
int m = j.intValue();  //手动拆箱为int类型
int n = j;  //自动拆箱为int类型

3.Java中基本类型和字符串之间的转换

在程序开发中,我们经常需要在基本数据类型和字符串之间进行转换。

其中,基本类型转换为字符串有三种方法:
  1. 使用包装类的 toString() 方法

  2. 使用String类的 valueOf() 方法

  3. 用一个空字符串加上基本类型,得到的就是基本类型数据对应的字符串

//将基本类型转换为字符串
int c = 10;
String str1 = Integer.toString(c);  //方法一
String str2 = String.valueOf(c);   //方法二
String str3 = c + "";             //方法三
字符串转换成 基本类型有两种方法

1.调用包装类的parseXxx静态方法
2.调用包装类的 valueOf()方法转换为基本类型的包装类,会自动拆箱

//将字符串类型转换为基本类型
String str = “8”;
int d = Integer.parseInt(str);  //方式一
int e = Integer.valueOf(str);  //  方式二

PS:其他基本类型与字符串的相互转化这里不再一一列出,方法都类似

练习:

public static void main(String[] args) {
        double score = 89.6;
        String str1 = String.valueOf(score);
        System.out.println(str1+20);

        String str = "1213";
        Double num = Double.valueOf(str);
        System.out.println(num-13);
    }

运行结果:

89.620
1200.0

4.使用Date和SimpleDateFormat

在程序开发中,经常需要处理日期和时间的相关数据,此时我们可以使用 java.util包中的 Date 类。这个类最主要的作用就是获取当前时间,我们来看下 Date 类的使用:

Date d = new Date();  //使用默认的构造方法创建Date对象
System.out.println(d);  //输出Date对象

使用 Date 类的默认无参构造方法创建出的对象就代表当前时间,我们可以直接输出 Date 对象显示当前的时间,显示的结果如下:

Wed Oct 31 14:13:58 CST 2018

其中, Wed 代表 Wednesday (星期三), Oct 代表 October (10月), 31代表 31 号, CST 代表 China Standard Time (中国标准时间,也就是北京时间,东八区)。

从上面的输出结果中,我们发现,默认的时间格式不是很友好,与我们日常看到的日期格式不太一样,如果想要按指定的格式进行显示,如 2018-10-31 14:13:58 ,那该怎么做呢?

此时就到了java.text 包中的 SimpleDateFormat 类大显身手的时候了!!可以使用 SimpleDateFormat 来对日期时间进行格式化,如可以将日期转换为指定格式的文本,也可将文本转换为日期。

1. 使用 format() 方法将日期转换为指定格式的文本

import java.text.SimpleDateFormat;
import java.util.Date;

public class Date_demo01 {

    public static void main(String[] args) {
        //创建Date,表示当前时间
        Date date = new Date();
        //创建SimpleDateFormat对象,指定目标格式
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //调用format()方法,格式化时间,转化为指定格式字符串
        String today = sdf.format(date);
        System.out.println(today);
    }

}

代码中的 “yyyy-MM-dd HH:mm:ss” 为预定义字符串, yyyy 表示四位年, MM 表示两位月份, dd 表示两位日期, HH 表示小时(使用24小时制), mm 表示分钟, ss 表示秒,这样就指定了转换的目标格式,最后调用 **format() **方法将时间转换为指定的格式的字符串。
运行结果:

2018-10-31 14:21:53

2. 使用 parse() 方法将文本转换为日期


import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Date_demo2 {

    public static void main(String[] args) throws ParseException {
        //创建日期格式字符串
        String day = "2018年10月31日 14:29:25";
        //创建SimpleDateFormat对象,指定字符串的日期格式
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
        //调用parse()方法,将字符串转化为日期
        Date date = sdf.parse(day);
        
        System.out.println("当前时间:"+date);
    }

}

代码中的 “yyyy年MM月dd日 HH:mm:ss” 指定了字符串的日期格式,调用 parse()方法将文本转换为日期。

运行结果:

当前时间:Wed Oct 31 14:29:25 CST 2018

一定要注意哦:

1、 调用 SimpleDateFormat 对象的 parse() 方法时可能会出现转换异常,即 ParseException ,因此需要进行异常处理

2、 使用 Date 类时需要导入 java.util 包,使用 SimpleDateFormat 时需要导入 java.text

练习:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class HelloWorld {
    
    public static void main(String[] args) throws ParseException {
        
        // 使用format()方法将日期转换为指定格式的文本
        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy/MM/dd HH:mm");
        SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        
        // 创建Date对象,表示当前时间
        Date now = new Date();
        
        // 调用format()方法,将日期转换为字符串并输出
        System.out.println(sdf1.format(now));
        System.out.println(sdf2.format(now));
        System.out.println(sdf3.format(now));

        // 使用parse()方法将文本转换为日期
        String d = "2014-6-1 21:05:36";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        
         // 调用parse()方法,将字符串转换为日期
        Date date = sdf.parse(d);
        
        System.out.println(date);
    }
}

5.Calendar类的应用

Date 类最主要的作用就是获得当前时间,同时这个类里面也具有设置时间以及一些其他的功能,但是由于本身设计的问题,这些方法却遭到众多批评,不建议使用,更推荐使用 Calendar 类进行时间和日期的处理

java.util.Calendar 类是一个抽象类,可以通过调用getInstance()静态方法获取一个 Calendar 对象,此对象已由当前日期时间初始化,即默认代表当前时间,如 Calendar c = Calendar.getInstance();

那么如何使用 Calendar 获取年、月、日、时间等信息呢?我们来看下面的代码:

import java.util.Calendar;

public class Calendar_demo {

    public static void main(String[] args) {
        // 创建Calendar对象
        Calendar c =Calendar.getInstance();
        int year = c.get(Calendar.YEAR);        //获取年
        int month =  c.get(Calendar.MONTH)+1;   //获取月
        int day = c.get(Calendar.DAY_OF_MONTH); //获取日
        int hour = c.get(Calendar.HOUR_OF_DAY); //获取时
        int minute = c.get(Calendar.MINUTE);    //获取分
        int second = c.get(Calendar.SECOND);    //获取秒
        //输出时间
        System.out.println("当前时间:"+year+"年"+month+
                "月"+day+"日 "+hour+"时"+minute+"分"+second+"秒");   
    }
}

其中,调用 Calendar 类的 getInstance()方法获取一个实例,然后通过调用get()方法获取日期时间信息,参数为需要获得的字段的值, Calendar.Year 等为 Calendar 类中定义的静态常量。

运行结果:

当前时间:2018年10月31日 15时20分56秒

Calendar类提供了getTime() 方法,用来获取 Date 对象,完成 CalendarDate 的转换,还可通过 getTimeInMillis() 方法,获取此 Calendar 的时间值,以毫秒为单位。如下所示:

import java.util.Calendar;
import java.util.Date;

public class Calendar_demo2 {

    public static void main(String[] args) {
        //创建Calendar对象
        Calendar c =Calendar.getInstance();
        //将Calendar对象转换为Date对象
        Date date = c.getTime();
        //获取当前毫秒数
        Long time = c.getTimeInMillis();
        System.out.println("当前时间:"+date);
        System.out.println("当前毫秒数:"+time);
    }

}

运行结果:

当前时间:Wed Oct 31 15:30:52 CST 2018
当前毫秒数:1540971052008
练习
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class HelloWorld {
  
  public static void main(String[] args) {
      // 创建Calendar对象
      Calendar c = Calendar.getInstance();
      
      // 将Calendar对象转换为Date对象
      Date date = c.getTime();
      
      // 创建SimpleDateFormat对象,指定目标格式
      SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
      
      // 将日期转换为指定格式的字符串
      String now = sdf.format(date);
      System.out.println("当前时间:" + now);
  }
}

输出结果:

当前时间:2018-10-31 15:34:25

6.使用Math类操作数据

Math 类位于java.lang包中,包含用于执行基本数学运算的方法, Math 类的所有方法都是静态方法,所以使用该类中的方法时,可以直接使用类名.方法名,如:Math.round();

常用的方法:

返回值 方法名 解释
long round() 返回四舍五入后的整数
double floor() 返回小于参数的最大整数
double ceil() 返回大于参数的最小整数
double random() 返回[0,1)之间的随机浮点数

通过案例我们来认识一下他们的使用吧!!

public class MathDemo {

    public static void main(String[] args) {
        //定义一个double类型的变量
        double a = 3.1415926;           
        //将double类型强制转换为int类型,去掉小数位
        int b = (int) a;
        System.out.println("强制类型转换:"+ b);
        
        //调用round()方法,进行四舍五入
        long c = Math.round(a);
        System.out.println("四舍五入:"+c);
        
        //调用floor方法,返回小于参数的最大整数
        double d = Math.floor(a);
        System.out.println("floor:"+d);
        
        //调用ceil方法,返回大于参数的最小整数
        double e = Math.ceil(a);
        System.out.println("ceil:"+e);
        
        //调用random()方法,产生[0,1)之间的随机浮点数
        double x = Math.random();
        System.out.println("随机数:"+x);
        
        //产生[0,99)之间的随机整数
        int y = (int)(Math.random()*99);
        System.out.println("[0,99)之间的整数:"+y);
    }

}

运行结果:

强制类型转换:3
四舍五入:3
floor:3.0
ceil:4.0
随机数:0.8626706190082456
[0,99)之间的整数:54

PS: Math 类还提供了许多其他方法

练习:

功能:定义一个包含 10 个元素的整型数组,通过随机产生 10 以内的随机数,给数组中的每个元素赋值,并输出结果。

如:
运行结果: 0 3 3 2 6 3 2 7 0 9

注:由于数组元素值为随机产生,所以运行结果不固定,此运行结果仅作为示例

 public static void main(String[] args) {
        
        // 定义一个整型数组,长度为10
        int[] nums = new int[10];
        
        //通过循环给数组赋值
        for (int i = 0; i < nums.length; i++) {
            // 产生10以内的随机数
            int x = (int)(Math.random()*10);
            
            nums[i] = x;// 为元素赋值
        }
        
        // 使用foreach循环输出数组中的元素
        for (int num : nums) {
            System.out.print(num + " ");
        }
    }

相关文章

  • №2:Java中的包装类

    1.Java中的包装类 相信各位小伙伴们对基本数据类型都非常熟悉,例如 int、float、double、bool...

  • [Java基础]包装类型

    [Java基础]包装类 了解一下 什么是包装类型在 Java 中, 数据类型总共可以分为2大类 : 基础数据类型和...

  • JavaSE进阶五 包装类

    java中的包装类 java中对8种基本数据类型提供了8种包装类型;包装类是引用类型,父类是Object。 为什么...

  • JAVA:包装类

    包装类:  Java中的包装类包括:Integer、Long、Short、Byte、Character、Doubl...

  • Java 中的包装类

    Java 中的包装类 相信各位小伙伴们对基本数据类型都非常熟悉,例如 int、float、double、boole...

  • JAVA中的对象

    java8增强的包装类 java中基本数据类型不能当作对象类型变量使用的问题, java提供了包装类 (Wrapp...

  • Java中的包装类的介绍

    Java中的包装类的介绍 1,包装类的介绍 java中有8种基本的数据类型,其中每一种数据类型都对应了一种包装类。...

  • Java中必须了解的常用类

    学习了解# Java中的包装类 Java中基本类型和包装类型之间的转换 Java中基本类型和字符串之间的转换 使用...

  • Factory Design Pattern 工厂设计模式(工厂

    JDK中的工厂方法模式 1. java.text.NumberFormat 2. 包装类中的valueOf() j...

  • 包装类

    包装类 1. 什么是包装类 包装类(Wrapper Class): Java是一个面向对象的编程语言,但是Java...

网友评论

    本文标题:№2:Java中的包装类

    本文链接:https://www.haomeiwen.com/subject/eolntqtx.html