JAVA 笔记(一)

简介: JAVA 笔记(一)

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()方法是Timer类的协定:Timer类定时

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

抽象类

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

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

   功能。

 

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

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

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

 

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

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

 抽象类只能被继承

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


接口

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

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

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

 接口 不能直接实例化

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

 接口 可以继承接口

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

 

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

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

 

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

 

内部类

 定义在类内部的类

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

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


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


匿名内部类 也成为 匿名类

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

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

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

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

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

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

相关文章
|
2月前
|
前端开发 Java 图形学
[笔记] 疯狂JAVA讲义(第3版)第11章 AWT编程
[笔记] 疯狂JAVA讲义(第3版)第11章 AWT编程
|
6天前
|
存储 安全 Java
java集合框架学习笔记
这篇文章是关于Java集合框架的详细学习笔记,包括集合的概念、使用方式以及List、Set和Map等集合类型的具体实现和特点。
java集合框架学习笔记
|
2月前
|
Java 索引
[笔记] 疯狂JAVA讲义(第3版)第4章 流程控制与数组
[笔记] 疯狂JAVA讲义(第3版)第4章 流程控制与数组
|
2月前
|
Java 程序员 API
[笔记] 疯狂JAVA讲义(第3版)第3章 数据类型和运算符
[笔记] 疯狂JAVA讲义(第3版)第3章 数据类型和运算符
|
2月前
|
算法 Java 索引
12.12_黑马数据结构与算法笔记Java
12.12_黑马数据结构与算法笔记Java
24 1
|
2月前
|
Java BI C#
技术笔记:SM4加密算法实现Java和C#相互加密解密
技术笔记:SM4加密算法实现Java和C#相互加密解密
37 0
|
2月前
|
Java Maven Python
技术笔记:Lombok介绍、使用方法和总结
技术笔记:Lombok介绍、使用方法和总结
39 0
|
2月前
|
数据可视化 Java 测试技术
[笔记] 疯狂JAVA讲义(第3版) 第2章 理解面向对象
[笔记] 疯狂JAVA讲义(第3版) 第2章 理解面向对象
|
2月前
|
IDE Oracle Java
[笔记] 疯狂JAVA讲义(第3版) 第1章 Java语言概述与开发环境
[笔记] 疯狂JAVA讲义(第3版) 第1章 Java语言概述与开发环境
|
2月前
|
存储 设计模式 前端开发
[笔记] 疯狂JAVA讲义(第3版)第12章 Swing编程
[笔记] 疯狂JAVA讲义(第3版)第12章 Swing编程