javaStudy_day10

第一次测试

一,选择和填空(共14题,每题2分,共28分)

1,下列代码 (D)

class A{

class AInner{}

}

class B{

static class BInner{}

}

public class C{

private class CInner{}

}

编译后生成几个.class文件?

A、3个

B、4个

C、5个

D、6个

 

2,下列代码C.java

public classHello{

       /**

        *  只是一个测试类

        *  /**

        *     您好,java

        *  **/

        **/

        static public void main(String[] arg){

               System.out.println('您好,java');

        }

}

有几个错误的地方?(B)

A、1个

B、2个

C、3个

D、4个

 

3,下列哪些是java的关键字(多选)(ACE)

A、default

B、loop

C、do

D、Class

E、null

F、java

 

4,下列哪些代码符合java规范:(A)

A、public static void main(){}

B、public method(){

private Integer num;

   }

C、public method(){

        int num;

System.out.println(num);

   }

D、private $5person=5;

 

5,下列哪些变量的声明是正确的?(多选)(BCDEF)

A、byte i=128;

B、int i =0220;

C、boolean flag= Boolean.TRUE;

D、int number ='A';

E、float y =0x123;

F、long a =0x123l;

 

6,下列代码运行结果是:(A)

main(){

 boolean flag=false;

 int i=0;

     if(flag||i>100){

 System.out.println("step1");

        }else if(!!flag & i/0>8){

                     System.out.println("step2");

        }else{

 System.out.println("step3");

        }

}

A、运行时报错

B、打印step1

C、打印step2

D、打印step3

 

7,下面代码的运行结果是:(C)

public staticvoid main(String[] args){

int i=1;

int j=++i;

if(j++>3){

++j;

}else{

i++;

}

int k=++j>4?j++:i++;

System.out.println(i);

}

A、2

B、3

C、4

D、运行时报错

 

8、下面的程序执行结果是:(B)

