您的位置:首页 > 编程语言 > Java开发

JAVA 笔记(一)

2016-01-26 15:10 134 查看
Arrays 类, 数组工具类

Arrays.sort() 排序
Arrays.binarySearch() 二分查找,必须在排序的数组上进行查找
  在未排序数组上查找结果不确定!
 
  排序:sort 一般是指 由小到大的次序
  有序:order 只是有先后次序

Arrays.toString() 方便输出数组内容,不够灵活

Arrays.copyOf() 底层就是arraycopy 简洁方便,Java 5以后
System.arraycopy() 灵活,可以复制部分数组元素,可以在
  已经存在的数组之间进行复制

int[] ary = new int[8];
Arrays.fill(ary, 9);//填充

1 位运算

  >>>无符号右移   >>有符号右移   <<左移

 

  01101011 >> 2 == 01101011/2/2

 

  &与 |或  ~非

  01101010 & 00000011 == 01101010%4

  6a & 0x3

  6a % 4

 

  ~n = -n - 1

 

  ~-1 = 0

  ~-2 = 1

  ~-3 = 2

  ~-4 = 3

  ....

 

 

  案例: 从一个byte数组中的位置offset开始连续取出4个byte数据,

        拼接为一个int数据

         从一个byte数组中位置offset开始连续取出连续取出2个byte数据,

        拼接为一个char数据

 

  data = {05, 0a, 0b, ff, ff , ff, fe , 09, 4e, 2d}

 

  int i = 0xff ff ff fe; //-2

  char c = 0x4e2d;//'中'

OOP

  类:是物体的类型,本质上是对象数据结构的模板

  对象 :代表客观存在的物体,本质上是队内存中的数据结构

  引用:是对象的代词,本质上存储的对象堆内存地址,

         是操作对象的句柄,访问对象的属性,就是利用引用来访问

以上语法描述的是数据结构

方法:是对象的功能,本质上是对对象的数据进行计算实现功能

       方法就是数据结构的计算方法,算法。在方法中使用this

       引用被计算的当前对象。所有对象共享同一个方法区中的方法

      

构造器: 创建(初始化)对象的方法。本质上是分配堆内存,

   初始化对象属性。类一定有构造器!

  

  this. : 在构造器、方法中代表当前对象

  this():在构造器的第一行使用,用来调用当前类的其他构造器

继承

  好处之一:子类共享了父类的属性和方法

什么可以被继承:

   属性 都被继承(私有的子类中不可见)

   方法 私有的方法不能被继承

   构造器不能被继承 

构造器:

  子类构造器一定调用父类构造器

方法:

  “可以被继承的方法”可以被重写

  私有方法是不能被继承,不能被重写的

static  final

static 静态的:属于类的资源

静态关键字用于修饰类成员!只能在类体中使用

  静态 属性(成员变量):属于类的属性,在类加载期间初始化

  静态属性只有一份,类似于全局变量。使用类名访问静态属性,

  很少使用引用变量访问静态属性

 

  .java 源文件 -编译器(javac)-> .class 文件(字节码文件)

  -加载,类加载 java className(按需懒惰式加载每个用到

   的类) ->JVM->翻译为 指令+数据-> CPU->执行->结果

 

  静态 方法

  属于类的方法,使用类名直接访问,静态方法中没有隐含参数

  this,不能访问对象属性。可以类的成员(静态成员)

  常用于“工具方法”, “工厂方法”(简单理解:创建对象的方法)

 

  静态代码块

  是在类加载期间执行的代码块,用于初始化一次性资源。

 
final

  final 类  不能再继承

  final 方法 不能再重写

  final 变量 不能再修改

        初始化以后不能在修改的变量

  

  static final 常量

对象数组:是元素是对象(是对象的引用)的数组

 

  数组对象, 就是数组,是包含类型一致的一组变量的整体

  对象数组,是元素是对象类型的一个数组对象,每个元素是对象

  对象数组本身也是一个对象,是数组对象

 

  对象数组是一种数组(数组对象)

抽象类

  1 抽象方法:没有方法体的方法,使用abstract修饰,抽象方法必须在具体子类型中实现。
  2 包含抽象方法的类一定是抽象类。抽象类型一定使用关键字 abstract 修饰。

  3 抽象类不能实例化,

  4 抽象类可以定义变量,引用具体子类型的实例

  5 抽象类只能被继承,子类继承抽象类必须实现抽象方法

  实现抽象方法,就是一种重写

  6 抽象类的具体子类是多种多样的,是多态的

    抽象方法的实现是多种多样的,是多态的方法

   

抽象类语法的好处

  1 将多种子类的公共代码抽象到抽象类中

  2 abstract关键字可以避免类的实例化

  3 抽象类通过抽象方法来约束子类的方法

    TimerTask 包含run()方法,约束子类HiTask 中必须有

    run(),这个run()方法是Tim
4000
er类的协定:Timer类定时

       调用通过TimerTask 约定的run()方法
抽象类

  抽象方法:只有方法名和参数列表,没有方法体。

    用于描述抽象的功能,多用于功能设计。定义软件之间的约定

    功能。

   

    Timer 类约定:在适合时候调用TimerTask的抽象方法run()

    使用Timer只需要实现run方法就可以实现定时任务。

    Timer 定时的“回调”run方法实现定时任务

   

  一般把包含抽象方法的类定义为抽象类

  抽象类可以定义变量,不能直接实例化。

  抽象类只能被继承

  具体类继承抽象类时候必须“实现”(重写)全部抽象方法

接口

  接口相当于所有方法都是抽象方法,所有属性都是常量的抽象类

  接口中只能声明常量和抽象方法

  接口可以定义变量,可以引用实现类的实例

  接口不能直接实例化

  具体类实现接口必须实现全部的抽象方法。

  接口可以继承接口

  类可以实现多个接口,接口和实现类是父子类型关系

 

  具体类实现接口必须实现全部的抽象方法,就说明:接口约定了

  具体类的方法,约定了类的外部行为。

 

  接口可以实现软件组件之间的插接组装关系。

 
内部类

  定义在类内部的类

  用于在外部类中封装类的定义。

  内部类可以共享外部类的属性和方法。

  如:定时器任务的实现,经常采用内部类实现。

匿名内部类 也成为 匿名类

  语法非常简洁: new 类名(构造器参数){方法体} 

  匿名类容易与创建对象混淆。创建对象:new 类名(参数)

  匿名类是继承父类型并且同时实例化为子类对象,没有子类类名。

  匿名类可以继承类,继承抽象类,也可以实现接口。

  匿名类语法简洁,工作中非常常用。

  书写时要要注意括号配对情况。

   
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java