【自用】java期末复习整理

前言

根据学校发的考试范围整理的资料。学校不同,参考性不大。
考试内容集中于前6章,对应复习提纲上的内容
编程题345重点看
简答题全背



一、考题类型

题型 分值/题 数量 各题分值
1.选择题 2 15 30
2.判断题 2 10 20
3.程序阅读题 3 5 15
4.简答题 5 3 15
5. 程序设计 10 2 20

二、题纲及知识点

1. 选择题、判断题

  1. Java语言的特点(选择题、判断题)
  2. 标识符命名规则。(选择题、判断题)
  3. java程序文件名命名规则(java源程序文件名与应用程序类名),及文件扩展名(选择题)、main方法(选择题、判断题)、主类
  4. 整型(十进制、八进制、十六进制)合法常量的表示方法、字符型常量(单个字符、字符串常量)的表示方法、实型合法常量的表示方法。字符采用的编码。

整数常量可以是十进制、八进制或十六进制的常量。前缀指定基数:0x 或 0X 表示十六进制,0 表示八进制,不带前缀则默认表示十进制。
整数常量也可以带一个后缀,后缀是 U 和 L 的组合,U 表示无符号整数(unsigned),L 表示长整数(long)。后缀可以是大写,也可以是小写,U 和 L 的顺序任意。
常量的具体内容

  1. 混合数据类型运算的表达式求值:(选择题、判断题、阅读程序)
    (1) 掌握教材提到的常用运算符的运算规则,以及运算对象(如 %、/ 、逻辑运算符&&和||等)的特殊要求,包括复合赋值运算符(+=,-=,*= 等)
    (2) 数据类型转换:自动转换条件、以及何种情况下需要强制转换与语法格式
    (3) 条件运算符的使用
  2. 掌握分支结构与循环结构程序设计(选择题、程序阅读题、编程题)
    (1) if语句、if~else语句 
    (2) switch语句
    (3) 循环语句的结构(for、while、do-while)
    (4) break和continue语句return语句使用的用法。
    (5) 以及它们的组合使用。
  3. 一维数组的定义与使用;二维数组的定义与使用;数组元素的访问
  4. Java面向对象编程
    (1) 掌握类的定义(成员变量、成员方法和构造方法)和使用,对象创建
    (2)
    (3)
    (4) package与import的用法(选择题、判断题)
    (5) 方法的调用与参数传递,参数传递的方法(值传递与引用传递)(选择、程序阅读题)
    (6)
    (7) 类的访问修饰符有哪些(选择题、判断题)
    (8) 类的私有成员和公共成员
    (9) 成员的访问修饰符:private、protect、public、缺省修饰符,它们的访问权限各是什么(选择题、判断题)
    (10) 方法的重载的格式 (选择题、判断题)
    (11) 构造方法的作用与定义,构造方法的重载与调用(选择题、判断题,程序阅读题)
    (12) 静态成员变量和静态成员方法的使用 (选择题、判断题,程序阅读题)
    (13)
    (14) 子类的创建(注意,在子类构造方法中自动调用父类构造方法),上转型对象(程序阅读题)

(15)
(16) 抽象类的定义
(17) 接口与接口的实现,利用接口实现多重继承
(18)
9. 程序对错误与异常的处理方式,异常处理的基本结构try-catch-finally使用,throw和throws的使用及各自的作用(选择题、判断题, 程序阅读题)
10. Scanner的输入输出常用方法,能以键盘、文件实现输入。熟悉常用文件字符/字节输入输出流类、随机流类、缓冲流类。(选择题、判断题)
11. 常见布局管理器GridLayout, FlowLayout, BorderLayout的布局方式(选择题)
12. 掌握事件处理机制,熟悉为事件源注册监听器的方法,熟悉ActionEvent事件。(选择题、判断题)
13. 数据库操作相关的类Connection、Statement、ResultSet、prepareStatement的作用和使用(选择题、判断题)

2. 简答题

  1. 开发与运行Java程序的三步骤
    1、创建Java源程序
    2、编译源文件
    3、运行class(字节码)文件

  2. 实例变量与局部变量的区别
    1、实例变量是声明在类里面而不是在方法中。局部变量是声明在方法中的。
    2、实例变量有默认值,局部变量没有。
    3、实例变量不允许重名,但可以与局部变量重名,重名时局部变量优先。局部变量不可以重名。

  3. 类与对象的关系
    类是创建对象的模板,没有类就没有对象。类的实例化的结果就是对象,而对对象的抽象就是类,类描述了一组有相同特性(属性)和相同行为的对象。

  4. this与super的各自作用
    this:
    1、引用当前对象。当实例变量和局部变量命名冲突的时候,用this,表示实例变量。
    2、用在构造方法中 this() 调用本类的其他构造方法
    super:
    1、引用父类对象。访问父类被遮盖的属性或调用父类被覆盖的方法。
    2、super()用在子类的构造方法中,能够决定jvm在去构造父类对象时,调用父类哪一个构造方法。

  5. 继承与多态的概念
    继承是实现多态性的一个重要途径。继承就是一种由已有的类创建新类的机制,是指在已有类的基础上扩展功能。多态就是指父类的某个方法被其子类覆盖时,利用对象的向上转型,各个子类对象可以表现出各自不同的行为。

  6. 方法的重载与重写(也称为覆盖)的区别
    1、重写实现的是运行时的多态,而重载实现的是编译时的多态。
    2、重写的方法参数列表必须相同;而重载的方法参数列表必须不同。
    3、重写的方法的返回值类型只能是父类类型或者父类类型的子类,而重载的方法对返回值类型没有要求。

  7. 接口与抽象类的区别
    1、接口中一般只有抽象方法的声明,抽象类可以定义其他成员。
    2、接口不能继承只能实现,抽象类专门用于继承。
    3、一个类可以实现多个接口,但一个类只能继承一个抽象类。
    4、接口强调特定功能的实现,而抽象类强调所属关系。


3. 程序阅读题

  1. 教材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为打破跳出。

  2. 教材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类型。

  3. 教材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 。

  4. 教材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答案:爷不会

  5. 教材P189 的程序阅读题1、2、3
    5.1答案:大家好,祝工作顺利!
    5.2答案:p是接口变量。
    5.3答案:你好 fine thanks。

4. 编程题

  1. 求数列之和(累积和) ,如:教材P51//44页 例子5,教材P51//45页 例子6

例子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 书上例题;

class888加到第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 书上例题;

classwhile计算算术 {
    
    

	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. 教材P58 的编程题1、3、5、6

编程题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 ;
			}
		}
	}
}

运行结果
在这里插入图片描述

  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);                   
            }
            
    }

总结

累死爷

猜你喜欢

转载自blog.csdn.net/weixin_52248428/article/details/125208489