Java初级 基础知识复习

JDK的安装

下载、安装

配置环境变量

  • path:.;%JAVA_HOME%\bin;
  • JAVA_HOME:JDK的安装目录
  • classpath

JDK和JRE和JVM的区别

 

JAVA程序运行过程

  • 编译javac :把java源文件编译成class字节码文件
  • 运行java :运行class文件

 

标识符(给类、方法、变量起名)

  • 以字母(采用Unicode字符集)、下划线、$ 开头
  • 其余部分可以是:字母(采用Unicode字符集)、下划线、$、数字
  • 不能为关键字

 

变量

局部变量

  • 定义在方法内或语句块内。 从属于方法或语句块
  • 使用之前,必须要手动初始化!

成员变量(实例变量/field)

  • 定义在类里面、方法外面。   从属于对象
  • 如果我们没有手动初始化成员变量,系统会自动初始化。初始化的规则如下:
  • 数字:0,0.0   布尔:false  char:\u0000   引用类型:null

静态变量(类变量)

  • 定义在类里面、方法外面、使用static修饰。  从属于类
  • 如果我们没有手动初始化静态变量,系统会自动初始化。初始化规则同成员变量。

 

数据类型

基本数据类型

  • 数字
  1. 整数:byte(1个字节)  short(2个字节)   int(4个字节,整型常量默认该类型)   long(8个字节)
  2. 浮点数:float(4个字节)  double(8个字节,浮点常量默认为该类型)
  • 字符 char(2个字节)
  • 布尔 boolean(1位)

引用类型(4个字节)

  • 数组
  • 对象
  • 接口

 

表达式

  • 类型的自动提升
  1. 如果有long,结果就是long。
  2. 如果有double,结果就是double。
  • 强制转型

 

运算符

  • 赋值运算符(=)
  1. if(b=true)  if(b)       if(c=3)  if(3==c)
  • 算术运算符
  • 关系运算符(==)
  1. 常见错误写法: 1<a<3     正确写法:1<a&&a<3
  • 逻辑运算符
  1. 与&&, 或||, 非!     都是短路操作
  2. 与&,或|    3&4   非短路操作
  • 位运算符
  1. &,|, <<(左移一位相当于乘以2),>>(右移一位相当于除以2)
  2. 3*4 最快的操作:3<<2
  • 扩展运算符
  1. +=,-=,*=,/=,%=
  • 三目运算符
  1. (布尔表达式)?A:B

 

控制语句

  • 顺序结构
  • 选择结构
  1. If、If else、If else if … else
  2. switch  多值选择  表达式:int或char/short/byte, 枚举     建议每个case都加break
  • 循环结构
  1. while  先判断后执行
  2. for
  3. do  while  先执行后判断

     break问题

  1. break: 强制终止整个循环
  2. continue:结束本次循环,继续下一次!

 

面向对象基础

  • 对象的进化史
  1. 基本数据类型阶段       数据少     无数据管理时代
  2. 数组                数据多了,将同类型的数据放到一起     弱管理
  3. 结构体          数据多了,数据复杂了。将不同类型的数据放到一起    强管理
  4. 对象    数据多了、类型复杂了、行为复杂了。将不同类型的数据放到一起 超强管理
  • 对象和类
  1. 对象是具体的,类是抽象的。  类也是一个模版,通过类这个模版我们也可以new对象。

 

定义类

public class 类名  {   // 类名首字母大写

         //属性

         private  数据类型  属性名;   //建议增加相应的getter、setter方法

         //方法

         //构造方法  // 建议无参构造方法都带上

}

 

构造方法

  • 方法名必须跟类名保持一致
  • 无返回类型
  • 通过new来调用
  • 无参构造器问题:
  1. 如果我们没有手动定义构造器,系统会自动为我们添加一个无参的构造器
  2. 如果我们自己定义了构造器,系统就不会为我们添加无参构造器
  • 构造方法的第一句总是:super,即调用直接父类的构造方法。
  1. 有继承关系的构造方法调用的顺序

 

方法的重载(Overload)

两同(同一个类、同一个方法名)三不同(参数列表不同:类型、个数、顺序)

