javaSE之总结(一)

 一 SE的知识体系:

  1. java基础:
    1. 一基础语法
      1. 8个基本数据类型——>8个包装类
      2. 数据类型转换:
        1. 自动转换(从小到大)
        2. 强制转换(从大到小)
        3. 注意:int 和char
      3. 分支与判断:
        1. if(){}
        2. if (){}else{}
        3. if(){}else if(){}...else{}//多次判断
        4. if(){if(){}}else{}  //嵌套判断
        5. 判断条件 ?表达式1 :表达式2;//三目运算
        6. switch(变量:int byte  enum char String){case : ; break;}    注意: break的使用!
        7. 循环:(重点,必须掌握)
          1. while
          2. do while
          3. for
          4. for(数据类型 变量: 数组或集合)(foreach)                                                        例如:以下的代码不推荐(效率低)                                                                          for(int i=0;i<list.size;i++){                                                                                     list.get(i);                                                                                                 }                                                                                                                    //以上的代码应改为(效率高)                                                                      int  size = list.size();                                                                                      for(int i=0;i<size;i++){                                                                                         list.get(i);                                                                                                }
        8. 数组:是引用类型
          1. 特点:内存连续、通过下标操作、数据类型相同
          2. int[] arr = new int[];
          3. int[] arr = {2,3,4,4};
          4. int[] arr = new int[]{1,2,3};
    2. 类与对象:
      1. 对象:是一个具体的拥有一个特征和行为的事物。
      2. 类:是抽象的,某些具有相同的特征和行为的实务的集合(抽象)。
      3. 类是模板,对象是通过类创建出来的。
      4. java的程序的最小单位是类。
      5. 类的构成:
        1. 属性
          1. 读写属性(常用的)
          2. 只读(保护)
          3. 只写(隐藏:安全)
          4. 静态属性(类属性)
        2. 方法
          1. 实例方法
          2. 类(静态)方法
          3. 构造方法                                                                                                        注意:1:无返回值                                                                                                   2:名称与类同名                                                                                             3:不能显示调用                                                                                             4: jvm提供一个默认构造器,一旦声明带参构造,默认构造就不存在
          4. 抽象方法
            1. 特点:没有方法体(实现)
            2. 作用:让方法重写
          5. 本地方法(native:调用本地api)
          6. 代码块
            1. {}//构造块
            2. static{//静态块}

当我们创建(实例化)对象时,先执行类加载器(把要创建的类的对应的class文件加载到内存中,jvm完成对class文件的检验工作),首先执行静态块,然后执行构造块,最后执行构造器。

A  a = new A();

-------------------------------------------------------------------------------------------------------------------

class A{

static{

//静态块:只执行一次且在类被加载后马上执行

//优先于构造块

//全局的且比较消耗资源的:例如数据库连接

}

{

//构造块,每次创建对象时,都会调用

//优先于构造方法执行的

}

public void show(){

A a = new A();

a.show();

disp();//OK

//A();//显示调用构造器,错误!

}

public static void disp(){

A.disp();

show();//不能: 静态只能访问静态

}

}

-------------------------------------------------------------------------------------------------------------------

2二  面向对象:

  1. 封装:隐藏代码实现
  2. 继承:代码重用
  3. 多态:多种实现
    1. 封装通过private且提供对应的get和set方法
    2. 类就是对数据和操作的封装
    3. 继承的实现:通过extends实现
    4. 继承是 is a的关系
      1. 继承的注意:
        1. 子类会继承父类(除构造)以外的所有成员(包括私有的)。
        2. 子类就可以对父类的方法进行Override(重写)
        3. 子类要比父类"大"(子类包含父类)
        4. 父类与子类存在的类型转换(向下转型)instanceof
        5. 子类在访问父类的protected的属性和方法时,不能通过父类的引用进行调用,可以使用this或super直接调用
        6. java的继承是单根继承(一个类最多只能有一个父类,一个父类可以有多个子类)
        7. 当使用父类的引用创建子类对象时(多态的调用),此时调用的发放是子类的
        8. 属性是不支持重写的!

——————————————————————————————————————

class Base{

public int m = 100;

public void show(){}

}

class Child extends Base{

public  int m = 200;

public void show();

}

class Test{

Base base = new Child();

base.m;    //调用的m是父类的m

base.show();       //子类的show() ——>重写

}

——————————————————————————————————————

区别                                        重载                               重写

英文                                  Overload                        Override

范围:                                   本类                               父子类

方法名                                   相同                              相同

返回值                                 无关                                   相同

参数列表                                必须不同                     相同

访问修饰符                         无关                        子类重写父类的方法必                                                                            须大于等于父类的方法

-------------------------------------------------------------------------------------------------------------------

多态:(非常重要!!!)

  1. 多态的实现方式:
    1. 抽象类
    2. 接口
  2. 多态的表现形式:
    1. 参数是父类(接口) 特点:发生在编译器,执行效率高,不灵活
    2. 返回值是父类或接口   特点:发生在运行时,执行效率不高,灵活

-------------------------------------------------------------------------------------------------------

区别                                        抽象类                                       接口

英文                                    abstract class                           interface

抽象层次                              部分抽象                                    完全抽象

与类的关系                            is a                                         can   do

构造方法                            有                                                    无

作用                        更强调对属性的封装               更强调对方法的封装

(继承:重写方法)

-------------------------------------------------------------------------------------------------------------------

相同

不能实例化

可以实现多态                     可以有多个子类              可以有多个实现类

----------------------------------------------------------------------------------------------------------------

3 三基本API

Object类

toString——>自定义该对象的字符串描述(强烈推荐重写)

equals——>进行对象之间(值)的比较

hashCode——>返回该对象的堆的十进制地址

java.util.*

a 日期、时间——>Date——>

b 随机数:java.util.Random  nextInt(边界值)

-------------------------------------------------------------------------------------------------------------

Calendar c = Calendar.getInstance();

System.out.println(c.get(Calendar.YEAR));

System.out.println(c.get(Calendar.MONTH)+1);//0-11

System.out.println(Calendar.DATE);

//c.add(Calendar.DATE,40);

GregorianCalendar calendar = new GregorianCalendar(Locale.CHINA);

System.out.println(calendar.isLeapYear(2016));//判断2016是否是闰年

------------------------------------------------------------------------------------------------------------------

包装类:目的提供一些类型之间饿的转换操作

装箱:把值类型赋值给引用类型

拆箱:把装过箱的引用赋值给值类型

装箱与拆箱的目的:简化编程

4四IO

  1. 四个抽象类:
    1. 字节流:
      1. InputStream
      2. OutputStream
    2. 字符流:
      1. Reader
      2. Writer
        1. 特别强调:
          1. 缓冲流的使用(利用缓冲机制,提供读写效率)
            1. BufferedInputStream
            2. BufferedOutputStream
            3. BufferedReader
            4. BufferedWriter
          2. 对象(集合)的读写:
            1. 序列化:ObjectOutputStream
            2. 反序列化:ObjectInputStream
            3. 注意:一个类必须实现java.io.Serializable(序列化接口),才可以进行序列化操作
  2. 三个步骤:
    1. 创建流
    2. 读写
    3. 关闭流

5五 集合

  1. 集合的构成
    1. 接口
    2. 实现(类)
    3. 算法(collection类)
  2. 集合的框架:java.util.Iterable

——java.util.Collection

——List(有序、可重复)

——ArrayList(异步) 以数组结构来组织的

——Vector(同步)

——Stack(栈)

——LinkedList 是以双向链表结构 来存放的

——Set(无序,不可重复)

——Hashset()通过哈希算法将该值换算为数组的下标索引
——Treeset() 使用二叉树来存放和管理数据

——Map

——Hashmap(异步、可存放null)

——Hashtable(同步、不能存null)

迭代key: keySet()
迭代value: values()
迭代k v : entrySet()

posted @ 2016-03-02 22:59  绅振  阅读(125)  评论(0)    收藏  举报