Java 5.0新特性研究(二)
今天在“Java技术论坛”上看到了“J2se5.0新增小功能”这个帖子,大家的集思广益让我又有了一些收获。
1、再谈java引入的格式化输入和输出
在“Java 5.0新特性研究(一)”中,当时只是看了一些简单的例子,自己也没有深入看看jdk5.0的doc。今天看到论坛上的一些例子还是把我吸引了,自己又翻了翻昨天刚下的jdk5.0的doc,觉得java引入的新的格式化输入输出还是蛮好的^_^。
Java的格式化输入输出功能都是由java.util.Formatter类提供的。
Java提供printf:
//format output:
String str = String.format("my name is %s" , "tony bai");
System.out.println(str);//my name is tony bai.
System.out.printf("[%s] is %d years old", "dreamhead", 26);//输出一行无换行。
System.out.printf("[%s] is %d years old", "tony bai", 22).println();//输出一行有换行。
熟悉C/C++语法的对printf的使用应该不陌生,java中printf的使用几乎和C/C++没什么区别。
Java提供scanner,相当于scanf:
System.out.println(“Please enter your job id:”);
Scanner sc = new Scanner(System.in);
int id = sc.nextInt();
System.out.println(“Please enter your job name:”);
String jbName = sc.next();
运行后,首先让你输入job id,这是个int值,如果你输入字符,将会看到如下异常被throwed:
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:819)
at java.util.Scanner.next(Scanner.java:1431)
at java.util.Scanner.nextInt(Scanner.java:2040)
at java.util.Scanner.nextInt(Scanner.java:2000)
at Main.main(Main.java:59)
在C/C++中没有这种类型检查,我们举个简单的例子:
//test.c , written in standard c
#include "stdio.h"
int main(int argc, char *argv[])
{
int job_id = 0;
printf("enter your job id:\n");
scanf("%d" , &job_id);
printf("your job id is %d:\n" , job_id);
return 0;
}
//test.cpp written in standard c++
#include "iostream"
#include "string"
using namespace std;
int main(int argc, char *argv[])
{
int job_id = 0;
cout << "enter your job id:" << endl;
cin >> job_id;
cout << "your job id is " << job_id << endl;
return 0;
}
上面两段程序完成统一功能。即接受你输入的job id,然后输出你的job id。
运行上面两个程序,我们输入”years”作为我们的job id,程序输出的结果是:
“your job id is 0”;
说明程序没有接受我们的输入而直接输出初始值了。这种情况可不是我们所要的,所以说java做得还是不错的,抛出了异常,以免输入错误的类型值。
2、UUID
使用过com组件的人都对uuid(Universally Unique IDentifier)不陌生,每个com组件都有自己全球唯一的uuid,在microsoft的visual studio中提供一个小工具可以生成一个uuid。Java在5.0中也引入了uuid,而且使用起来也很简单。
UUID uuid = UUID.randomUUID(); //use a static factory method to create an instance
System.out.printf("UUID : %s", uuid).println();
//output:UUID : a4bf4134-1395-4b13-a536-c1f538f95ff8
评论