print printlnprintf的区别:

printf主要是继承了C语言的printf的一些特性,可以进行格式化输出。

print就是一般的标准输出,但是不换行。print将它的参数显示在命令窗口,并将输出光标定位在所显示的最后一个字符之后。

println("test")相当于print("test\n")就是一般的输出字符串。println 将它的参数显示在命令窗口,并在结尾加上换行符,将输出光标定位在下一行的开始。

System.out.printf("the number is: %d",t);
参照JAVA API的定义如下:
'd' 整数 结果被格式化为十进制整数
'o' 整数 结果被格式化为八进制整数
'x', 'X' 整数 结果被格式化为十六进制整数
'e', 'E' 浮点 结果被格式化为用计算机科学记数法表示的十进制数
'f' 浮点 结果被格式化为十进制数
'g', 'G' 浮点 根据精度和舍入运算后的值,使用计算机科学记数形式或十进制格式对结果进行格式化。
'a', 'A' 浮点 结果被格式化为带有效位数和指数的十六进制浮点数

下在举个例子:

package other;
public class TestPrint {
public static void main(String[] args) {
int i = 4;
double j = 5;
System.out.print("用print输出i:"+ i);
System.out.println( "用println输出i:"+ i);
System.out.printf("i的值为%d,j的值为%f", i,j);
}
}

运行结果为

用print输出i:4用println输出i:4

i的值为4,j的值为5.000000

可以看到,用print输出i后,没有换行,用println输出的结果直接在print输出语句后面,而输出println后换行了,所以用printf输出时,在第二行输出。

我们再来看printf,“i的值为%d,j的值为%f”这个字符串中的"%d"变为i的值了,而"%f"变为了j的值了!这里,"%d"的意思是一个int值的占位符,"%f"为一个double 或float值的点位符,这个变量的参数在后面提供。注意的是实参名必须按顺序排。不然就会错了。而且类型也要相符。如果我们把语句改为

System.out.printf("i的值为%d,j的值为%f", j,i);//i和j位置反了

这时就有错了因为"%d"对应的参数变为j,"%f"对应的变为i了,而j是double的,与"%d"是int形的不一致。所以有错了。

还有"%s"是一个字符串值的点位符的意思。"%c"是一个字符值的点位符的意思。

可能读者还会问为什么j输出变成了5.000000?那是因为double是默认有6位小数的(这个可能和系统电脑有关,有的不是6位吧)但是如果你想只要输出两位小数行不行?可以啊!只要改下语句就行了!

System.out.printf("i的值为%d,j的值为%.2f", i,j);

这里的"%.2f"的意思是输出两位小数点。如果想输出三位那就"%.3f"。

说到这里你会发现原来printf也很有用的。这样可以控制输出的格式。

再学多点知识吧,将代码改为以下:

public class TestPrint {
public static void main(String[] args) {
int i = 4;
double j = 5.000f;
System.out.printf("i的值为],\n", i);
System.out.printf("i的值为%d,j的值为%.2f", i,j);
}
}

运行结果为:

i的值为 4,

i的值为 4,j的值为5.00

原来在"%"与"d"之间加个数5的意思是输出5个占位符。默认向右对齐。这样的输出是很有用的,比如你想输出一个表格,因各个数大小不一,有的5位有的4位,这样输出的的表格结果就对不齐了。如果将输出结果全部为同一样的占位符数。那样就对齐了。呵呵。

除了"%d"可以这样外,别的也可以,读者不防试试。会有很多收获的。

我们再试着将代码改一下:

public class TestPrint {
public static void main(String[] args) {
int i = 4;
double j = 5.000f;
System.out.printf("i的值为%05d,\n", i);
}
}

运行结果为:

i的值为00004,

原来"d"的意思是输出5个占位符,如果数字不足5的话就有左边以0相补

 [java] view plaincopyprint?

1. public class PrintFormat{  
2. public static void main(String[] args)  
3. {  
4.  //Console print format  
5. 为指定的输出格式,args参数     
6.  System.out.printf("%+8.3f\n", 3.14); //"+"表示后面输出的数字会有正负号,正的+,负的- ;8.3f表示输出浮点数,宽度为8,小数点保持3位有效   
7.  System.out.printf("%+-8.3f\n", 3.14);//"-"表示靠左对齐  
8.  System.out.printf("%08.3f\n", 3.14);//"0"8位宽度中自动补0  
9.  System.out.printf("%(8.3f\n", -3.14);//"("如果是负数,自动加上( )  
10.  System.out.printf("%,f\n", 123456.78); //","金钱表示方法,每三位有一个逗号  
11.  System.out.printf("%x\n", 0x2a3b); //输出16进制数  
12.  System.out.printf("%#x\n", 0x2a3b);//输出带0x标识的16进制数  
13. 老板:您名字%s,年龄:%3d岁,工资:%,-7.2f\n","ajioy",21,36000.00);  
14. 老板:您名字%1$s,年龄:%2$#x岁\n","ajioy",38); //"n{1}quot;表示用第n个参数  
15.   
16. }

JAVA接收控制台数据Scanner类---输入 

JAVA初学者很容易知道输出的类方法System.out.println("Hello,java!");

但是却对输入,即在控制台console中接收用户输入的数据不太清楚。

我自己在书上,网上找了很长时间,资料多而凌乱。

在一个JAVA的学习视频上看到了输入类Scanner的用法。

[java] view plaincopy

1. public class InputFromConsole {  

2.     public static void main(String[] args) {  

3.         Scanner s = new Scanner(System.in);  

4.         String name = s.nextLine();  

5.                 int ival = s.nextInt();  

6.         System.out.println(ival + "," + name);  

7.     }  

8. }  

 

首先创建一个Scanner对象s,构造函数的初始值为System.in,再利用s.nextInt()来接收一个int型数据ival的值,用s.nextLine()来接收String类型的name,然后分别输出。

当编译时会提示错误,这是因为Scanner类在一个名为util的包中。

在程序开头加上一句import java.util.*;即可解决问题。

[java] view plaincopy

1. import java.util.*;  
2.   
3. public class InputFromConsole {  
4.     public static void main(String[] args) {  
5.         Scanner s = new Scanner(System.in);  
6.         String name = s.nextLine();  
7.                 int ival = s.nextInt();  
8.         System.out.println(ival + "," + name);  
9.     }  
10. }