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;
}
}