public static void main(String[] args) { 

        int i = 0; 

        for (i++; i++ < 10;i++); 

       System.out.println(++i); 

A、输出0

B、输出13

C、输出1

D、输出12

 

9,下面的程序输出

public staticvoid main(String[] args){

for(int i=0;i<3;i++){

switch(i){

case 1:

System.out.println("a");

break;

case 0:

System.out.println("b");

break;

default:

System.out.println("c");

case 2:

System.out.println("d");

}

}

}

请写出执行的结果BAD

 

10,下面哪些方法是void show(int a,charb,boolean c){}方法的重载?(多选)(ABCE)

A、voidshow(char b, int a, boolean c){}

B、intshow(boolean a,char c ,int b){}

C、voidshow(int a,char b,double c){}

D、voidshow(int x,char y,boolean z){}

E、int show(intx,double y){}

F、int show(intx, char y,boolean z){}

 

 

11,下面哪个声明数组的方式是正确的?(多选)(ACDEFG)

A、inti[]=null;

B、int[] j=newInteger[]();

C、int[] k=newint[]{1,2,3};

D、int[]l={1,2,3};

E、int[] m={};

F、String[]s=new String[]{"1",'2',"3"};

G、String[]s=new String[3];

H、class A{}

public class B{

private A[] ={new A(),new A(),new A()};

}

I、class A{}

public class B{

private A[] =new A[]{new A(),new A(),new A()};

}

 

12,下面哪一项说法是正确的?()

A.在一个子类中一个方法不是public的就不能被重载

B.覆盖一个方法只需要满足相同的方法名和参数类型就可以了

C.覆盖一个方法必须需要相同的方法名参数和返回类型

D.一个覆盖的方法必须有相同的方法名、参数名和参数类型

 

13,下面代码的输出结果是多少?[Trend公司面试题] ABA

class A {

   public static void prt() {

       System.out.println("1");

    }

   public A() {

       System.out.println("A");

    }

}

public class B extends A {

   public static void prt() {

       System.out.println("2");

    }

   public B() {

       System.out.println("B");

    }

   public static void main(String[] args) {

       A a = new B();

       a = new A();

    }

}

 

14,下面代码的输出结果是多少?[Trend公司面试题] 123

class Parent {

protected String value = "123";

public String getValue() {

     return value;

}

}

public class Child extends Parent {

protected String value = "456";

public static void main(String[] args){

Child c=new Child();

System.out.println(c.getValue());

}

}

 

 

 

二,主观题(共5题,每题5分,共25分)

1,  请简要写出搭建java开发环境的步骤

安装jdk,设置环境变量,path=jdk根目录\bin

测试环境,测试命令:javac

2,  为什么java能跨平台

java的编译器编译java源文件后能产生和平台无关的class文件,class文件是跨平台的

3,  int和Integer都可以代表一个整数,这两者在使用上有什么区别吗?为什么JDK中要设计两个数据类型来表示同一种数据?

Java为每个原始类型提供了封装类,Integerjavaint提供的封装类。

int的默认值为0,而Integer的默认值为null

Integer可以区分出未赋值和值为0的区别,int则无法表达出未赋值的情况,

Integer类型的值会在堆空间开辟存储区域,

int 类型的值会存放于栈空间,存储和读取速度快于Integer;

但是Integer类提供了多个和整数操作相关的方法,

如进制转换,大小比较,类型转换等,这是int 无法比拟的;

4,  请简述面向对象的三个特征

封装、继承、多态

5,什么叫多态?你是如何理解多态的?请设计一个简单的示例,展示多态的用法。

    多态:指同一个实体同时具有多种形态:

              产生前提:继承关系;

              产生机制:编译类型和运行类型不一致(父类变量指向子类对象)

              分类:编译多态(方法重载)和运行多态(方法覆写)

 

 

三,编程题

1,打印下面图形(8分)

* * * * *
       * * * *
       * * *
       * *
       *

package demo1;

public class demo1 {
	public static void main(String[] args) {
		int i, j;
		for (i = 5; i > 0; i--)
		{
			for (j = i; j > 0; j--)
			{
				System.out.print("*");
			}
			System.out.println();
		}
	}
}


2,编写一个方法求s=a+aa+aaa+a...a,其中a是一个数,比如a=2;那么求s=2+22+222+2222...的值。该方法需要两个参数,第一个参数控制a,第二个参数控制有多少个数。(5分)

package demo2;

public class demo2 {

	public static String show(Integer num, Integer count) {
		//加数
		String ele = "";
		//表达式
		String exp = "";
		long sum = 0;
		
		for(int i = 1; i <= count; i++)
		{
			ele += num;
			System.out.println("加数 = " + ele);
			sum += new Integer(ele);
			exp += ele;
			if(i != count){
				exp += "+";
			}else{
				exp += "=";
			}
		}
		
		return exp + sum;
	}
	
	public static void main(String[] args) {
		String ret = show(2, 4);
		System.out.println(ret);
	}

}


3,给出一组学生的成绩int[]score={80,45,60,100,89,92,93,...}请求出这组成绩中,100分,90-99,80-89的学生人数。(5分)

package demo3;



public class demo3 {
	
	public static void main(String[] args) {
		
		int[] score = {80,45,60,100,89,92,93};
		
		int countA = 0;
		int countB = 0;
		int countC = 0;
		
		for(int i: score)
		{
			if(i == 100)
			{
				countA++;
			}else if(i >= 90 && i < 100){
				countB++;
			}else if(i >= 80 && i < 90){
				countC++;
			}
		}
		
		System.out.println(countA);
		System.out.println(countB);
		System.out.println(countC);
	}
	
}


4,String类中有一个方法叫toCharArray();该方法在string对象上面调用,用于将一个字符串变成char的数组,方法签名为:char[] toCharArray();请编写一个方法int lastIndexOf(Strings,char c),计算出一个字符在string中第一次出现的位置(倒着数),如果在string中没有这个字符,则返回-1;(5分)

package demo4;

public class demo4 {
	public static void main(String[] args) {
		String str = "1234abcdeabcdabcaba";
		int index = lastIndexOf(str, '3');
		System.out.println(index);
	}
	
	public static int lastIndexOf(String s, char c)
	{
		char[] cArray = s.toCharArray();
		int len = cArray.length;
		for(int i = len - 1; i >= 0; i--)
		{
			if(c == cArray[i])
			{
				return i;
			}

		}
		return -1;
	}
}


5,在System类中有静态方法public static void arraycopy(

                            Object src, 

                            int srcPos, 

                            Object dest,

                            int destPos,

                            int length):

       可以用于数组src从第srcPos项元素开始的length个元素拷贝到目标数组dest从destPos开始的length个元素。请自己实现这个方法。(5分)

package demo5;

import java.util.Arrays;

public class demo5 {
	public static void main(String[] args) {
		int[] src = {1,2,3,4,5,6,7};
		int[] dest  = new int[5];
		
		System.out.println(Arrays.toString(dest));
		arraycopy(src, 2, dest, 0, 3);
		System.out.println(Arrays.toString(dest));
	}

	public static void arraycopy(int[] src, int srcPos, int[]  dest,
			int destPos, int length) {
		if(src == null || dest == null )
		{
			System.out.println("数组不能为空");
			return;
		}
		
		if(srcPos < 0 || destPos < 0 || length < 0)
		{
			System.out.println("角标越界,不能小于0");
			return;
		}
		if(src.length < srcPos + length || dest.length < destPos + length)
		{
			System.out.println("角标越界,太大了");
			return;
		}
		for(int i = srcPos,j = destPos; i < srcPos + length; i++)
		{
			dest[j++] = src[i];
		}
	}

}


6,各种类型的几何图形都有自己的面积计算公式,但在一个CAD(计算机辅助设计)软件中,图形的种类非常多,如果程序需要计算出任何一种图形的面积,最简单 的想法是使用条件判断语句根据图形类型来选择相应的计算公式。然而,这种方法不太好,可能会导致嵌套层次很深的条件判断语句。另外,如果软件要扩充功能以支持新的图形种类,则又不得不修改调用不同公式计算图形面积的代码。在学习了面向对象技术之后,你能对上述问题给出一个较好解决方案来吗?请以计算圆形、矩形和三角形三种几何图形的面积为例,列出关键代码。(7分)

 

package demo6;

import org.omg.CORBA.PRIVATE_MEMBER;

interface Tuxing{
	double getArea();
}

class Circle implements Tuxing{

	private double r;
	
	
	public Circle(double r) {
		super();
		this.r = r;
	}

	public double getArea() {
		return Math.PI*r*r;
	}
	
}

class Rectangle implements Tuxing{
	private double w;
	private double h;
	
	
	public Rectangle(double w, double h) {
		super();
		this.w = w;
		this.h = h;
	}


	public double getArea() {
		return w*h;
	}
}

class Triangle implements Tuxing{

	private double a;
	private double b;
	private double c;
	
	
	public Triangle(double a, double b, double c) {
		super();
		this.a = a;
		this.b = b;
		this.c = c;
	}


	public double getArea() {
		double p = (a+b+c)/2;
		return Math.sqrt(p*(p-a)*(p-b)*(p-c));
	}
	
}

public class demo6 {
	public static void main(String[] args) {
		Tuxing tu = new Triangle(3, 4, 5);
		System.out.println(tu.getArea());
	}
	
}


你可能感兴趣的:(javaStudy_day10)