Java SE(二)

1. Java Vector类

向量是 java.util 包提供的一个非常重要的工具类。它对应于类似数组的顺序存储的数据结构。
它允许不同类型的元素共存于一个变长数组中,因此可以看作是对不同类型元素按照动态数组进行处理。
每个 Vector 类的对象可以表达一个完整的数据序列。
具体使用方法见:菜鸟教程 Java Vector类

2. 字符串类型

Java 中提供了 String 和 StringBuffer 类型,它们都是类,因此 Java 中的字符串是一个真正的对象。

2.1 String 与 StringBuffer 的区别

Java 提供的标准包 java.lang 中封装了 String 和 StringBuffer,分别用于处理 不变字符串可变字符串
不变字符串:字符串一旦创建,其内容就不能改变。

2.2 String 类

(1)常见 String 类的获取功能:

  • public int length(): 获取字符串的长度。
  • public char charAt(int index): 获取指定索引位置的字符
  • public int indexOf(int ch): 返回指定字符在此字符串中第一次出现处的索引。
  • public int indexOf(String str): 返回指定字符串在此字符串中第一次出现处的索引。
  • public int indexOf(int ch,int fromIndex):返回指定字符在此字符串中从指定位置后第一次出现处的索引。
  • public int indexOf(String str,int fromIndex): 返回指定字符串在此字符串中从指定位置后第一次出现处的索引。
  • public String substring(int start): 从指定位置开始截取字符串,默认到末尾。
  • public String substring(int start,int end): 从指定位置开始到指定位置结束截取字符串。

(2)常见 String 类的判断功能

  • public boolean equals(Object obj): 比较字符串的内容是否相同,区分大小写
  • public boolean equalsIgnoreCase(String str): 比较字符串的内容是否相同,忽略大小写
  • public boolean contains(String str): 判断字符串中是否包含传递进来的字符串
  • public boolean startsWith(String str): 判断字符串是否以传递进来的字符串开头
  • public boolean endsWith(String str): 判断字符串是否以传递进来的字符串结尾
  • public boolean isEmpty(): 判断字符串的内容是否为空串""。

(3)常见 String 类的转换功能

  • public byte[] getBytes(): 把字符串转换为字节数组。
  • public char[] toCharArray(): 把字符串转换为字符数组。
  • public static String valueOf(char[] chs): 把字符数组转成字符串。
  • public static String valueOf(int i): 把int类型的数据转成字符串。(String类的valueOf方法可以把任意类型的数据转成字符串。)
  • public String toLowerCase(): 把字符串转成小写。
  • public String toUpperCase(): 把字符串转成大写。
  • public String concat(String str): 把字符串拼接。

(4)常见String类的其他常用功能

  • public String replace(char old,char new) 将指定字符进行互换
  • public String replace(String old,String new) 将指定字符串进行互换
  • public String trim() 去除两端空格
  • public int compareTo(String str) 会对照ASCII 码表 从第一个字母进行减法运算 返回的就是这个减法的结果,如果前面几个字母一样会根据两个字符串的长度进行减法运算返回的就是这个减法的结果,如果连个字符串一摸一样 返回的就是0
  • public int compareToIgnoreCase(String str) 跟上面一样 只是忽略大小写的比较.

2.3 StringBuffer 类

StringBuffer 类处理可变字符串,当修改一个StringBuffer类的字符串时,不用再创建一个新的字符串对象,而是直接操作原字符串。
系统在为 String 类对象分配内存时,按照对象中所含字符的实际个数等量分配。而为 StringBuffer 类对象分配内存时,除去字符所占空间外,再另加 16 个字符大小的缓冲区。对于 StringBuffer 类对象,使用 length() 方法可获得字符串长度,另外,还有 capacity() 方法返回缓冲区的容量。一般的,StringBuffer 的长度是指存储在其中的字符个数,容量是指缓冲所能容纳的最大字符数

3. 默认的构造方法

每个类都必须至少有一个构造方法。如果程序员没有为类定义构造方法,则系统会自动为该类生成一个默认的构造方法。默认构造方法的参数列表及方法体均为空,所生成的对象属性值也为零或空。

4. finalize() 方法

