包装类 格式化

  • 包装类(外覆类、数据类型类)
  1. 定义JavaIntdoublefloatchar等数据类型定义了对应的包装类 
    这些包装类可以为数值型,字符型与布尔型创建对象,使其具有对象的性质,并且可以调用一些方法  包装类均位于java.lang
    以下是基本类型与所对应的包装类:

https://i-blog.csdnimg.cn/blog_migrate/6cb57e6956c587c4afa458d617da248b.webp?x-image-process=image/format,png

  1. 用途,这些类的用途主要包含两种:

            a、作为和基本数据类型对应的类类型存在,方便涉及到对象的操作。

           b、包含每种基本数据类型的相关属性如最大值、最小值等,以及相关的操作方法。

  1. 包装类的构造方法:

Integer构造方法有两种:

  1. Int型变量作为参数创建Integer对象,实例代码如下:

Integer number=new Integer(7);

  1. String型变量作为参数创建Integer对象,实例代码如下:

Integer number=new Integer(7);

  1. 当以String变量作为参数创建boolean对象时,实例如下:

Boolean b=new Boolean(ok");

而不是字符串“true”

  1. 基本类型与包装类之间的转换
    那么在这里还有一个概念,Java后续版本中加入了装箱与拆箱 ,装箱是指基本类型转换为包装类,使其具有对象的性质 ,拆箱是指包装类转换为基本类型的值 
       
    1)装箱:基本类型转换为包装类,装箱分为两个,一个是手动装箱,一个是自动装箱,手动装箱的意思,就是你必须手动的new一个对象 ,自动装箱,就是程序默认将其自动的创建一个对象, 例子:

int a = 0;

Integer b = new Integer(a);//手动装箱

Integer c = a;//自动装箱

2)拆箱:包装类转换为基本类型 ,拆箱也分为两个,手动拆箱与自动拆箱

Double d = 9.2;

double e = d.doubleValue();//手动拆箱

double f = d;//自动拆箱

  1. 基本类型与字符串之间的转换

1)基本类型转换为字符串 
基本类型转换为字符串的方法有三种方法: 
使用包装类中的toString()方法 
使用String类的valueOf()方法 
加入空字符

String i = Integer.toString(h);//使用包装类中的toString()方法
String i = String.valueOf(h);//使用String类的valueOf()方法
String i = h + "";//加入空字符

2)字符串转换为基本类型 
字符串转换为基本类型有两种方法: 
使用包装类中的parseXXX(String s)方法 如果字符串都包含的不是都是数字字符,则程序执行将出现异常。还有parseInt(String s, int radix)方法,这里的radix表示指定的进制。
使用包装类中的valueOf()方法

int j = Integer.parseInt(i);//使用包装类中的parseXXX()方法
int j = Integer.valueOf(i);//使用包装类中的valueOf()方法
  • 格式化输出
  1. System.out.format()

Java Se5引入的format方法可用于PrintStreamPrintWriter对象,其中也包括System.out对象。

package com.tomhu.format;

public class FormatTest1 {

    public static void main(String[] args) {

        int x = 5;

        double y = 3.141592;

        // 一般方式

        System.out.println("x = " + x + ", y = " + y);

        // printf()方式

        System.out.printf("x = %d, y = %f\n", x, y);

        // format()方式

        System.out.format("x = %d, y = %f\n", x, y);

    }

}

输出的结果如下:

x = 5, y = 3.141592

x = 5, y = 3.141592

x = 5, y = 3.141592

format的具体代码中,其实就是调用Formatterformat方法:formatter.format(Locale.getDefault(), format, args);
  1. Formatter
        Java中,所有新的格式化功能都由Formatter类处理,上述的printfformat也是。可以将Formatter看作是一个翻译器,它将你的格式化字符串与数据翻译成需要的结果。当你创建一个Formatter对象的时候 ,需要向其构造器传递一些信息,告诉它最终的结果将向哪里输出
Formatter formatter = new Formatter(System.out);
formatter.format("My name is %s, and my age is %d ", name, age);
formatter.close();
  1. 格式化说明符:
    在插入数据时,如果想要控制空格与对齐,就需要精细复杂的格式修饰符,最常见的应用是控制一个域的最小尺寸,这可以通过指定width来实现。Formatter对象通过在必要时添加空格,来确保一个域至少达到某个长度。在默认的情况下,数据是右对齐的,通过"-"标志可以改变对齐的方向。
    例子:
   formatter.format("%-15s %-5s %-10s\n", "huhx", "linux", "liuli");
    formatter.format("%-15s %-5s %-10s\n", "zhangkun", "yanzi", "zhangcong");
    formatter.format("%-15s %-5s %-10s\n", "zhangkun", "yanzhou", "zhangcong");
输出结果:
         huhx            linux liuli     
         zhangkun        yanzi zhangcong 
         zhangkun        yanzhou zhangcong 

