选择题
上图都是fun方法且参数都只有一个,目的是与父类中的fun方法构成重写。
重写:方法返回值+方法名+参数列表。
图中访问修饰限定符有差别,如果发生重写,子类的访问修饰限定符的权限大于等于父类的。
答案:D
访问修饰限定符权限:private<默认访问权限(包访问权限)<protected<public
成员变量没有初始化,默认的值是0.
答案:D
被private修饰只能在当前类使用。
答案:C
A:成员变量通过引用对象访问。
B:成员方法通过实例化对象访问。
C:错误,通过类名访问需要静态方法。
D:是静态方法所以能通过类名访问。
答案:C
A派生B,B派生C。所以A与B是继承关系,B与C是继承关系,A与C也构成继承关系。
图中声明均为父类引用引用子类对象,所以声明全部是正确的。
答案:D
重点题
难道题目错啦???不可能,绝对不可能。
查看了toLowerCase方法源码,这个方法是把大写字母变小写字母,本身是小写字母返回this,否则返回一个新的对象。然后原来的字母在定义的常量在常量池中与新定义的对象在堆区中,相比较肯定结果是false。
答案:B
调用的是静态方法。对于静态成员变量和静态方法,它们的存储区域是方法区(Method Area)。普通成员变量,存储在对象的堆内存中。普通方法,方法的字节码存储在方法区,方法的执行在栈内存中进行。
即使实例化的对象不指向任何引用为NULL;还是能通过编译,正常运行。
答案:A
不能存在于static方法和static语句块,因为static方法不指向任何引用(this和super都是指向当前引用)
答案:A
static修饰符修饰的变量叫类变量,在方法里面不能定义类变量。
答案:D
A:构成了方法的重载,同时是抽象方法不需要花括号.
B:对成员变量的赋值要放在方法里面.
C:不是抽象方法所以要有花括号.
D:抽象方法不能有花括号
答案:A
编程题
组队竞赛
- ACM编程题 标题:组队竞赛 | 时间限制:1秒 | 内存限制:32768K
牛牛举办了一次编程比赛,参加比赛的有3n个选手,每个选手都有一个水平值a_i.现在要将这些选手进行组队,
一共组成n个队伍,即每个队伍3人.牛牛发现队伍的水平值等于该队伍队员中第二高水平值。
例如:
一个队伍三个队员的水平值分别是3,3,3.那么队伍的水平值是3
一个队伍三个队员的水平值分别是3,2,3.那么队伍的水平值是3
一个队伍三个队员的水平值分别是1,5,2.那么队伍的水平值是2
为了让比赛更有看点,牛牛想安排队伍使所有队伍的水平值总和最大。
如样例所示:
如果牛牛把6个队员划分到两个队伍
如果方案为:
team1:{1,2,5}, team2:{5,5,8}, 这时候水平值总和为7.
而如果方案为:
team1:{2,5,8}, team2:{1,5,5}, 这时候水平值总和为10.
没有比总和为10更大的方案,所以输出10.
输入描述:
输入的第一行为一个正整数n(1 ≤ n ≤ 10^5)
第二行包括3n个整数a_i(1 ≤ a_i ≤ 10^9),表示每个参赛选手的水平值.
输出描述:
输出一个整数表示所有队伍的水平值总和最大值.
示例1:
输入
2
5 2 8 5 1 5
输出
首先读懂题目,每队有3个数,水平值为每队的中位数.如果有多条队伍,要算水平值总和最大值,需要把整个队伍所有值进行排序,然后每条队伍的水平值相加就是水平值最大值.本题的主要思路是贪心算法,以这里的贪心就是保证每组的第二个值取到能选择的最大值就可以,我们每次尽量取最大,但是最大的数不可能是中位数,所以退而求其次,取 每组中第二大的
贪心算法指的是不从整体最优上加以考虑,算法得到的是在某种意义上的局部最优解。
arr.len-2(i+1)*
这个公式可以拿到排序过后的每组中位数即水平值.
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
while (scan.hasNext()){
int n= scan.nextInt();
long[] array=new long[3*n];
for(int i=0;i<(3*n);i++){
array[i]= scan.nextLong();
}
//排序方法
Arrays.sort(array);
long sum=0;
for(int i=0;i<n;i++){
//求平均值公式
sum+=array[array.length-(2*(i+1))];
}
System.out.println(sum);
}
}