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 类名(参数)
匿名类是继承父类型并且同时实例化为子类对象,没有子类类名。
匿名类可以继承类,继承抽象类,也可以实现接口。
匿名类语法简洁,工作中非常常用。
书写时要要注意括号配对情况。
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对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树