Java 自学笔记 Oct-27(2)

1.如果希望Scanner对文件进行读取,需要先建立一个File对象(import java.io.File),然后用如下的方式调用:

Scanner cin = new Scanner(new File("input.txt"));

而不要采用这样的方式:

Scanner cin = new Scanner("input.txt");

该方式实际上是把"input.txt"这个字符串读入了Scanner。(类似于C++中的stringstream导入了一个字符串流)

如果路径为绝对路径,在出现"\"的地方应该替换为"\\"(转义字符),例如"C:\\Windows",在Linux目录下的无需替换,如"/home/rhoway/xx.java"

 

2.需要写入文件时调用PrintWriter,参数直接提供文件名即可。也可以使用其重载版本,参数使用File类型的变量。

使用时需import java.io.PrintWriter;

PrintWriter fout = new PrintWriter("output.txt");

使用后记得调用close函数,这很重要,否则该文件会因为被调用而无法查看到刚更改的内容。

3.在Java中,嵌套的块中不可以再声明和外层同名的变量。(在C++中是可以的)

4.for循环的结束条件请尽可能避免和浮点数比较是否相等或者比较大小。(存在舍入的误差)

5.当在switch语句中使用枚举变量时,不必再指定枚举的类型名:

SIZE sz = SIZE.SMALL;
switch(sz)
{
case SMALL:
......;break;

而不用写"case SIZE.SMALL:"

(顺便一提,enum放在main方法中会给出类似于“枚举类型不能为本地类型”这样的提示以致不能编译)

6.附上一张BigInteger和BigDecimal类型的表:

(读入可以用nextBigInteger/nextBigDecimal/next)

 

7.for的另一种用法:

for(类型名 元素名: 集合名)
//Do something

该集合必须是数组或实现了Iterable的类对象。

8.数组同样存在toString方法:

Array.toString(数组名)可以将数组元素打印成类似于[1,2,3]这样的形式。

9.在Java中可以创建匿名数组,也允许数组的长度为0,但数组长度为0和null不同。

10.数组的拷贝实际上是引用调用

int[] array2 = new int [] {2,3,4,5,6};
int[] array1 = array2;
array[1] = '0';

第三行中的修改也会影响array2中对应元素的值。

如果只需要值拷贝,而不是引用的话,请使用Arrays.copyOf(被拷贝的数组名,拷贝的元素个数);

如果被拷贝的元素个数少于被拷贝数组大小,则只拷贝前面几个元素。

反之,结果由类型决定:数值类型多余位补0,boolean类型补false。


注:也可以使用System.arraycopy方法,参数如下:

System.arraycopy(source,fromIndex,destination,toIndex,count);

source指原数组,destination指目标数组,from和to分别指从…下标开始拷贝以及拷贝到…下标。count指拷贝…个元素。用此方法时须保证destination数组足够大。

 

11.用Math.random()可以产生0至1的随机浮点数,利用该值*n可以得到0到n-1的随机数。

12.使用Arrays的操作时需import java.util.Arrays;

 

 

posted on 2011-10-27 18:43  珞薇  阅读(1087)  评论(4)    收藏  举报

导航