输入输出
1、构造Scanner对象读取输入:
Scanner in= new Scanner(System.in);
2、使用print方法相控制台输出:
System.out.print(x);
3、可以用printf方法实现格式化输出,转换符如下表:
转换符 | 类型 | 举例 |
d | 十进制整数 | 159 |
s | 字符串 | Hello |
x | 十六进制整数 | 9f |
c | 字符 | H |
o | 八进制整数 | 237 |
b | 布尔 | True |
f | 定点浮点数 | 15.9 |
h | 散列码 | 24628b2 |
e | 指数浮点数 | 1.59e+01 |
t_ | 日期时间 | |
g | 通用浮点数 | |
% | 百分号 | % |
a | 十六进制浮点数 | 0x1.feedp3 |
n | 与平台有关的行分隔符 |
4、用于printf的标志
标志 | 目的 | 举例 |
+ | 打印整数和负数的符号 | +3333.33 |
空格 | 在整数之前添加空格 | | 3333.33| |
0 | 数字前面补0 | 003333.33 |
- | 左对齐 | |3333.33 | |
( | 将负数括在括号内 | (3333.33) |
, | 添加分组分隔符 | 3,333.33 |
(对于f格式) | 包含小数点 | 3,333. |
(对于x或0格式) | 添加前缀0x或0 | 0xcafe |
$ | 给定被格式化的参数索引 | 159 9F |
< | 格式化前面说明的数值 | 159 9F |
5、$ 和 < 标志使用举例:
System.out.printf(“%1$s %2$tB %2$te %2$tY”,
“Due date:”, new Date());
System.out.printf(“%s %tB %<te %<tY”, “Due date:”, new Date());
输出为:
Due date: February 9, 2004
6、printf中日期和时间的转换符:
转换符 | 类型 | 举例 |
c | 完整的日期和时间 | Mon Feb 09 18:05:19 PST 2004 |
F | ISO 8601 日期 | 2004-02-09 |
D | 美国格式的日期(月/日/年) | 02/09/2004 |
T | 24小时时间 | 18:05:19 |
r | 12小时时间 | 06:05:19 pm |
R | 24小时时间没有秒 | 18:05 |
Y | 4位数字的年(前面补0) | 2004 |
y | 年的后两位数字(前面补0) | 04 |
C | 年的前两位数字(前面补0) | 20 |
B | 月的完整拼写 | February |
b或h | 月的缩写 | Feb |
m | 两位数字的月(前面补0) | 02 |
d | 两位数字的日(前面补0) | 09 |
e | 两位数字的月(前面不补0) | 9 |
A | 星期几的完整拼写 | Monday |
a | 星期几的缩写 | Mon |
j | 三位数的年中的日子(前面补0),在001到366之间 | 069 |
H | 两位数字中的小时(前面补0),在0到23之间 | 18 |
k | 两位数字中的小时(前面不补0),在0到23之间 | 18 |
I | 两位数字中的小时(前面补0),在0到12之间 | 06 |
l | 两位数字中的小时(前面不补0),在0到12之间 | 6 |
M | 两位数字的分钟(前面补0) | 05 |
S | 两位数字的秒(前面补0) | 19 |
L | 三位数字的毫秒(前面补0) | 047 |
N | 九位数字的毫微秒(前面补0) | 047000000 |
P | 上午或下午的大写标志 | PM |
p | 上午或下午的小写标志 | pm |
z | 从GMT起, RFC822数字位移 | —- 0800 |
Z | 时区 | PST |
s | 从格林威治时间1970-01-01 00:00:00起的秒数 | 1078884319 |
Q | 从格林威治时间1970-01-01 00:00:00起的毫秒数 | 1078884319047 |
7、printf格式说明符语法:
8、可以利用Scanner类进行文件读入:
Scanner in = new Scanner(Paths.get(“myfile.txt”));
9、利用PrintWriter类进行文件写入:
PrintWriter out = new PrintWriter(“myfile.txt”);
10、寻找当前编译环境下的默认路径:
String dir = System.getProperty(“user.dir”);
控制流程
1、块(block)是指由一对花括号括起来的若干条简单的Java语句。块指定了变量的作用域。块可以嵌套。
2、不可以在嵌套的两个块中生命同名的变量。
3、条件语句格式:
if(condition){ statements; }
4、while循环格式:
while(condition){ statements; }
5、do while 循环格式:
do { statements; } while(condition)
do while 循环的循环体至少会执行一次。
6、利用for循环可以更新循环计数器或类似的变量来控制迭代次数。
7、Java允许for循环的各个部分放置任何表达式,但是有一条不成文的规则:for语句的三个部分应该对统一个技术区变量进行初始化、检测和更新。若不遵守这一规则,编写循环常常晦涩难懂。
8、利用switch语句可以进行多重选择。
9、switch语句的case标签支持如下几种类型:
- 类型为char、byte、short或int (或其包装器类Character、Byte、Short和Integer)的常量表达式
- 枚举常量
- 从Java SE 7 开始,case标签还可以是字符串常量
10、通常,使用goto语句被分为是一种拙劣的程序设计风格,但偶尔使用goto语句跳出循环是有益处的。
11、可以使用break语句跳出循环。
12、Java还提供了一种带标签的break语句,用于跳出多重嵌套循环语句。这里的标签必须放在希望跳出的最外循环之前,并跟一个冒号。
label:
while(...) {
...
for(...) {
...
break label;
}
}
13、continue语句可以将控制转移到最内层循环的首部。
14、continue也有带标签的版本,可以跳转到与标签匹配的循环首部。