本文将为大家介绍AP计算机A考试历年必内容,整理包括Array、Flow Control等重点的考法与格式。今年AP计算机A考试前最后一个winter vacation就快到了,赶快吃透这份复习纲要,朝5分冲刺吧。
AP计算机A考试形式
AP计算机科学A包括两块:
第一部分:多选题(长达90分钟的40道多选题) 占比50%
第二部分:解答题(长达90分钟的4道解答题) 占比50%
考试内容覆盖广泛,基本每章节都会考到,考试形式灵活多变,尤其在选择题中表现突出。这就要求大家在平时学习中掌握重点,全面学习,不能偏废某些章节。
AP计算机A是偏重于实践性的编程,注重考查代码在多态,继承等在算法上的具体实现,以及数据结构与算法,如链式结构,栈,堆等,因此需要专门学习一门计算机语言(java)。
AP计算机A考试核心考点整理
1Array 数组
1.1Array的声明和创建
//创建一个长度为10的intArray
int scores[]=new int[10];
//创建一个长度为len的Student Array
int len=20;
Student stus[]=new Student[len];
1.2Array的长度
Array的长度表示Array中存放元素的数量,由Array的length成员表示,如上例中的两个数组分别可以用scores.length和stus.length表示
1.3访问Array中的元素,使用Array的索引完成,索引从0开始,到length-1为止
如:scores[0],scores[1],…,scores[9]
1.4Array的遍历
可通过for循环、for-each循环、while循环来完成
例1:统计一个数组里所有元素的和(使用for循环)
int scores[]=new int[10];
//数组中元素的赋值步骤省略
int sum=0;
for(int i=0;i<scores.length;i++){
sum+=scores[i];
}
例2:计算数组所有元素的平均值(使用for-each循环)
doubleweights[]=new double[20];
//数组中元素的赋值步骤省略
double totalWeight=0.0;
for(double weight : weights){
totalWeight+=weight;
}
double averageWeight=totalWeight/weights.length;
几种循环格式可以互换,通常对于循环次数确定的情况使用for或for-each较简单,循环次数不确定的情况while会比较简单。
02Array List
2.1ArrayList的声明和创建
//创建一个String类型的ArrayList,该ArrayList中只能存放String对象,存放的元素个数不限
ArrayList
//创建一个Student类型的ArrayList,Student为用户自定义的类型
ArrayList
在创建ArrayList对象时,写在一对“<”“>”中的数据类型在Java中称之为泛型,表示该ArrayList允许存放的数据类型。
2.2ArrayList与Array的区别
Array跟ArrayList都可以存放一组元素,不同之处在于:1、Array在创建时必须指明其长度,而ArrayList不用,其长度可以动态增加;2、Array的长度通过length成员表示,ArrayList的长度通过其size()方法获得;3、Array可以存放primitivedata(原始数据类型)或referencedata(引用数据类型,也称之为对象类型),ArrayList只能存放referencedata,原始数据类型必须通过其WrapperClass包装成referencedata放进ArrayList中,如int通过Integer包装,double通过Double包装;4、ArrayList是一个类,类中有大量已经写好的方法可以帮助我们简化对ArrayList的操作,而Array是Java内建的一种类型,只有length成员可以使用,对Array的操作需要程序员自己编码。
2.3ArrayList类中必须掌握的方法
2.4ArrayList的遍历
同样可通过for循环、for-each循环、while循环来完成
例1:统计一个String类型的ArrayList中带有“Apple”字段的String的数量,假设ArrayList通过方法参数传入,统计结果通过方法返回值返回(使用for循环)
publicint countApple(ArrayList
int count=0;
for(inti=0;i<list.size();i++){
Stringmessage=list.get(i);
if(message.indexOf(“Apple”)!=-1){
count++;
}
}
return count;
}
特别注意:当对ArrayList中的元素进行add或remove操作时,只能使用for循环或while循环,不能使用for-each循环,否则会造成运行期错误;并且在做remove操作时,要控制好循环变量,比如上例中remove之后进行了i--,否则会遗漏元素。
03String
3.1String对象的创建
Strings=new String(“hello”);
String s=”hello”;
两种创建方式都可以,两种方式本质上会有一些区别,但是AP中不要求,有兴趣的同学自己去了解(第一种方式一定会创建一个新的字符串对象,第二种方式系统会先在一个字符串缓冲区的空间去寻找有没有“hello”内容的字符串,若有,则复用这个串,没有,才会创建新对象)
3.2String类中必须掌握的方法
3.3String典型应用举例
例1:统计一个字符串中字符“A”出现的次数,假设String通过方法参数传入,统计结果通过方法返回值返回
publicint countA(String data){
intcount=0;
for(int i=0;i<data.length()-1;i++){
Stringpos=data.subString(i,i+1);
if(pos.equals(“A”)){
count++;
}
}
returncount;
}
04FlowControl(if、for、while、booleanexpression)
这一部分的内容属于Java基本语法,是必须掌握的内容。前面的几个知识点已经涵盖了这一部分的内容。这里,总结一下各种格式
4.1if的用法
判断学员的成绩是否大于等于90,成立则执行if块中的内容
if(stu.getScore()>=90){
//dosomething
}
判断学员成绩属于A、B、C、D哪一档
String level=””;
if(stu.getScore()>=90){
level=”A”;
}else if(stu.getScore()>=75){
level=”B”;
}else if(stu.getScore()>=60){
level=”C”;
}else{
level=”D”;
}
在if…else if…else分支结构中,只有一个语句块的内容会被执行,如果是多个if语句块并列,则每个if语句都会被检测,若满足条件,则都会执行。如:
String level=””;
if(stu.getScore()>=90){
level=”A”;
}
if(stu.getScore()>=75){
level=”B”;
}
if(stu.getScore()>=60){
level=”C”;
}
If(stu.getScore()>0){
level=”D”;
}
若学员成绩是80,则level会先被赋值“B”,然后下一个if块也成立,level被赋值“C”,最后,level被赋值“D”
4.2for的用法
计算1到100的自然数累加之和
int sum=0;
for(int i=1;i<=100;i++){
sum+=I;
}
for循环的执行次数,如int i=1;i<=100;i++,循环次数=终值-初值+1=100次;如果是int i=1;i<100;i++,则循环次数=终值-初值=99次。
计算Fibonacci(斐波拉契数列)前30个元素的值
int fibo[]=new int[30];
for(int i=0;i<30;i++){
if(i==0||i==1){
fibo[i]=1;
}else{
fibo[i]=fibo[i-1]+fibo[i-2];
}
}
统计一个方法反复执行多次中返回true值的比例。假设有一个已经写好的方法,格式如下:
public boolean simulate(){
…
}
该方法有可能返回true或false,假设该方法执行了1000次,现在需要统计返回值为true的比例
intcount=0;
for(inti=0;i<1000;i++){
if(simulate()){
count++;
}
}
doubleproportion= (double)count/1000;
使用for对Array、ArrayList、String进行遍历,是考查的重点,前面已有案例,这里不再赘述。
4.3while的用法
while跟for实现的功能一样,很多时候二者可以替换使用,但在循环次数不定的条件下,while会更简单
4.4boolean expression
所有的booleanexpression最终产生一个true或false的结果,通常用于程序流程控制。常见的运算符包括:
关系运算符:>,<,==,>=,<=,!=
逻辑运算符:&,|,!,&&,||
05WritingaclassWritingaclass
此类题目可以比较全面地考查学员对Java语言的掌握程度以及对题目的理解和分析能力,因此一直是出现频率很高的一类题型。下面我们来看看这类题目的解题技巧。
这类题目的解题要点,首先是把题读懂,如果第一遍读下来还不是特别清楚,也不用着急,先把类的基本框架搭出来。比如说类声明(classdeclaration),方法列表(methodslist),构造器列表(constructorlist),属性(attributes)等。其次,仔细阅读题目中给出的样例代码执行结果及注释(这一部分可以反复多读几遍,读懂为止),通过分析方法返回值和注释理解方法的运行逻辑及类中可能隐藏的属性,完成方法的编码。最后,代入题目中给出的数据进行测试,确保程序可运行无遗漏。
另外,在设计一个类的时候,通常一个类会被设计成public类型,属性设计成private类型(封装),方法和构造器设计成public类型(AP只要求到这个程度)。
06产生随机整数及WrapperClass
6.1产生随机整数
利用Math类下的random()方法可以获得一个从0.0到1.0之间的随机浮点数,随机数大于等于0.0,小于1.0。再通过简单运算即可得到任一区间的随机整数。
如:产生一个1~10之间的随机整数
int index=(int)(Math.random()*10+1);
产生一个0~5之间的随机整数
intposition=(int)(Math.random()*6);
产生一个31~49之间的随机整数
int num=(int)(Math.random()*19+31);
6.2WrapperClass(包装类)
由于ArrayList里面只能加入Object,所以当需要把int和double类型数据加入到ArrayList时,需要先包装成Object放入。int对应的WrapperClass是Integer,double对应的WrapperClass是Double。
例:创建一个包含整型数据的ArrayList,并在此list中插入数据和取出数据。
ArrayList
不管是英国前10还是美国前20的学校,都非常认可AP成绩。但AP考试采取五分制,排名靠前的学校要求4-5分才能换学分,也只有接近满分的成绩才能真的帮到申请。
所以AP考生一定要以5分为最高目标呀。
更多AP学习攻略点击
CB官宣:2021年AP考试将全面恢复正常 所有知识点都会考(线上线下都一样)