欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java小知识点

程序员文章站 2024-01-30 10:55:22
...
    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;
	}
	
}