Java语法之一:基本程序结构(2)
敬告:本文仅为本人学习《java核心技术:卷一》的一篇读书笔记,有相当多的遗漏之处,请勿当做学习资料来使用。
1.5 输入输出
1.5.1 读取输入
首先需构造一个Scanner对象,与“标准输入流” System.in 相关联。
Scanner in = new Scanner(System.in);
String name = in.nextLine();//读一行,可能包含空格
String firstName = in.next();//读一个单词,不包含空格
int age = in.nextInt();//读一个整数
Scanner 在Java.util包中,使用需要import java.util.*;
1.5.2 格式化输出
System.out.printf(); 和c语言一样
在 printf中,可以使用多个参数, 例如:
System.out.printf("Hello, %s. Next year, you'll be SSd", name, age);
每一个以 % 字符开始的格式说明符都用相应的参数替换。 格式说明符尾部的转换符将指示被
格式化的数值类型:f 表示浮点数,s 表示字符串,d 表示十进制整数。
例如 :
System.out.printf(“%8.2f”,x);
可以用 8 个字符的宽度和小数点后两个字符的精度打印 x。也就是说,打印输出一个空格和7 个字符, 如下所示:
3333.33另外,还可以给出控制格式化输出的各种标志。可以使用多个标志,例如,“ %,( .2f” 使用分组的分隔符并将负数括在括号内。
可通过静态的String.format方法创建一个格式化的字符串:
String message = String.format("Hello,%s.Next year,you"ll be %d years old.",name,age);
可用参数索引来进行格式化,参数索引从1开始
String message = String.format("Hello,%1$s.Next year,you'll be %2$d years old",name,age);
//%1表示第一个参数name,%2表示第二个参数age.
//参数索引适用于重复输出同一个参数时
%< 表示再次输出前一个参数,适用于连续
重复输出同一个参数时
1.5.3 文件的输入和输出
读文件:用Paths对象构造一个Scanner对象
Scanner in = new Scanner(paths.get("myfile.txt"),"UTF-8");
现在,就可以利用前面介绍的任何一个 Scanner 方法对文件进行读取
写文件:构造一个PrintWritter对象
PrintWritter out = new PrintWritter("myfile.txt","UTF-8");
out 可使用 print,println,printf命令
1.6 数组
int [] a;
int [] a = new int[100];
1.6.1 for each循环
for(int e:a)
System.out.println(e);//a是一个整形数组
Arrays.tostring()
a = {2,3,5,7};
System.out.println(Arrays.tostring(a));
输出:
[2,3,5,7]
返回一个包含数组元素的字符串,元素用“,”分隔,放置在括号内。
1.6.2 数组初始化
int[] smallPrimes = {2,3,5,7,11,13};
//或
int[] smallPrimes;
smallPrimes = new int[] {2,3,5,7,11,13};//匿名数组
1.6.3 数组拷贝
int[] copiedLuckyNumbers = Arrays.copyOf(LuckyNUmbers,2*LuckyNumbers.length);
//第一个参数是被copy的数组,第二个参数是新数组长度
当新数组长度>原数组长度时:
若为数值型数组,则多余元素为0;
若为bool型数组,多余元素为flase;
1.6.4 数组排序
用Arrays.sort()函数,用优化的快速排序算法将数值型数组从小到大排序。参数为数值型数组。
1.6.5 多维数组
double[][] balance = new double[N1][N2];
用两层循环或Arrays.deepToString()输出二维数组。
1.6.6 不规则数组
如:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
则新建一个不规则数组如下
int[][] odds = new int[N+1][];
for(int n = 0;n<=N;n++)//对每一行都要再申请一个一维数组
odds[n] = new int[n+1];