抽象数据类型(ADT)是一种能够对使用者隐蔽数据表示的数据类型。
对象
所有对象都有三大特性:
- 状态:即数据类型中的值
- 标识:能够将一个对象区别于另一个对象
- 行为:数据类型的操作
创建对象:每当用例调用了new,系统就会:
- 为新的对象分配存储空间
- 调用构造函数初始化对象中的值
- 返回该对象的一个引用
方法的每次触发都是和一个对象相关的
实例方法和静态方法:实例方法可以访问并操作实例变量
对比 | 实例方法 | 静态方法 |
---|---|---|
举例 | heads.increment() | Math.sqrt(2.0) |
调用方式 | 对象名 | 类名 |
参量 | 对象的引用和方法的参数 | 方法的参数 |
主要作用 | 访问或改变对象的值 | 计算返回值 |
使用对象
- 声明该类型的变量,以用来引用对象
- 使用关键字new触发能够创建该类型的对象的一个构造函数
- 使用变量名在语句或表达式中调用实例方法
将对象作为返回值
Java中的方法只能有一个返回值,如果我们想返回多个值怎么办?返回对象就可以了
对象数组实际上是对象的引用
组成的数组
构造函数
构造函数类似于静态方法,但它能够直接访问实例变量并且没有返回值。一般来说,构造函数的作用是初始化实例变量,每个构造函数都将创建一个对象并向调用者返回一个该对象的引用。
作用域:
- 参数变量的作用域是整个方法
- 局部变量的作用域是当前代码段中它的定义之后的所有语句
- 实例变量为该类的对象保存了数据类型的值,作用域是整个类
Java的字符串API
public class String | |
---|---|
String() | 创建一个空字符串 |
int length() | 字符串长度 |
int charAt(int i) | 第i个字符 |
int indexOf(String p) | p第一次出现的位置,没有则返回-1 |
int indexOf(String p, int i) | p在i个字符后第一次出现的位置 |
String concat(String t) | 将t附在该字符串末尾 |
String subString(int i, int j) | 返回第i到j-1个字符作为字符串 |
String[] spilt(String delim) | 使用delim分隔符切分字符串 |
int compareTo(String t) | 比较字符串 |
boolean equals(String t) | 该字符串的值和t的值是否相等 |
int hashCode() | 散列值 |
判断字符串是否是一条回文
web exercise
6 A string s is a circular rotation of a string t if it matches when the characters are circularly shifted by any number of positions; e.g., ACTGACG
is a circular shift of TGACGAC
, and vice versa. Detecting this condition is important in the study of genomic sequences. Write a program that checks whether two given strings s and t are circular shifts of one another.
solution:
|
|
7 recursive(递归的)
loop: