JDK5.0的11个主要新特征(三)

时间:2022-12-25 15:23:01

7  元数据(Meta data)

  请参考

  http://www-900.ibm.com/developerWorks/cn/java/j-annotate1/

  http://www-900.ibm.com/developerworks/cn/java/j-annotate2.shtml

8 Building Strings(StringBuilder类)

   在JDK5.0中引入了StringBuilder类,该类的方法不是同步(synchronized)的,这使得它比StringBuffer更加轻量级和有效。

9 控制台输入(Console Input)

  在JDK5.0之前我们只能通过JOptionPane.showInputDialog进行输入,但在5.0中我们可以通过类Scanner在控制台进行输入操作

   例如在1.4中的输入

String input = JOptionPane.showInputDialog(prompt);

int n = Integer.parseInt(input);
double x = Double.parseDouble(input);
s = input;

  在5.0中我们可以

Scanner in = new Scanner(System.in);

System.out.print(prompt);
int n = in.nextInt();
double x = in.nextDouble();
String s = in.nextLine();

10      Covariant Return Types(不晓得怎么翻译,大概是 改变返回类型)

  JDK5之前我们覆盖一个方法时我们无法改变被方法的返回类型,但在JDK5中我们可以改变它

  例如1.4中我们只能

public Object clone() { ... }

...
Employee cloned = (Employee) e.clone();

  但是在5.0中我们可以改变返回类型为Employee

public Employee clone() { ... }

...
Employee cloned = e.clone();

11 格式化I/O(Formatted I/O)

  增加了类似C的格式化输入输出,简单的例子:

public class TestFormat{

    public static void main(String[] args){
        int a = 150000, b = 10;
        float c = 5.0101f, d = 3.14f;
        System.out.printf("%4d %4d%n", a, b);
        System.out.printf("%x %x%n", a, b);
        System.out.printf("%3.2f %1.1f%n", c, d);
        System.out.printf("%1.3e %1.3e%n", c, d*100);
    }
}

  输出结果为:

150000   10

249f0 a

5.01 3.1

5.010e+00 3.140e+02

下面是一些格式化参数说明(摘自Core Java 2 Volume I - Fundamentals, Seventh Edition)

Table 3-5. Conversions for printf


Conversion Character

Type

Example

d

Decimal integer

159

x

Hexadecimal integer

9f

o

Octal integer

237

f

Fixed-point floating-point

15.9

e

Exponential floating-point

1.59E+01

g

General floating-point (the shorter of e and f)

a

Hexadecimal floating point

0x1.fccdp3

s

String

Hello

c

Character

H

b

Boolean

TRUE

h

Hash code

42628b2

tx

Date and time

See Table 3-7

%

The percent symbol

%

n

The platform-dependent line separator

Table 3-7. Date and Time Conversion Characters

Conversion Character

Type

Example

C

Complete date and time

Mon Feb 09 18:05:19 PST 2004

F

ISO 8601 date

2004-02-09

D

U.S. formatted date (month/day/year)

02/09/2004

T

24-hour time

18:05:19

r

12-hour time

06:05:19 pm

R

24-hour time, no seconds

18:05

Y

Four-digit year (with leading zeroes)

2004

y

Last two digits of the year (with leading zeroes)

04

C

First two digits of the year (with leading zeroes)

20

B

Full month name

February

b or h

Abbreviated month name

Feb

m

Two-digit month (with leading zeroes)

02

d

Two-digit day (with leading zeroes)

09

e

Two-digit day (without leading zeroes)

9

A

Full weekday name

Monday

a

Abbreviated weekday name

Mon

j

Three-digit day of year (with leading zeroes), between 001 and 366

069

H

Two-digit hour (with leading zeroes), between 00 and 23

18

k

Two-digit hour (without leading zeroes), between 0 and 23

18

I

Two-digit hour (with leading zeroes), between 01 and 12

06

l

Two-digit hour (without leading zeroes), between 1 and 12

6

M

Two-digit minutes (with leading zeroes)

05

S

Two-digit seconds (with leading zeroes)

19

L

Three-digit milliseconds (with leading zeroes)

047

N

Nine-digit nanoseconds (with leading zeroes)

047000000

P

Uppercase morning or afternoon marker

PM

p

Lowercase morning or afternoon marker

pm

z

RFC 822 numeric offset from GMT

-0800

Z

Time zone

PST

s

Seconds since 1970-01-01 00:00:00 GMT

1078884319

E

Milliseconds since 1970-01-01 00:00:00 GMT

1078884319047

Table 3-6. Flags for printf

Flag

Purpose

Example

+

Prints sign for positive and negative numbers

+3333.33

space

Adds a space before positive numbers

| 3333.33|

0

Adds leading zeroes

003333.33

-

Left-justifies field

|3333.33 |

(

Encloses negative number in parentheses

(3333.33)

,

Adds group separators

3,333.33

# (for f format)

Always includes a decimal point

3,333.

# (for x or o format)

Adds 0x or 0 prefix

0xcafe

^

Converts to upper case

0XCAFE

$

Specifies the index of the argument to be formatted; for example, %1$d %1$x prints the first argument in decimal and hexadecimal

159 9F

<

Formats the same value as the previous specification; for example, %d %<x prints the same number in decimal and hexadecimal

  这里是一些简单的介绍,更详细的说明请参考:

  Core Java 2 Volume I - Fundamentals, Seventh Edition

  Core Java 2 Volume II - Advanced Features, Seventh Edition

  里面都有一些很精彩的描述,中文名称就是《Java核心技术》。只有第七版才有J2SE5.0的介绍,但是第七版好像还没有中文版。本文还参考了Professional Java JDK - 5th Edition.