Java接口及常用类

    科技2024-03-19  95

    Java接口 常用类

    接口接口与类相似点接口与类的区别接口特性抽象类和接口的区别接口的声明接口的实现接口的继承接口的多继承 常用类String类Arrays类Math类

    接口

      接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。   接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。   除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。   接口无法被实例化,但是可以被实现。一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。另外,在 Java 中,接口类型可用来声明一个变量,他们可以成为一个空指针,或是被绑定在一个以此接口实现的对象。

    接口与类相似点

    一个接口可以有多个方法。接口文件保存在 .java 结尾的文件中,文件名使用接口名。接口的字节码文件保存在 .class 结尾的文件中。接口相应的字节码文件必须在与包名称相匹配的目录结构中。

    接口与类的区别

    接口不能用于实例化对象。接口没有构造方法。接口中所有的方法必须是抽象方法。接口不能包含成员变量,除了 static 和 final 变量。接口不是被类继承了,而是要被类实现。接口支持多继承。

    接口特性

      接口中每一个方法也是隐式抽象的,接口中的方法会被隐式的指定为 public abstract(只能是 public abstract,其他修饰符都会报错)。   接口中可以含有变量,但是接口中的变量会被隐式的指定为 public static final 变量(并且只能是 public,用 private 修饰会报编译错误)。   接口中的方法是不能在接口中实现的,只能由实现接口的类来实现接口中的方法。

    抽象类和接口的区别

    抽象类中的方法可以有方法体,就是能实现方法的具体功能,但是接口中的方法不行。抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是 public static final 类型的。接口中不能含有静态代码块以及静态方法(用 static 修饰的方法),而抽象类是可以有静态代码块和静态方法。一个类只能继承一个抽象类,而一个类却可以实现多个接口。

    接口的声明

    接口的声明语法格式如下:

    [可见度] interface 接口名称 [extends 其他的接口名] { // 声明变量 // 抽象方法 }

    接口的实现

      当类实现接口的时候,类要实现接口中所有的方法。否则,类必须声明为抽象的类。

      类使用implements关键字实现接口。在类声明中,Implements关键字放在class声明后面。

    实现一个接口的语法,可以使用这个公式:

    ...implements 接口名称[, 其他接口名称, 其他接口名称..., ...] ...

    接口的继承

      一个接口能继承另一个接口,和类之间的继承方式比较相似。接口的继承使用extends关键字,子接口继承父接口的方法。

    下面的Sports接口被Hockey和Football接口继承:

    // 文件名: Sports.java public interface Sports { public void setHomeTeam(String name); public void setVisitingTeam(String name); } // 文件名: Football.java public interface Football extends Sports { public void homeTeamScored(int points); public void visitingTeamScored(int points); public void endOfQuarter(int quarter); } // 文件名: Hockey.java public interface Hockey extends Sports { public void homeGoalScored(); public void visitingGoalScored(); public void endOfPeriod(int period); public void overtimePeriod(int ot); }

      Hockey接口自己声明了四个方法,从Sports接口继承了两个方法,这样,实现Hockey接口的类需要实现六个方法。

      相似的,实现Football接口的类需要实现五个方法,其中两个来自于Sports接口。

    接口的多继承

      在Java中,类的多继承是不合法,但接口允许多继承。

      在接口的多继承中extends关键字只需要使用一次,在其后跟着继承接口。 如下所示:

    public interface Hockey extends Sports, Event

      以上的程序片段是合法定义的子接口,与类不同的是,接口允许多继承,而 Sports及 Event 可能定义或是继承相同的方法

    常用类

    String类

    概述   java.lang.String 类代表字符串。Java程序中所有的字符串文字(例如 “abc” )都可以被看作是实现此类的实 例。   类 String 中包括用于检查各个字符串的方法,比如用于比较字符串,搜索字符串,提取子字符串以及创建具有翻 译为大写或小写的所有字符的字符串的副本。 特点

    字符串不变:字符串的值在创建后不能被更改。 String s1 = "abc"; s1 += "d"; System.out.println(s1); // "abcd" // 内存中有"abc","abcd"两个对象,s1从指向"abc",改变指向,指向了"abcd"。 因为String对象是不可变的,所以它们可以被共享。 String s1 = "abc"; String s2 = "abc"; // 内存中只有一个"abc"对象被创建,同时被s1和s2共享 “abc” 等效于 char[] data={ ‘a’ , ‘b’ , ‘c’ } 。 例如: String str = "abc"; 相当于: char data[] = {'a', 'b', 'c'}; String str = new String(data); // String底层是靠字符数组实现的。

    使用 查看类   java.lang.String :此类不需要导入。 查看构造方法   public String() :初始化新创建的 String对象,以使其表示空字符序列。 public String(char[] value) :通过当前参数中的字符数组来构造新的String。 public String(byte[] bytes) :通过使用平台的默认字符集解码当前参数中的字节数组来构造新的 String。 构造举例,代码如下:

    // 无参构造 String str = new String(); // 通过字符数组构造 char chars[] = {'a', 'b', 'c'}; String str2 = new String(chars); // 通过字节数组构造 byte bytes[] = { 97, 98, 99 }; String str3 = new String(bytes);

    Arrays类

    概述   java.util.Arrays 此类包含用来操作数组的各种方法,比如排序和搜索等。其所有方法均为静态方法,调用起来 非常简单。 操作数组的方法 public static String toString(int[] a) :返回指定数组内容的字符串表示形式。

    public static void main(String[] args) { // 定义int 数组 int[] arr = {2,34,35,4,657,8,69,9}; // 打印数组,输出地址值 System.out.println(arr); // [I@2ac1fdc4 // 数组内容转为字符串 String s = Arrays.toString(arr); // 打印字符串,输出内容 System.out.println(s); // [2, 34, 35, 4, 657, 8, 69, 9] }

    public static void sort(int[] a) :对指定的 int 型数组按数字升序进行排序。

    public static void main(String[] args) { // 定义int 数组 int[] arr = {24, 7, 5, 48, 4, 46, 35, 11, 6, 2}; System.out.println("排序前:"+ Arrays.toString(arr)); // 排序前:[24, 7, 5, 48, 4, 46, 35, 11, 6, 2] // 升序排序 Arrays.sort(arr); System.out.println("排序后:"+ Arrays.toString(arr)); // 排序后:[2, 4, 5, 6, 7, 11, 24, 35, 46, 48] }

    Math类

    概述   java.lang.Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。类似这样的工具 类,其所有方法均为静态方法,并且不会创建对象,调用起来非常简单。 基本运算的方法 *public static double abs(double a) :返回 double 值的绝对值。 *

    double d1 = Math.abs(5); //d1的值为5 double d2 = Math.abs(5); //d2的值为5

    public static double ceil(double a) :返回大于等于参数的小的整数。

    double d1 = Math.ceil(3.3); //d1的值为 4.0 double d2 = Math.ceil(3.3); //d2的值为 ‐3.0 double d3 = Math.ceil(5.1); //d3的值为 6.0

    public static double floor(double a) :返回小于等于参数大的整数。

    double d1 = Math.floor(3.3); //d1的值为3.0 double d2 = Math.floor(3.3); //d2的值为‐4.0 double d3 = Math.floor(5.1); //d3的值为 5.0

    public static long round(double a) :返回接近参数的 long。(相当于四舍五入方法)

    long d1 = Math.round(5.5); //d1的值为6.0 long d2 = Math.round(5.4); //d2的值为5.0

    练习   请使用 Math 相关的API,计算在 -10.8 到 5.9 之间,绝对值大于 6 或者小于 2.1 的整数有多少个?

    public class MathTest { public static void main(String[] args) { // 定义小值 double min =10.8; // 定义大值 double max = 5.9; // 定义变量计数 int count = 0; // 范围内循环 for (double i = Math.ceil(min); i <= max; i++) { // 获取绝对值并判断 if (Math.abs(i) > 6 || Math.abs(i) < 2.1) { // 计数 count++; } } System.out.println("个数为: " + count + " 个"); } }
    Processed: 0.010, SQL: 8