java小知识点
char c = 20013;//字符是一个数 System.out.println(c);//中
break结束一个for循环时不会执行for后面括号中最后一个分号后面的语句。
continue结束一次for循环跳入下一次循环之前要先执行for后面括号中最后一个分号后面的语句。
read() 有可能读到1111 1111这样开头的数据 也就是说文件的开头就是-1;read()在读取时候byte提升为int。在前面添加0000 0000.
write()在写入时候只取int的末尾8位有效数据。强转
readLine()方法一行结束标记是回车符。如果用bufferedWriter写一行数据 bout.write(line); 到这里并没有写入回车符;所以要bout.newLine();
凡是用到buffer缓冲的记得flush();
补码
1 -128~+127(1000 0000B~0111 1111B) 2 0111 1111 127 3 1111 1111 -1 4 0000 0000 0 5 1000 0000 -128
System.out.println()的解释:
java.lang.System这是一个类,这个类有3个静态成员变量:in,out,err. 其中out的类型是PrintSream,这个类有一个println()方法。
& 和 &&区别: & :无论左边结果是什么,右边都参与运算。
&&: 短路与,如果左边为false,那么右边不参数与运算。
| 和|| 区别: |:两边都运算。
||:短路或,如果左边为true,那么右边不参与运算。
static
1,静态方法只能访问静态成员,不可以访问非静态成员。
因为静态方法加载时,优先于对象存在,所以没有办法访问对象中的成员。
2,静态方法中不能使用this,super关键字。
因为this代表对象,而静态在时,有可能没有对象,所以this无法使用。
Eclipse编码设置UTF-8
Window->Preferences->General ->Content Type->Text->JSP 最下面设置为UTF-8
Window->Preferences->General->Workspace 面板Text file encoding 选择UTF-8
Window->Preferences->Web->JSP Files 面板选择 ISO 10646/Unicode(UTF-8)
Eclipse最有用快捷键
7. shift+enter及ctrl+shift+enter Shift+enter在当前行之下创建一个空白行,与光标是否在行末无关。Ctrl+shift+enter则在当前行之前插入空白行。 8. Alt+方向键 这也是个节省时间的法宝。这个组合将当前行的内容往上或下移动。在try/catch部分,这个快捷方式尤其好使。 9. ctrl+m 大显示屏幕能够提高工作效率是大家都知道的。Ctrl+m是编辑器窗口最大化的快捷键。
编码解码的乱码问题
package javaBase.io; import java.io.IOException; import java.util.Arrays; /* * 编码:字符串变字节数组 String.getBytes(charsetName); * 解码:字节数组变字符串new String(byte[],charsetName); * 服务器端:一般是用ISO8859-1(欧洲)不识别中文 */ public class EncodeDemo { public static void main(String[] args) throws IOException { String s = "你好";//默认编码,eclipse我已默认utf-8 byte[] b1 = s.getBytes();//默认utf-8 System.out.println(Arrays.toString(b1));//[-28, -67, -96, -27, -91, -67] //服务器端解码 String s1 = new String(b1,"iso8859-1");//用ISO8859-1解码出错 System.out.println(s1);//乱码???? //处理乱码: byte[] b2 = s1.getBytes("iso8859-1");//用ISO8859-1再编码一次 String s2 = new String(b2,"utf-8");//再解码 System.out.println(s2); /* * 说明:如果用支持中文的编码解码出错,这样做可能不行,因为解码出错后再编码会把乱码当做中文稀有汉字解码 * 还有“联通”的gbk码符合UTF-8规则 */ } }
对象的序列化
package javaBase.io; import java.io.*; /* * 对象的序列化 */ public class ObjectSerial { public static void main(String[] args) throws Exception { writeObj(); readObj();//这个函数不止IO异常 } /* * 本地持久化,对象写入硬盘 */ public static void writeObj() throws IOException{ ObjectOutputStream oout = new ObjectOutputStream(new FileOutputStream("person.obj")); oout.writeObject(new Person("xukunn",25)); oout.close(); } /* * 读取硬盘上的对象 */ public static void readObj() throws Exception{ ObjectInputStream oin = new ObjectInputStream(new FileInputStream("person.obj")); Person p = (Person)oin.readObject(); System.out.println(p); oin.close(); } } class Person implements Serializable{ private static final long serialVersionUID = 42L;//自定义,在修改了成员之后依然”认得“ private String name; private int age; public Person(String name,int age) { this.name = name; this.age = age; } @Override public String toString() { return name+":"+ age; } }