f.format("%-10.12s   %-2.3s  %-8s","==============1111111112qsassasa","====","==========");
第一个%-10.12控制长度的是后缀的12吧?那10有什么用啊?
还有,%-3d:
format("%-10.12s   %-3d  %5d","sdsdsdsdsfvv",2323,2222222222222222222);
为什么,3,5都没有用啊?就是不能在长度为3||5的时候舍弃后面?

解决方案 »

  1.   

    %-10.12s 
    12个字符的输出在10列范围的左侧 12>10 正常输出%-3d:
    正常输出十进制数%md
    数据位数大于m,则按实际位数输出
      

  2.   

    %d,按十进制整型数据的实际长度输出,而%-3d与%d的输出结果一样。
    %md,m是指定的输出字段的宽度。如果数据的位数小于m,则左端补以空格,若大于m,则按实际长度输出。
    %-10.12s 是%-m.ns输出占m列,但只取字符串中左端的n个字符。这n个字符输出在m列的左侧,右补空格,,如果n>m,则m自动取n值,即保证n个字符的输出。
      

  3.   

    感觉回到刚学C的时候了……格式控制串其实是一套十分复杂的系统,特别是格式控制标志,各种组合可以形成多种效果。
    在下无聊来总结下C语言的格式控制以及与Java控制串的不同:格式控制串标准形式:
    %[格式控制标志][输出的最小宽度][.精度][长度说明符][类型说明符]先从简单的开始:类型说明符:
    整型:(注除10进制外都是无符号)
    %d 10进制有符号整数
    %i 10进制有符号整数(等同于%d)(Java不支持此说明符)
    %u 10进制无符号整数(Java不支持无符号数,故也不支持%u)
    %o 8进制无符号整数
    %x 16进制无符号整数浮点型:
    %f 10进制浮点型(严格按照精度要求输出小数位数,小数位数不足则补0,超过则四舍五入截断)(默认精度为6)
    %g 10进制浮点型(与%f输出类似,小数位数超过精度四舍五入截断,但不足时不会补0)(Java其实没有实现%g类型,在下用的JDK7中%g与%f输出效果一样)
    %e e-指数形式(通常说的科学计数法),aEb表示a*10^b
    %a p-计数法(C-99开始引入,Java中也可使用),实质就是将浮点数的尾数与阶码分别用16进制表示放于p的两边指针:
    %p 与%x类似,只是%p有固定的输出宽度(与地址总线位数相同),长度不足则补0(Java不支持指针,故也不支持%p)字符串相关:
    %c 字符
    %s 字符串转义:
    %% 字符'%'Java新增类型:
    %b %B 布尔型,对应参数为boolean时为对应的布尔值,否则为true(%B为TRUE)
    %h 16进制整型(同%x)输出最小宽度:
    没什么需要说明的,唯一需要注意的是它表示的是最小宽度
      

  4.   

    (上接5楼)
    .精度:
    精度控制对于不同类型意义不同。
    整型:
    输出宽度(如实际宽度不足则左补0)(注:Java不支持整型的精度控制)
    浮点型:
    小数最大位数(不包括小数点)
    指针:
    无意义
    字符:
    无意义
    字符串:
    最大输出宽度(也可理解为按此宽度将字符串截断)
    转义:
    无意义
    布尔型:
    最大输出宽度(与字符串一样)长度说明符:
    这是C/C++为了提高运行效率,用于标示参数实际类型的说明符,只作用于数值类型,于其它类型无意义。用比实际类型长度小的说明符可起到截断作用。(Java不是太重视运行效率,且这种用法会提高程序的不确定性,所以Java不支持此说明符)
    h 对整型而言就是short int,由于不存在short float,故此说明符对浮点数无意义
    l 对整型而言是long int,对浮点型而言是double
    ll 对整型而言是long long int,对浮点型而言是long double(C-99引入)
      

  5.   

    (上接6楼)
    格式控制标志:
    注:格式控制标志可重复,可组合,重复的控制标志与不重复的效果一样。(Java不允许重复控制标志,只允许组合)(无) (实际宽度<最小宽度时)左补空格
    - (实际宽度<最小宽度时)右补空格
    + 显式输出符号,不论正负(非数值类型无效)
    # 按字面量的方式输出(%o输出增加前缀"0",%x输出增加前缀"0x",其它类型原样输出),Java不允许非数值类型与原创类型(包括%h)使用此标志
    0 (实际宽度<最小宽度时)左补0
    (空格) 这是最复杂的控制标志了,主要用于组合格式控制。单独使用效果为左补一空格。以上只是控制标志单独使用的效果,有兴趣的可以自己尝试组合控制效果。