AP计算机考试-CSA 考试 tips

时间:2023-11-09 10:55:25  作者:网络 来源:网络
  • 务必重视书写

  • 读题

  • 要勤于动笔

  • code tracing table

  • 索引

  • 错误与异常汇总

    • 编译错误

    • 运行时异常

    • 数组相关

    • ArrayList 相关

  • String、Array 和 Array List 的区别

    • 访问长度

    • 访问元素

    • 列表删除元素

    • 列表中插入元素

  • 编写类的题目

    • 哪些是属性

  • 数组

    • 查找元素

  • 二维数组

  • ArrayList 删除元素

  • 写代码

    • 大题中的继承

  • 继承

  • 对象的调用

  • 字符串

  • unit 1 primitive type and data

    • 运算优先级

  • unit 2 using object

  • unit 3 boolean expression

  • iteration

 

 

务必重视书写

书写!书写!还是书写!

读题

一个真诚而朴实的建议就是,计算机的题干至少读两遍,很可能某个方法的关键在你看不到的某句话中的定语从句。
一定要看清楚,题目给了哪些类;有哪些实力方法和实例属性 instance variable 和 instance method。

要勤于动笔

  • 遇到数组、字符串和 ArrayList 的题目,一定要在元素的上方标出索引
  • 对于涉及到循环题目要看清出循环变量的取值范围
    • 是 < 还是 <=
  • 涉及到数组的题目,务必注意循环变量的取值范围
    • 如果里面有 i-1,或者 i+1 就要小心数组索引越界的问题

code tracing table

要熟悉基本的 while、for、if、elseif 的用法,然后用 code tracing table 认真分析做题。
任何程序都可以分解为顺序、条件和循环三种基本结构,只要有耐心,结合 code tracing table,基本上都能做对,遇到题目千万不要慌,code tracing 来帮忙,不要被“看上去很长“代码吓到,耐心分析。

