java 隐式调用和显示调用

当我们在调用类的构造器来创建对象的时候,首先要调用的是父类的非静态的初始化块,接着会调用构造器,但是父类的构造器可能有多个,也就是重载,当调用完父类的非静态初始化块之后,将会调用的是当前类的非静态初始化块然后是自身的构造函数,调用父类的构造函数就有两种调用的方式,一个是显示调用,另一个是隐式调用,下面通过代码来说一下这两者间的区别。

class Person {
public Person (){
}
public Person (String name){
system.out.println(name);
}
}
class Student extends Person {
public Student{
super ("IT90s最前线");
}
public Student{
this();
}
public Student{

}

}
了解了这段代码的输出情况,你也就是了解了显示调用和隐式调用,这里出现的关键字super,super调用用于显示调用父类的构造器,this则用来显示调用本类中的另一个重载的构造器,这两种构造器只能在构造器中使用,而且出现在构造函数的第一行代码中,因此构造器中两种关键字只能用其中一个,而且每个只能调用一次。

KWIC(Keyword In Context)是一种文本处理方法,它可以将输入的文本中的每个单词按照字母表顺序进行排序,然后将每个单词所在的上下文进行显示,以便用户更好地理解文本。基于隐式调用风格的KWIC实现,可以将输入文本作为一个参数传递给一个函数,然后在函数内部进行处理,并将结果返回。 以下是一个基于隐式调用风格的KWIC的Java实现: ```java import java.util.ArrayList; import java.util.Collections; public class Kwic { public static void main(String[] args) { String input = "The quick brown fox\njumps over the lazy dog"; ArrayList<String> lines = new ArrayList<String>(); Collections.addAll(lines, input.split("\n")); ArrayList<String> sorted = kwic(lines); for (String line : sorted) { System.out.println(line); } } public static ArrayList<String> kwic(ArrayList<String> lines) { ArrayList<String> result = new ArrayList<String>(); for (String line : lines) { String[] words = line.split(" "); for (int i = 0; i < words.length; i++) { StringBuilder sb = new StringBuilder(); for (int j = i; j < words.length + i; j++) { int index = j % words.length; sb.append(words[index] + " "); } result.add(sb.toString().trim()); } } Collections.sort(result); return result; } } ``` 在这个实现中,我们使用了Java的ArrayList来存储输入文本中的每一行,然后将每一行按照空格进行分割,得到所有的单词。接着,我们使用两个循环来生成所有可能的排序结果,并将结果存储在一个新的ArrayList中。最后,我们使用Java的Collections中的sort方法对结果进行排序,并返回排序后的结果。 在main函数中,我们使用一个简单的字符串作为输入,并调用kwic函数来得到排序后的结果。最后,我们遍历排序后的结果,并将每个结果打印到控制台上。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值