finalize() 方法属于 Object类,它可被所有类使用。当对象实例不被任何变量引用时,Java 会自动进行“垃圾回收”,收回该实例所占用的内存空间。
一个对象有它的生存期,在 Java 程序中,程序员需要使用 new 来正式说明对象的开始,但对象的结束不需要程序员明确说明,这由系统自动判定。这就是所谓的“自动垃圾回收”。
系统时刻监视每个对象的使用情况,掌握每个对象实例的引用数。一旦为零,则自动消亡这个对象。在对对象实例进行垃圾收集之前,Java 自动调用对象的 finalize() 方法,它相当于 C++ 中的析构函数,用来释放对象所占用的系统资源。
finalize()方法的说明方式如下:

protected void finalize () throws Throwable

5. Object 类提供的方法

Object 类是 Java 程序中所有类的直接或间接父类,也是类库中所有类的父类,处在类层次最高点。
所有其他的类都是从 Object 类派生出来的,所以 Object 类包含了所有 Java 类的公共属性,其构造方法是 Object(),其中主要有如下方法:

  • public final Class getClass(); 获取当前对象所属的类信息,返回 Class 对象。
  • public String toString(); 按字符串对象返回当前对象本身的有关信息。
  • public boolean equals(Object obj); 比较两个对象是否是同一个对象,则返回 true。
  • protected Object clone(); 生成当前对象的一个副本,并返回这个复制对象。
  • public int hashCode(); 返回该对象的哈希码值。
  • protected void finalize() throws Throwable; 定义回收当前对象时所需完成的资源释放工作。

6. Java 包

一个 Java 源代码文件称为一个编译单元。一个编译单元中只能有一个 public 类,且该类名与文件名相同。编译单元中的其他类是该主 public 类的支撑类。经过编译,编译单元中的每个类都产生一个 .class 文件。Java 的工作程序是一系列的 .class 文件,Java 解释器负责寻找、加载和解释这些文件。
在 Java 中必须要有一种对名字空间的完全控制机制,以便可以建立一个唯一的类名。这就是 包机制,用于类名空间的管理。

7. 类方法

如果需要用到一个尚未创建对象实例就去引用它的程序代码,那么标记上关键字 static 即可实现。

class GeneralFunction {
   public static int addUp(int x, int y){
       return x+y;
   }
}
public class UseGeneral {
   public static void main(String args[]){
       int a = 9;
       int b = 10;
       int c = GeneralFunction.addUp(a,b);
       System.out.println(c); // 输出:19
   }
}

调用方法时,前缀使用的是类名,而不是对象实例名。
若从当前类中的其他方法中调用,则不需要写类名,可以直接写方法名

7.1 使用静态方法时,有两个特别的限制:

  • 由于静态方法可以在没有定义它所从属的类的对象的情况下加以调用,故不存在 this 值。因此,一个静态方法只能使用 其内部定义的参数 或 静态变量。
  • 静态方法不能被重写。也就是说在这个类的子孙类中,不能有相同的名称、相同参数的方法。

8. 抽象类 与 接口

8.1 抽象类

抽象类中的方法有抽象方法,这种方法只有方法的声明,而没有方法的实现。这些方法将在抽象类的子类中被实现。
抽象类中也有非抽象方法,反之,不能在非抽象类中声明抽象方法。
抽象类也可以包含常规类能够包含的任何东西。
如果一个抽象类除了抽象方法以外什么都没有,则使用接口更合适。

  • 抽象类的定义如下:
public abstract class Shape {
   //定义体
} //为使此类有用,它必须有子类。
  • 抽象方法定义如下:
public abstract <returnType> <methodName>(参数列表);

8.2 接口

接口是抽象类功能的另一种实现方法,可将其想象为一个“纯”的抽象类。它允许创建者规定一个类的基本形式,包括方法名、自变量列表以及返回类型,但不规定方法主体。
接口中的所有方法均为 抽象方法,都没有方法体。
Java 中定义了接口的概念,Java 通过允许一个类实现(implements)多个接口从而实现了比多重继承更加强大的能力,并具有清晰的结构。

posted @ 2020-10-26 20:26  John_yan15  阅读(114)  评论(0编辑  收藏  举报