使用的教材是java核心技术卷1,我将跟着这本书的章节同时配合视频资源来进行学习基础java知识。
主要是需要熟悉Java程序设计语言,因此只学习简单的用于输入输出的控制台就可以了。
打印输出到“标准输出流”(即控制台窗口)是一件非常容易的事情,只要调用System.out.println即可。然而,读取“标准输人流”System.in就没有那么简单了。要想通过控制台进行输人,首先需要构造一个Scanner对象,并与“标准输人流”System.in关联。
Scanner in = new Scanner(System.in);
现在,就可以使用Scanner类的各种方法实现输入操作了。例如,nextLine方法将输入一行
System.out.print("what is your name?");
String name = in.nextLine();
在这里,使用nextLine方法是因为在输人行中有可能包含空格。要想读取一个单词(以空白符作为分隔符),就调用
String firstName = in.next();
要想读取一个整数,就调用nextlnt方法。
System.out.println("Hello old are you?");
int age = in.nextInt();
与此类似,要想读取下一个浮点数,就调用nextDouble方法。
最后,在程序的最开始添加上一行:
import java.util.Scanner;
需要注意的是:Scanner类定义在java.util包中。当使用的类不是定义在基本java.lang包中时,一定要使用import指示字将相应的包加载进来。
将上面的内容写成下面的程序:
import java.util.Scanner;
public class He {
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
//第一次输入
System.out.print("what is your name?");
String name = in.nextLine();
//第二次输入
System.out.println("Hello old are you?");
int age = in.nextInt();
//输出
System.out.println("Hello,"+name+".Next year,you'll be"+(age+1));
}
}
运行的结果:
可以看一下API中的Scanner类:
因为输入是可见的,所以Scanner类不适用于从控制台读取密码。
可以使用SyStem.out.print(x)将数值x输出到控制台上。这条命令将以x对应的数据类型所允许的最大非0数字位数打印输出X。例如:
double x = 10000.0/3.0;
System.out.print(x);
//会输出
//3333.3333333333335
如果希望显示美元、美分等符号,则有可能会出现问题。
System.out.print("%8.2f",x);
上面这种调用8个字符的宽度和小数点后两个字符的精度打印x。也就是说,打印输出一个空格和7个字符。
输出:3333.33
在printf中,可以使用多个参数,例如:
System.out.printf("Hello,%s,Next year,you'll be %d",name,age);
每一个以%字符开始的格式说明符都用相应的参数替换。格式说明符尾部的转换符将指示被格式化的数值类型:f表示浮点数,s表示字符串,d表示十进制整数。
另外,还可以给出控制格式化输出的各种标志。
例如,逗号标志增加了分组的分隔符。
即 System.out.printf("%,.2f",10000.0/3.0); 打印 3,333.33
可以使用多个标志,例如,“%,(.2f”使用分组的分隔符并将负数括在括号内。
可以使用静态的String.format方法创建一个格式化的字符串,而不打印输出:
String message = String.format("Hello, %s. Next year, you'll be %d", name, age);
要想对文件进行读取,就需要一个用File对象构造一个Scanner对象,如下所示:
Scanner in = new Scanner(Paths.get("myfile.txt"), "UTF-8");
如果文件名中包含反斜杠符号,就要记住在每个反斜杠之前再加一个额外的反斜杠:“c:\\mydirectory\\myfile.txt”。
要想写入文件,就需要构造一个PrintWriter对象。在构造器中,只需要提供文件名:
PrintWriter out = new PrintWriter("myfile.txt", "UTF-8");
如果文件不存在,创建该文件。可以像输出到System.out—样使用print、println以及printf命令。
需要注意的是:可以构造一个带有字符串参数的Scanner,但这个Scanner将字符串解释为数据,而不是文件名。文件位于Java虚拟机启动路径的相对位置。
如果用一个不存在的文件构造一个Scanner,或者用一个不能被创建的文件名构造一个PrintWriter,那么就会发生异常。
学习过较多编程语言的同学很容易将这些语言的输入输出搞混乱,这一块需要熟记。