java视频学习记录


一、基础语法

比特(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类型