返回值不同,构成重载吗?  No

形参名称不同,构成重在吗?  No

this:

         普通方法中,调用本方法的对象。

         构造方法中,正要初始化的对象。

         还可以用来,调用其他的构造方法

super:

static:

         用它修饰的变量和方法,就变成了静态变量和静态方法。从属于类。通过类名即可调用。实际存储于方法区中。

package:

         package必须位于非注释行第一句。

         包名:域名倒着写

import:

         引入外部的类

import  static :导入类的静态属性

final:

         修饰变量:常量(命名规范:全部大写,多个单词之间通过下划线隔开)

         修饰方法:不能被重写

         修饰类: 不能被继承

 

面向对象的三大特征

封装

    通过private、default 、protected、public关键字实现属性或方法的封装。

    “高内聚,低耦合”

继承

   通过extends 。两个好处:

  1. 代码重用
  2. 通过继承实现对现实世界更加准确的建模

    类只有单继承,没有像C++那样的多继承

多态(polymorphism)

    三个必要条件:继承、方法的重写、父类引用指向子类对象

    动态绑定、静态绑定

  • 方法重写(Override)的要点

=:方法名保持一致

>=: 子类权限修饰符可以大于等于父类的。

<=, <=: 子类的返回值类型小于等于父类的类型。 子类声明异常类型不能超过父类的类型。

  • Object类
  1. 是我们所有类的根基类
  2. toString
  3. equals、hashcode
  4. wait、notify、notifyAll (线程使用)

 

抽象类 abstract

  • 包含抽象方法的类,一定是抽象类。(抽象方法必须被子类重写)
  • 抽象类不能被new。
  • 抽象类可以包含:普通方法、成员变量、构造方法。

 

接口

  • interface
  • 类实现接口:implements    可以实现多个接口
  • 接口可以多继承
  • 接口定义的是一组规范!实现现实世界中这样的逻辑::如果你是…则必须能…

 

内存机制

  1. 存放局部变量
  2. 不可以被多个线程共享
  3. 空间连续,速度快
  1. 存放对象
  2. 可以被多个线程共享
  3. 空间不连续,速度慢。但是灵活
  • 方法区
  1. 存放类的信息:代码、静态变量、字符串常量等
  2. 可以被多个线程共享
  3. 空间不连续,速度慢。但是灵活

 

垃圾回收器(GC   Garbage  Collection)

  • 程序员不能调用垃圾回收器。但是可以通过System.gc()建议回收。
  • finallize:属于Object的方法,一般也不用去调

 

递归算法

  • 递归头:什么时候不调用自己
  • 递归体:什么时候调用自己

 

 

异常机制

  • try  catch(先小后大)  finally
  • 声明抛出异常:throws
  • 手动抛出异常:throw
  • 自定义异常
    1. extends  Exception或者他的子类

 

数组

  • 长度固定,不可变
  • 所有元素的类型一致
  • 元素类型可以为任意类型
  • 通过下标来引用相关元素。下标不能超过length-1
  • 数组也是对象。数组的元素可以看做对象的成员变量。所以,成员变量自动初始化的规则也适用于数组元素。
  • 多维数组:数组的元素是数组
  • 数组的三种初始化的方式:
    1. 动态初始化
    2. 静态初始化:  int[] a = {2,3,4}
    3. 默认初始化
  • Arrays类:包含了对数组元素的排序(注意Comparable接口)、查找。
  • 算法:
    1. 冒泡排序
    2. 二分法

 

容器

  • Collection
    1. List(有序,可重复)
      1. ArrayList 底层用数组实现。线程不安全,效率高
      2. LinkedList:底层用双向链表实现。线程不安全,效率高
      3. Vector:底层用数组实现。线程安全,效率低
    2. Set(无序,不可重复)
      1. HashSet(内部是使用HashMap实现)
  • Map
  1. 采用“key-value”来存储我们数据。
  2. HashMap 线程不安全,效率高
  3. HashTable线程安全,效率低
  • Iterator
  1. 通过他,可以实现遍历容器中元素
  • 泛型
  • Collections工具类

 