索引

  • 对于字符串的 substring 方法,第 2 个参数是字符串的长度不会报错
    • "abc".substring(2, 3)或者"abc".substring(3)不会报错
    • "abc".substring(4) 报错
    • "abc".substring(-1) 报错
  • 对于 ArrayList 来说,add 方法的第一个参数可以是字符串的长度,相当于在列表的末尾插入元素
    • set 和 remove 方法的参数应该是 [0, list.size)
  • 数组的题目
    • for (int i = 0; i < arr.length; i++)
    • for(int i = 0; i < arr.length-1; i++都是对的
    • 注意 i+1 和 i-1 的写法
    • 注意 for 循环遍历数组的时候

错误与异常汇总

 

编译错误

java 代码翻译成可以执行的代码过程中发生的错误,程序无法翻译成可执行的代码

  • overload 错误导致的 compile-error
    • 重载指的是方法的参数数量相同或者数量相同但是类型不一致
    • 一般会考察下面哪个方法会导致编译错误(构造方法或者普通方法)
  • int a = 3.2;整数无法转换成小数,会导致错误
  • 变量没有初始化就使用,会导致错误

运行时异常

运行时异常说的是 run-time error,代码语法没错,但是运行报错

字符串相关

String s;
s.length(); // NullPointerException

字符串等对象,如果只是声明变量,没有初始化默认值是 null,在 null 上调用会导致异常,判断一个对象是不是 null 应该用 object == null或者 objec != null

String s = "hello";
s.substring(2100); // ArrayIndexOutOfBound

字符串索引越界

数组相关

String[] names = new String[];
names[0].length; // NullPointerException

数组中的对象,如果没有初始化,默认是 null

names[10]

数组索引越界。

ArrayList 相关

ArrayList<String> list = new ArrayList<String>();
list.add("hello");
list.add(list.size(), "a"); // 不会报错
list.add(list.size() + 1"a"); // 会报错
list.get(list.size()) ArrayListIndexOutOfBound
list.get(list.size()-1) 不报错
list.set(list.size(), "s") ArrayListIndexOutOfBound
list.set(list.size()-1, "s") 不报错
list.remove(list.size()-1, "s") 不报错
list.remove(list.size(), "s") ArrayListIndexOutOfBound
for (String s : list)
{
    list.add("s"); // ConcurencyExcepiton
}

不要在 for 中修改元素,否则会导致异常。

 

String、Array 和 Array List 的区别

 

访问长度

String str.length()
ArrayList list.size()
Array arr.length // 注意是属性没有括号

 

访问元素

String str.substring(i, i+1)
str.charAt(i)
Array arr[index]
ArrayList list.get(i)
2dArray arr[rowIndex][colIndex]

注意数组中元素只能修改不能删除;列表中的元素可以删除。

列表删除元素

列表删除元素建议倒着写,防止跳过元素

列表中插入元素

注意 for 循环的用法,一般是按照顺序插入,如果没有找到需要插入的元素,在最后插入。

 

编写类的题目

 

哪些是属性

  • 看看构造方法创建对象哪些实际参数,这些实际参数往往就是类的属性或者说实例变量
  • 如果方法进行计算需要的值,没有作为参数提供,构造方法也没,说明大概需要你自己声明属性,这些熟悉了可能是在构造方法,或者其他方法中修改的。
  • 方法,一般,题目中提到的方法,就是你需要写的方法
    • 注意返回值
    • 注意参数的类型

数组

图片

查找元素

如果选择题中遇到了 binaray search,注意,一定是排好序的数据。

public static count(int[] arr, int val)
{
 int count = 0;
    for (int i = 0; i < arr.length; i++)
    {
        if (arr[i] == val)
        {
            count += 1;
        }
    }
    return count;
}

 

二维数组

假设变量 mat是二维数组:

  • mat.length 数组的行数
  • mat[index] 表示访问数组的某一行
  • mat[0].length 数组的列数
String[][] mat = {{"a""b"}, {"c""d"}};
int rows = mat.length; 2
int[] firstRow = mat[0// {"a", "b"}
int cols = mat[0].length // 列数,2

 

ArrayList 删除元素

public static void del(ArrayList<String> list, String val)
{
    for (int i = 0; i < list.size(); i++)
    {
        String item = list.get(i);
        if (item.equals(val))
        {
            list.remove(i); // or list.remove(item)
            i -= 1// avoiding skipping item
        }
    }
}

 

写代码

  • 注意 for 和 while 后面不要写 colon
  • 调用类内部的 instance method 不要加类的名字,可以用 this
  • 注意认真读题干中的代码和注释

大题中的继承

  • 如果大题中遇到了继承,注意看,一些属性是在父类还是子类中
    • 如果属性在父类中,一般用 super 调用父类的构造方法
    • 如果父类有这些属性的 setter 方法也可以调用

 

继承

  • 子类不能继承父类中的 private 属性
  • 子类不能继承父类的 constructor
  • 父类类型的引用变量不能调用子类独有的方法
  • 类默认调用父类没有参数的构造方法 super() 相当于
  • 子类如果没有明确的调用父类的构造方法,相当于明确的调用了 super()

注意 return if 和 else if 的混合考法,if 语句顺序执行的;注意 else if 的逻辑错误。

对象的调用

  • 一般来说 getter 方法的调用不需要参数的
  • 如果不是静态方法,编写代码的时候,调用方法可以什么也不用写

字符串

  • 注意字符串的匹配算法
  • 字符串比较内容用 euqals 不用 ==
  • 字符串用 compareTo 比较大小,字典中顺序靠后的大
    • "a".compareTo("b")结果 -1,b 在后面,结果必然是负数,然后 b 在 a 大后一位
    • "b".compareTo("a"),结果是 1
    • "abc".compareTo("abcde"),结果是 -2,如果比较下来没有不同的字符,那么就取长度的差值

 

unit 1 primitive type and data

图片
image.png
  • 整数和小数可以强制转换
  • 整数自动小数
  • 小数不能自动转整数

运算优先级

  • 先算乘除
  • 再算加减
  • 有括号先算括号
  • % 优先级和乘除法相同
  • 强制类型转换比乘除要搞
  • 一般结合 Math.random()考察
  • 注意 FRQ 中求比例和平均值的题目,要注意结果的强制类型转换
  • 注意父类类型的引用变量可以强制转换为子类对象
  • .的运算优先级比强制类型转换搞

图片
图片
这个途中,注意复杂表达式的写法。

 

unit 2 using object

图片
图片

unit 3 boolean expression

图片
图片
注意 elseif 语句满足一个条件,其余的不看了,所以要注意这里容易考察的逻辑错误。

iteration

图片
注意用 tracing table 解决问题。

图片
注意一般情况下,条件执行的次数比循环执行的次数多 1。

  • 考察 for 循环循环变量的起始值和终止值
  • 考察判断循环执行的次数
  • 嵌套循环内层循环变量的初始值可能取决于外层变量
  • 容易和二维数组一起考察

 

AP大考,AP考试,AP课程培训,AP计算机辅导,  

更多AP计算机课程辅导

扫码添加小助手

👇👇👇

AP大考,AP考试,AP课程培训,AP辅导,

TEL:15601735269(同V)

AP大考,AP考试,AP课程培训,AP辅导,

 

犀牛国际坚持小班化、个性化的教育模式,能让授课老师在最大程度关注到每一位学生的学习动态与知识掌握程度,用精英老师来培养精英学生,让学生学习优秀的方法,为学生埋下优秀的基因。

 

犀牛国际AP培训课程开设了精品小班、一对等多种班型,家长和同学们可任意选择,线下+线上同步授课,在上海、北京、南京、苏州、无锡、杭州、广州、深圳、青岛、合肥、武汉、济南、成都等地均设有线下校区,注:各校区班型不同,具体扫描底部二维码咨询!

关键字:AP大考,AP考试,AP课程培训,AP计算机辅导,

推荐资讯
Contact Us