1.numberformat nf。
nf.format().
nf.parse();
2.filewriter具有的功能:
写一个line separator to an open stream
3.renameto
renameTo可以用来给File改名字,改路径 他需要的参数也是一个File对象,表示要把当前文件重命名(移动)为哪个文件 如果目标文件存在,则此方法返回false
4.异常只能被捕捉一次
5.stringbuilder sb1;
sb1.append();
string sb1;
sb1=sb1.concat();
6.序列化使用objectoutputstream s. s.writeInt(x);s.writeInt(y);
恢复使用x=s.readInt();y=s.readInt();
7.double d = 345.678; String s = "hello!"; int i = 1234; //"%"表示进行格式化输出,"%"之后的内容为格式的定义。 System.out.printf("%f",d);//"f"表示格式化输出浮点数。 System.out.printf("%9.2f",d);//"9.2"中的9表示输出的长度,2表示小数点后的位数。 System.out.printf("%+9.2f",d);//"+"表示输出的数带正负号。 System.out.printf("%-9.4f",d);//"-"表示输出的数左对齐(默认为右对齐)。 System.out.printf("%+-9.3f",d);//"+-"表示输出的数带正负号且左对齐。 System.out.printf("%d",i);//"d"表示输出十进制整数。 System.out.printf("%o",i);//"o"表示输出八进制整数。 System.out.printf("%x",i);//"d"表示输出十六进制整数。 System.out.printf("%#x",i);//"d"表示输出带有十六进制标志的整数。 System.out.printf("%s",s);//"d"表示输出字符串。 System.out.printf("输出一个浮点数:%f,一个整数:%d,一个字符串:%s",d,i,s);//可以输出多个变量,注意顺序。 System.out.printf("字符串:%2$s,%1$d的十六进制数:%1$#x",i,s);//"X$
8.break +label
标号label
标号提供了一种简单的break语句所不能实现的控制循环的方法,当在循环语句中遇到break时,不管其它控制变量,都会终止。但是,当你嵌套在几层循环中想退出循环时又会怎样呢?正常的break只退出一重循环,你可以用标号标出你想退出哪一个语句。
|
在这个例子中,循环从键盘接受100个输入字符,输入“b”字符时,break outer语句会结束两重循环,注意continue outer语句,它告诉计算机退出现在的循环并继续执行outer循环。
9.异常捕获的顺序:对于try..catch捕获异常的形式来说,对于异常的捕获,可以有多个catch。对于try里面发生的异常,他会根据发生的异常和catch里面的进行匹配(怎么匹配,按照catch块从上往下匹配),当它匹配某一个catch块的时候,他就直接进入到这个catch块里面去了,后面在再有catch块的话,它不做任何处理,直接跳过去,全部忽略掉。如果有finally的话进入到finally里面继续执行。换句话说,如果有匹配的catch,它就会忽略掉这个catch后面所有的catch。对我们这个方法来说,抛出的是IOException,当执行etct.doSomething();时,可能会抛出IOException,一但抛出IOException,它首先进入到catch (Exception e) {}里面,先和Exception匹配,由于OExceptionextends Exception,根据多态的原则,IOException是匹配Exception的,所以程序就会进入到catch (Exception e) {}里面,进入到第一个catch后,后面的catch都不会执行了,所以catch (IOException e) {}永远都执行不到,就给我们报出了前面的错误:已捕捉到异常 java.io.IOException。
总结:在写异常处理的时候,一定要把异常范围小的放在前面,范围大的放在后面,Exception这个异常的根类一定要刚在最后一个catch里面,如果放在前面或者中间,任何异常都会和Exception匹配的,就会报已捕获到...异常的错误。
10.Java在执行的时候默认是不启动断言检查的(这个时候,所有的断言语句都将忽略!),如果要开启断言检查,则需要用开关-enableassertions或-ea来开启。
assert关键字语法很简单,有两种用法:
1、assert <boolean表达式>
如果<boolean表达式>为true,则程序继续执行。
如果为false,则程序抛出AssertionError,并终止执行。
2、assert <boolean表达式> : <错误信息表达式>
如果<boolean表达式>为true,则程序继续执行。
如果为false,则程序抛出java.lang.AssertionError,并输入<错误信息表达式>。
10.finally 块必须与 try 或 try/catch 块配合使用。此外,不可能退出 try 块而不执行其 finally 块。如果 finally 块存在,则它总会执行。(无论从那点看,这个陈述都是正确的。有一种方法可以退出 try 块而不执行 finally 块。如果代码在 try 内部执行一条 System.exit(0); 语句,则应用程序终止而不会执行 finally 执行。另一方面,如果您在 try 块执行期间拨掉电源,finally 也不会执行。)
11.java对类成员变量有默认初始化值,对于对象初始化为NULL,对于整形的初始化为0
12.最后一点,也是最最要的一点,覆盖equals方法总要覆盖haseCode。在每个覆盖了equals方法的类中,则必须覆盖haseCode方法。如果不这样做,就会违反Object.haseCode方法,从而导致该类无法结合基于散列的集合一起正常工作。
13.1.hashCode的存在主要是用于查找的快捷性,如Hashtable,HashMap等,hashCode是用来在散列存储结构中确定对象的存储地址的;
2、如果两个对象相同,就是适用于equals(Java.lang.Object) 方法,那么这两个对象的hashCode一定要相同;
3、如果对象的equals方法被重写,那么对象的hashCode也尽量重写,并且产生hashCode使用的对象,一定要和equals方法中使用的一致, 否则就会违反上面提到的第2点;
4、两个对象的hashCode相同,并不一定表示两个对象就相同,也就是不一定适用于equals(java.lang.Object) 方法,只能够说明这两个对象在 散列存储结构中,如Hashtable,他们“存放在同一个篮子里”。
14.对于泛型,如果list中没有指定相应的类型容易造成unchecked warning
15.Object[] myObjects={ new String("foo"), new Integer(12), new Integer(5), }; Arrays.sort(myObjects);
java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer,以最后一个类型相关
16.java -classpath /test:/home/bob/downloads/*.jar games.Chess
所以cless位于/test/games/chess.class
17.对于package com.company.application;
运行它,如果在/apps文件夹内使用 java com.cmpany.application.MainClass或者在任何文件夹中使用
java -classpath /apps com.company.application.MainClass