常用类

  • 包装类
  1. 实现了基本数据类型和对象的互相转化。
  2. 自动装箱、自动拆箱
  • String/StringBuilder/StringBuffer
  1. String:不可变字符序列
  2. StringBuilder:可变字符序列,线程不安全
  3. StringBuffer:可变字符序列,线程安全
  • 时间:Date、DateFormat、Calendar
  1. Date:使用毫秒数来表示我们的时间概念。
  2. DateFormat:实现Date对象跟String对象的互相转化(根据指定格式互相转化)
  3. Calendar:日期类。实现了将人的日期的概念跟Date的互相转化
  • File
  1. 代表文件或者目录的一个抽象
  • Math
  1. 数学类
  • 枚举
  1. 如果我们要定义一组常量,建议使用枚举。
  2. 不要学习和使用枚举的高级特性。

 

IO

  • InputStream
    1. FileInputStream
    2. ByteArrayInputStream
    3. ObjectInputStream (对象的序列化。实现接口Serializable)
    4. DataInputStream
    5. BufferedInputStream
  • OutputStream
    1. FileoutputStream
    2. ByteArrayOutputStream
    3. ObjectOutputStream
    4. DataOutputStream
    5. PrintStream
    6. BufferedOutputStream
  • Reader
    1. FileReader
    2. InputStreamReader:转换流:将字节流转化成字符流
    3. BufferedReader
  • Writer
    1. FileWriter
    2. OutputStreamWriter:转换流:将字节流转化成字符流
    3. BufferedWriter

 

多线程

  • 定义多线程类的两种方式:
    1. Extends  Thread
    2. Implements  Runnalbe(建议使用这种方式)
  • 线程的状态:
    1. 新生状态 new
    2. 就绪状态(调用start方法后)
    3. 运行状态
    4. 阻塞状态
      1. sleep:不会释放持有的对象锁
      2. join:等待另一个线程执行完成
      3. wait:会释放持有的对象锁
      4. synchronized:运行同步代码,但是没有获得指定对象的锁,于是进入指定对象的锁池等待。
    5. 终止
      1. 不建议使用:stop、destroy直接终止。
      2. 建议通过boolean变量,正常终止线程运行。
  • 线程的优先级
    1. 1-10.  默认是5  优先级可以设置
    2. 优先级低只是意味着调用的概率低,并不是不被调用。
  • 资源同步
  1. synchronized修饰方法、语句块
  • 死锁
  1. 建议不要同时持有多个对象的锁!
  • “生产者-消费者”模式

 

网络编程

  • InetAddress:封装了IP和DNS,没有端口。
  • InetSocketAddress:封装了IP和端口(端口使用2个字节标识,1024以下的不要使用)
  • URL:代表一个网络的资源
    1. openStream
  • TCP通讯
    1. 特点:面向连接、安全、稳定。
    2. ServerSocket
    3. Socket
  • UDP通信
    1. 特点:不面向连接。可能会丢数据。发送数据效率高。
    2. DatagramPacket:数据打包
    3. DategramSocket:数据发送和接收

 

GUI编程(AWT/SWING/SWT)

  • 组件
    1. Component(普通组件、容器)
  • 布局管理器
    1. FlowLayout
    2. BorderLayout
    3. CardLayout
    4. GridLayout
  • 事件
    1. 事件对象:KeyEvent、MouseEvent….
    2. 事件源对象:组件
    3. 监听器(一般采用匿名内部类来定义)
    4. KeyListener    KeyAdapter
    5. WindowListener   WindowAdapter
    6. MouseListener   MouseAdapter
    7. MouseMotionListener    MouseMotionAdapter
  • 菜单制作
    1. MenuBar
    2. Menu
    3. MemuItem
    4. CheckBoxMenuItem
    5. MenuShortCut  定义菜单项的快捷键

 

多媒体编程

  • 字体Font
  • Graphics
  • 做音视频处理:JMF

 

发布了23 篇原创文章 · 获赞 1 · 访问量 1866

猜你喜欢

转载自blog.csdn.net/xianyu9264/article/details/104341709
今日推荐