根据学校发的考试范围整理的资料。学校不同,参考性不大。
考试内容集中于前6章,对应复习提纲上的内容
编程题345重点看
简答题全背
题型 | 分值/题 | 数量 | 各题分值 |
---|---|---|---|
1.选择题 | 2 | 15 | 30 |
2.判断题 | 2 | 10 | 20 |
3.程序阅读题 | 3 | 5 | 15 |
4.简答题 | 5 | 3 | 15 |
5. 程序设计 | 10 | 2 | 20 |
整数常量可以是十进制、八进制或十六进制的常量。前缀指定基数:0x 或 0X 表示十六进制,0 表示八进制,不带前缀则默认表示十进制。
整数常量也可以带一个后缀,后缀是 U 和 L 的组合,U 表示无符号整数(unsigned),L 表示长整数(long)。后缀可以是大写,也可以是小写,U 和 L 的顺序任意。
常量的具体内容
(15)
(16) 抽象类的定义
(17) 接口与接口的实现,利用接口实现多重继承
(18)
9. 程序对错误与异常的处理方式,异常处理的基本结构try-catch-finally使用,throw和throws的使用及各自的作用(选择题、判断题, 程序阅读题)
10. Scanner的输入输出常用方法,能以键盘、文件实现输入。熟悉常用文件字符/字节输入输出流类、随机流类、缓冲流类。(选择题、判断题)
11. 常见布局管理器GridLayout, FlowLayout, BorderLayout的布局方式(选择题)
12. 掌握事件处理机制,熟悉为事件源注册监听器的方法,熟悉ActionEvent事件。(选择题、判断题)
13. 数据库操作相关的类Connection、Statement、ResultSet、prepareStatement的作用和使用(选择题、判断题)
开发与运行Java程序的三步骤
1、创建Java源程序
2、编译源文件
3、运行class(字节码)文件
实例变量与局部变量的区别
1、实例变量是声明在类里面而不是在方法中。局部变量是声明在方法中的。
2、实例变量有默认值,局部变量没有。
3、实例变量不允许重名,但可以与局部变量重名,重名时局部变量优先。局部变量不可以重名。
类与对象的关系
类是创建对象的模板,没有类就没有对象。类的实例化的结果就是对象,而对对象的抽象就是类,类描述了一组有相同特性(属性)和相同行为的对象。
this与super的各自作用
this:
1、引用当前对象。当实例变量和局部变量命名冲突的时候,用this,表示实例变量。
2、用在构造方法中 this() 调用本类的其他构造方法
super:
1、引用父类对象。访问父类被遮盖的属性或调用父类被覆盖的方法。
2、super()用在子类的构造方法中,能够决定jvm在去构造父类对象时,调用父类哪一个构造方法。
继承与多态的概念
继承是实现多态性的一个重要途径。继承就是一种由已有的类创建新类的机制,是指在已有类的基础上扩展功能。多态就是指父类的某个方法被其子类覆盖时,利用对象的向上转型,各个子类对象可以表现出各自不同的行为。
方法的重载与重写(也称为覆盖)的区别
1、重写实现的是运行时的多态,而重载实现的是编译时的多态。
2、重写的方法参数列表必须相同;而重载的方法参数列表必须不同。
3、重写的方法的返回值类型只能是父类类型或者父类类型的子类,而重载的方法对返回值类型没有要求。
接口与抽象类的区别
1、接口中一般只有抽象方法的声明,抽象类可以定义其他成员。
2、接口不能继承只能实现,抽象类专门用于继承。
3、一个类可以实现多个接口,但一个类只能继承一个抽象类。
4、接口强调特定功能的实现,而抽象类强调所属关系。
教材P57 的程序阅读题1、2
1.1答案:你,苹,甜
因为else没有括号,z被重新赋值了
1.2答案:jeep好好。
i=1时:switch语句中满足条件case 1,输出字母“J”,没有break;语句,不会跳出循环,所以case2也会执行,输出字母“e”,运行完case 2就遇上了break语句,跳出循环。即i=1时就打印了“Je”
i = 2 时,直接从case 2 开始运行,打印出“e”遇上break跳出循环
i = 3时,从case 3开始运行,打印出“p”,没有break语句,继续执行,打印出“好”。即i=3时打印出了“p好”
i = 4时,不满足case条件,运行default语句,打印出“好”离开循环。
最终结果“Jeep好好”。break为打破跳出。
教材P120 的程序阅读题1、2、3、4
2.1答案:【代码1】:1。【代码2】:121。【代码3】:121。
redFish对象是Fish类的实例,所以具有Fish类的属性,输出的weight是1。
lake.setFish方法传递的是redFish对象,将redFish对象赋值给Lake中的fish对象,那么二者就具有了相同的引用,从而具有完全相同的变量。那么调用lake.foodFish(120)时,lake对象中的fish对象的weight就变成了121,而redFish和fish的引用相同,其变量也相同,所以redFish中的weight也同样变成了121。
2.2答案:sum = -100 。
知识点:this关键字的用法。
主类中声明了B类的对象先调用setX方法传递参数为-100,但在这个方法体中的语句为x=x,等号右边的x是传递进的参数,而等号左边的x同样也指这个参数,所以相当于把参数的值赋值给本身,是没有任何意义的。
而调用setY方法,等号左边是this.y指的就是当前类下的成员变量y,所以此时成员变量y被赋值为-200,返回x+y的和就为-100。
2.3答案:27。
知识点:类变量(static变量)
无论一个类实例了多少个对象,他们都共享类中的类变量。b1中的n是3,b2中的n是5,调用b1.getSum求和后得到的结果是1+2+3=6赋值给s1,由于sum是类变量,所以b2中的sum也是6,再调用b2.getsum求和,就是6+1+2+3+4+5=21赋值给了s2,此时b1中的sum也变成了21,最后输出s1+s2的值就为6+21=27。
2.4答案:【代码1】:100 。【代码2】:20.0 。
知识点:方法重载,
方法重载要求方法名必须相同,参数列表不同(参数的个数不同或者是参数类型不同),【代码1】传递的参数是两个int变量10和10,那么与int f(int x,int y)方法匹配,输出结果100,【代码2】传递的参数是int 10和double 10.0,和double f(int x, double y)匹配,输出结果是20.0注意不能写成20,返回的是double类型。
教材P153 的程序阅读题1、2、3、4
3.1答案:【代码1】:15.0 。【代码2】:8.0。
B类继承了A类,但是B中的f方法并不是重写A类中的(参数类型不同),【代码1】调用f传两个int,实际调用的是B类自己的方法,返回值是double,所以输出15.0 。【代码2】调用f传两个double,调用的是继承自A类的方法,输出8.0 。
3.2答案:【代码1】:11 。【代码2】:110 。
对象a是A类的对象,调用的是A类自己的方法,接着让a实例化B类,a称为上转型对象,此时调用的是子类重写父类的方法。
3.3答案:【代码1】:98.0 。【代码2】:12 。【代码3】:98.0。【代码4】:9 。
代码1调用b对象的f方法,b对象是B类实例化的,调用的是B类自己的f方法,传入10.0和8.0后,用super关键字调用了父类的f方法,得到18.0赋值给m,最后返回18.0+10.0*8.0也就是98.0。
【代码2】调用B类中的静态方法g传入3,方法内又去调用父类中的g方法传入3,得到9赋值给m后,输出9+3也就是12。
【代码3】a对象是上转型对象,上转型对象可以调用重写父类的方法以及父类派生的方法,所以a调用的f方法是它重写的方法,那么具体过程就跟【代码1】相同,答案为98.0。
【代码4】在于g方法是静态方法,静态方法是不允许被重写的,所以B类中的g方法相当于该类特有的方法,那么a调用的g方法实际上是父类的,输出结果为9 。
3.4答案:【代码1】:120 。【代码2】:120 。【代码3】:-100 。
教材P173 的程序阅读题1、2、3
4.1答案:【代码1】:15.0 。【代码2】:8.0。
B类实现了A接口,并重写A中的方法。A a = new B()是接口回调(可以把实现某一接口的类,所创建的对象的引用,赋给该接口声明的接口变量中。那么该接口变量就可以调用被类实现的接口中的方法。)所以用接口变量a调用B类中的f方法。返回15.0 。
B b = (B)a将a对象强制转换为B类的对象,可以调用B类中的g方法返回8。
4.2答案:【代码1】:18 。【代码2】:15 。
B类继承了A类并实现了Com接口,Com com = b是接口回调,所以com可以调用B类中的add方法输出18,A a = b是上转型(子类引用赋值给父类对象),那么a也可以调用子类重写父类的方法add,输出15。
4.3答案:爷不会
教材P189 的程序阅读题1、2、3
5.1答案:大家好,祝工作顺利!
5.2答案:p是接口变量。
5.3答案:你好 fine thanks。
例子5:计算8+88+888+8888+···的前12项和。
public class Example3_5 {
public static void main( String args[ ] ) {
long sum = 0 , a = 8 , item = a , n = 12 , i =1;
for ( i=1; i<=n; i++) {
sum = sum + item;
item = item*10+a ;
}
System.out.println(sum) ;
}
}
我的过程
package 书上例题;
class 求8加88加到第12项的和 {
public static void main(String[] args) {
long sum=0,n=0,a=8, i;
for(i=1;i<=12;i++) {
n=n*10+a;
sum=sum+n;
}
System.out.println("计算结果为:"+sum);
}
}
例子6:用while语句计算 1+1/2!+1/3!+1/4!+···的前20项和。
public class Example3_6 {
public static void main( String args[ ] ) {
double sum = 0 , item = 1 ;
int i = 1 , n = 20 ;
while ( i <= n ) {
sum = sum + item ;
i = i+1 ;
item = item * (1.0 / i ) ;
}
System.out.println( " sum = " +sum ) ;
}
}
我的过程
package 书上例题;
class 用while计算算术 {
public static void main(String[] args) {
// TODO 自动生成的方法存根
double sum=0.0 , n=1.0 ;
int i=0 ;
while (i<=20) {
i = i + 1 ;
n = (1.0/i )* n ;
sum = sum + n ;
}
System.out.println("前20项和为:"+sum);
}
}
编程题1:编写应用程序求1!+2!+···+10! 。
public class Ti1 {
public static void main ( String args) {
double sum = 0 , a =1 ;
int i = 1 ;
while ( i <= 20 ) {
sum = sum +a ;
i++ ;
a = a*i
}
System.out.println( " sum = " +sum ) ;
}
}
编程题3: 分别用 do-while 和 for 循环计算1+1/2!+1/3!+1/4!+···的前20项和。
public class Ti3 {
public static void main ( String args[ ] ) {
double sum = 0 , a=1 ,i =1 ;
do { sum = sum +a ;
i++ ;
a =( 1.0 / i ) *a ;
}
while ( i < 20 ) ;
System.out.println("使用 do-while 循环计算的 sum = " +sum) ;
for ( sum = 0 , i = 1 , a = 1 ; i<=20 ; i++ ) {
a = a*( 1.0 / i) ;
sum = sum + a ;
}
System.out.println(" 使用 for 循环计算的 sum = " +sum) ;
}
}
编程题5:
编程题6:求输出满足1 + 2 + 3 + ··· + n < 8888 的最大正整数 n .
我的过程
package 书上例题;
class 求满足小于8888的最大整数n {
public static void main(String[] args) {
// TODO 自动生成的方法存根
int sum = 0 , n = 1 , m = 1 ;
for (n = 1; n <=m ; n++) {
if (sum >= 8888) { //如果sum值大于8888,就让 n > m 结束循环
m = n - 1;
System.out.println("n为:"+ (n-1));
}
else { //否则输出 当前sum的值,并且让 n < m 进行下一次循环
sum = sum + n ;
m = n + 1 ;
}
}
}
}
public class Circle {
private double radius ;
public static final double PAI=3.14;
public double getRadius() {
return radius;
}
public void setRadius(double radius) {
this.radius = radius ;
}
public double getArea() {
return PAI*radius*radius ;
}
public double getCircumference() {
return 2*PAI*radius;
}
}
public class Rectangle {
private double broadth;
private double longth;
public double getBroadth() {
return broadth;
}
public void setBroadth(double broadth) {
this.broadth = broadth;
}
public double getLongth() {
return longth;
}
public void setLongth(double longth) {
this.longth = longth;
}
public double getArea() { //类的操作
return getBroadth()*getLongth();
}
public double getCircumference() { //方法的命名采用动宾结构,代表做事
return 2 * (getBroadth() + getLongth());
}
}
public class Triangle {
private double highth;
private double bottom;
public double a,b,c;
public double getHighth() {
return highth;
}
public void setHighth(double highth) {
this.highth = highth;
}
public double getBottom() {
return bottom;
}
public void setBottom(double bottom) {
this.bottom=bottom;
}
public double getArea() {
return 0.5*highth*bottom;
}
public double getCircumference() {
return a+b+c ;
}
}
public class Main {
public static void main(String[] args) {
Rectangle a1 = new Rectangle ();
a1.setLongth(2) ; //通过.使用这个对象的属性
a1.setBroadth(3) ;
System.out.println("矩形的面积为:" +a1.getArea()+"; 周长为:" +a1.getCircumference());
Circle c1 = new Circle();
c1.setRadius(4);
System.out.println("圆的面积为:"+c1.getArea()+"; 周长为:"+c1.getCircumference());
Triangle t1 = new Triangle();
t1.a=4;
t1.b=5;
t1.c=7;
t1.setHighth(4);
t1.setBottom(5);
System.out.println("三角形的面积为:"+t1.getArea()+"; 周长为:"+t1.getCircumference());
}
}
4、设计一个Point类,表示二维几何平面中的一个点并计算两点间的距离。
public class Point {
private double x ,y ;
public Point(double x, double y) { //构造方法是与类名同名的方法,初始化
this.x = x;
this.y = y;
}
//访问私有字段get\set方法
public double getX() { //获取值
return x;
}
public void setX(double x) {
this.x = x ;
}
public double getY() {
return y;
}
public void setY(double y) {
this.y = y;
}
public double calDistance(Point otherPoint) {
double dx = x - otherPoint.getX();
double dy = y - otherPoint.getY();
double d = Math.sqrt(dx*dx + dy*dy);
return d;
}
}
public class Main {
public static void main(String[] args) {
Point p1,p2;
p1 = new Point(45,7);
p2 = new Point(5,5);
System.out.println("p1点坐标:("+p1.getX()+","+p1.getY()+")");
System.out.println("两点间的距离为:" +p1.calDistance(p2));
}
}
5、教材P76例子6(求和)、教材P81例子8(圆锥组合圆对象)
//P68 //P72
class Computer{
int add(int x, int y) {
return x+y;
}
}
class Main{
public static void main(String args[]) {
Computer com = new Computer();
int m = 100;
int n = 200;
int result = com.add(m, n);
System.out.println(result);
}
}
累死爷