width相对的是precision(精确度),它用来指明最大尺寸。width可以应用各种类型的数据转换,并且其行为方式都一样。precision则不一样,不是所有类型的数据都能使用precision,而且,应用于不同的类型的数据转换时,precision的意义也不同。

  • precision应用于String时,它表示打印String时输出字符的最大数量
  • precision应用于浮点数时,它表示小数点要显示出来的位数。默认是6位小数,如果小数位数过多则舍入,过少则在尾部补零。
  • 由于整数没有小数部分,所以precision不能应用于整数。如果你对整数应用precision,则会触发异常
  • 字符串格式化(String.format()的使用)

String类的format()方法与C语言的sprintf()方法有很多类似之处。Format()方法有两种重载形式:

format(String format, Object... args) 新字符串使用本地语言环境,制定字符串格式和参数生成格式化的新字符串。

format(Locale locale, String format, Object... args) 使用指定的语言环境,制定字符串格式和参数生成格式化的字符串。

  1. 常规类型的格式化
  2. 搭配转换符的标志
  3. 日期格式

   

     

   

%s

字符串类型

"mingrisoft"

%c

字符类型

'm'

%b

布尔类型

true

%d

整数类型(十进制)

99

%x

整数类型(十六进制)

FF

%o

整数类型(八进制)

77

%f

浮点类型

99.99

%a

十六进制浮点类型

FF.35AE

%e

指数类型

9.38e+5

%g

通用浮点类型(fe类型中较短的)

 

%h

散列码(就是ASCII码)

 

%%

百分比类型

%n

换行符

 

%tx

日期与时间类型(x代表不同的日期与时间转换符)

 

标志

   

   

   

+

为正数或者负数添加符号

("%+d",15)

+15

左对齐

("%-5d",15)

|15   |

0

数字前面补0

("%04d", 99)

0099

空格

在整数之前添加指定数量的空格

("% 4d", 99)

|  99|

,

“,”对数字分组

("%,f", 9999.99)

9,999.990000

(

使用括号包含负数

("%(f", -99.99)

(99.990000)

#

如果是浮点数则包含小数点,

如果是16进制或8进制则

添加0x0

("%#x", 99)

("%#o", 99)

0x63

0143

格式化前一个转换符所描述的参数

("%f%<3.2f", 99.45)

99.450000

99.45

$

被格式化的参数索引

("%1$d,%2$s", 99,"abc")

99,abc

字符串格式中还有%tx转换符没有详细介绍,它是专门用来格式化日期和时 间的。%tx转换符中的x代表另外的处理日期和时间格式的转换符,它们的组合能够将日期和时间格式化成多种格式。

常见日期和时间组合的格式,如图所示。

  

   

   

c

包括全部日期和时间信息

星期六 十月 27 14:21:20 CST 2007

F

--格式

2007-10-27

D

//格式

10/27/07

r

“HH:MM:SS PM”格式(12时制)

02:25:51 下午

T

“HH:MM:SS”格式(24时制)

14:28:16

R

“HH:MM”格式(24时制)

14:28

 

使用实例:

Date date=new Date();                                   

          //b的使用,月份简称

          String str=String.format(Locale.US,"英文月份简称:%tb",date);

          System.out.println(str);  

          System.out.printf("本地月份简称:%tb%n",date);

输出结果

英文月份简称:Sep

本地月份简称:九月

  • 日期转换符SimpleDateFormat的使用)

 日期和时间模式字符串 中,这些A——Za——z这些字母(不被单引号包围的)会被特殊处理替换为对应的日期时间,其他的字符串还是原样输出。

日期和时间模式(注意大小写,代表的含义是不同的)

  1. yyyy:年
  2. MM:月
  3. dd:日
  4. hh1~12小时制(1-12)
  5. HH24小时制(0-23)
  6. mm:分
  7. ss:秒
  8. S:毫秒
  9. E:星期几
  10. D:一年中的第几天
  11. F:一月中的第几个星期(会把这个月总共过的天数除以7)
  12. w:一年中的第几个星期
  13. W:一月中的第几星期(会根据实际情况来算)
  14. a:上下午标识
  15. k:和HH差不多,表示一天24小时制(1-24)
  16. K:和hh差不多,表示一天12小时制(0-11)
  17. z:表示时区

 

使用实例(日期转字符串)

Date nowTime=new Date(); 
System.out.println(nowTime); 
SimpleDateFormat time=new SimpleDateFormat("yyyy
年的 MM dd HH: mm: ss"); 
System.out.println(time.format(nowTime)); 

字符串转日期:

String s = "2017-05-25";

        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");

        Date date = null;

        try {

            date = format.parse(s);

        } catch (ParseException e) {

            System.out.println(e.getMessage());

        }

        System.out.println(date);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值