一、基础语法
比特(bit)
只能为一个值0或1,8比特(bit)是一个字节 字节(byte) 8个bit,但是第一位表示正负号,所以,一字节范围是-2^7——2^7-1原码 反码 补码
在计算机内,定点数有3种表示法:原码、反码和补码。
【原码】二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。 【反码】表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。 【补码】表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加1。 计算机数据是用补码表示的,正数的补码就是它的原码,而负数的补码是将其原码(取绝对值后的原码)取反加1得到的。 即:负数的二进制 = 正数(该数的绝对值)的二进制反码 + 1 例如:求-5的补码是 1. 取绝对值:-5 的绝对值:5 2. 转二进制:5的二进制:0000 0101 3. 取反码: 0000 0101 的反码 1111 1010 4. 加一: 1111 1010 加一 1111 1011 所以,针对一个字节,也就是8位 最大的是 0111 1111(即127,2^7-1) 最小的应该是1000 0000,按照上面的解释,先减一,得到0111 1111,然后按位取反得到1000 0000,该结果为所求负数的绝对值,所以结果是-128(和概念反着来求出该负数) java字符采用unicode编码,每个字符占两个字节,因而可以用十六进制表示。java类型转换,容量小的类型自动转换为容量大的数据类型(byte1,short2,char2,int4->long8->float4->double8)switch case语句
每个case后应该与break连用,否则会穿透到下一个case中,输出两个结果。多个case可以合并到一起,用同一个结果(case 1:case 2:case 3:break)。最后default语句应该加上,不推荐省略。
二、面向对象
局部变量在栈内存里,方法调用完毕就消失;new出来的东西存在堆内存里;静态变量、字符串常量存在Datasegment;剩下的代码就是在代码区。
子类继承父类
子类自动拥有父类的所有成员(成员变量及方法),父类的私有变量也会拥有,但是不能在子类中访问。
子类可以对父类方法进行重写 - 重写方法必须拥有和被重写方法相同的方法名、参数列表、返回类型; - 不能使用比被重写方法更严格的访问权限; - 子类抛出的异常不能超过父类抛出的异常; 继承中构造方法的规则 - 子类的构造过程中必须调用父类的构造方法; - 使用this(参数)调用本类的另外的构造方法,如果调用super,必须写在子类构造方法的第一行; - 如果子类的构造方法中既没有显示的调用父类的构造方法,而父类中又没有无参的构造方法,则编译出错;异常
受检查异常
顾名思义,受检查异常,需要我们用try…catch捕获处理或者抛出,否则编译不会通过。例如:IO异常,SQL异常,java规定必须对出现的这些异常进行catch; 运行时异常 当程序中可能出现这类异常时,即使没有用try…catch捕获它,还是会编译通过。java编译器不会检查它。例如:我们从来没有手工处理过NullPointerException异常,Java编译也能通过。 Error :表示由 JVM 所侦测到的无法预期的错误,由于这是属于 JVM 层次的严重错误 ,导致 JVM 无法继续执行,因此,这是不可捕捉到的,无法采取任何恢复的操作,顶多只能显示错误信息。集合
collection
最基本的集合接口,其子接口Set和list接口。
- set中的数据对象,无序但不可重复; list中的 - 数据对象,有序可以重复; Collection继承了接口 Iterable ,当然拥有父接口中的 iterator()方法。 ArrayList , Vector , LinkedList 是 List 的实现类 - ArrayList 是线程不安全的, Vector 是线程安全的,这两个类底层都是使用数组方式存储数据,所以索引数据快而插入数据慢 - LinkedList 是线程不安全的,底层是双向链表实现存储,增删改较快。(查找按序号索引数据需要进行前向或后向遍历,较慢)IO
输入流、输出流,都是站在程序的角度上来说的。
比如读取文件的数据到程序中,站在程序的角度来看,就叫做输入流。input直接与数据源相连的流
- 对文件的读写参数是文件名 FileInputStream/FileOutputStream FileReader/FileWriter
- 以字节数组的形式读取,可以实现不经文件直接从键盘读取 参数是 byte[]类型 ByteArrayInputStream ByteArrayOutputStream
套在上面两个流外面的流
- 带缓冲区的流,通常是套在别的流之外。 BufferedInputStream BufferedOutputStream 参数分别是 InputStream,OutputStream类型 BufferedReader BufferedWriter 参数分别是 Reader,Writer类型
- 转换流,用于将字节流转换成字符流。 InputStreamReader OutputStreamWriter 参数分别是 InputStream OutputStream类型
- 数据流,提供了可以读取基础类型的数据的方法。 DataInputStream DataOutputStream 参数分别是InputStream,OutputStream类型
- 打印流 (这个流比较特殊,参数很多: File String OutputStream Writer都可以),融合Data和Buffered。 PrintStream PrintWriter对象流,直接读取对象类型的数据, 把对象放在流上传输。 ObjectInputStream ObjectOutputStream 参数分别是 InputStream,OutputStream类型