山东建筑大学java模拟考试选择总结

 

选择题

1.类Circle的包名为my.shape,源程序文件保存在d:\myjava\ch1\Circle.java,假设运行cmd命令后当前目录为:d:\users,而编译后的Circle.class需要放在d:\install\my\shape文件夹下。下则此时输入的编译命令为:AC

A. javac -d d:\install ..\myjava\ch1\Circle.java

B. javac -d ..\myjava\ch1\Circle.java d:\install

C. javac -d d:\install d: \myjava\ch1\Circle.java

D. javac -d d:\install\my\shape d:\myjava\ch1\Circle.java

知识点1:javac命令常用的语法格式::

  • javac命令常用的语法格式:

    • javac -d 编译后class文件的位置 java文件的路径

      注意点:

      • 编译后class文件的位置:不包括所在的包、会自动创建包的目录层次结构

      • 文件的路径包括相对路径和绝对路径

    • javac命令的-d参数用于指定编译后的java类的class文件的位置,如果java类带有包(package),将会在指定位置创建包

    • ..表示上一级目录

  • 本题分析

    • 当前路径为d:\users

    • java文件的相对路径为..\myjava\ch1\Circle.java(..表示跳到D盘),绝对路径为d: \myjava\ch1\Circle.java

    • 编译后class文件的位置:d:\install

    综上分析,套入语法,得到的写法为

    • 相对路径写法:javac -d d:\install ..\myjava\ch1\Circle.java

    • 绝对路径写法:javac -d d:\install d: \myjava\ch1\Circle.java

    故选AC

 

2.

package choice.two;
​
public class ChoiceTwo {
​
    public static void main(String[] args) {
        A a = new B(10, 20);
    }
​
}
class A {
    int a;
    static {
        System.out.print("aaa   ");
    }
    public A(int a) {
        this.a = a;
        System.out.print("a=" + a + " ");
    }
}
​
​
class B extends A {
    int b;
    static {
        System.out.print("bbb   ");
    }
​
    public B(int a, int b) {
        super(a);//此处调用了父类的构造方法
        this.b = b;
        System.out.print("b=" + b + " ");
    }
​
}

输出结果为: D_

A. aaa a=10 bbb b=20 B. a=10 aaa b=20 bbb

C. a=10 b=20 aaa bbb D. aaa bbb a=10 b=20

知识点2:java初始化顺序、super的用法

  • java程序的初始化顺序

    • 父类静态变量、父类静态代码块、子类静态变量、子类静态代码块、父类非静态变量(实例变量)、父类非静态代码块、父类构造器(构造方法)、子类非静态变量、子类非静态代码块、子类构造器(构造方法)

    • 先父后子,先静态后非静态,先量再块后方法

  • super的用法

    • 引用父类的成员变量和成员方法

      super.getName();
    • 调用父类的构造方法

 

 

3.以下代码的空白处应该填写的代码是:__C

package choice.three;
public class Outer {
    double d = 100;
    class Inner {
        void print() {
            System.out.println(_);// 输出外部类d的值
        }
    }
    public static void main(String args[]) {
        Outer o = new Outer();
        Outer.Inner inner = _________;// 创建内部类Inner的对象inner
    }
}

A. Outer.d o.new Inner() B. d new Outer.Inner()

C. d o.new Inner() D. Outer.d o.new Inner()

知识点3:外部类与内部类

  • 在内部类里里面使用外部类的成员变量、成员方法十分方便,跟外部类里面使用外部类的成员变量成员方法一样,可以直接引用

  • 测试类里面使用内部类的语法格式

    //外部类 外部类对象名=new 外部类构造方法(实参列表);
    //外部类.内部类 内部类对象名=外部类对象名.new 内部类构造方法;
    Outer outer=new Outer("张三");
    Outer.Inner inner=outer.new Inner();

本题分析:

  • 输出外部类d的值,可直接引用d,排除AD

  • 创建内部类Inner的对象inner:外部类对象名.new 内部类构造方法;

 

4.关于数组的定义以下正确的是:A__

A. double myDouble[]=new double [5]; B. double myDouble [5]=new double [5];

C. double myDouble =new double [5]; D. double myDouble [5]=new double [] ;

知识点4:一维数组的声明与创建

  • 一维数组声明类型

    数据类型[] 数组名;
    数据类型  数组名[];
  • 一维数组的创建:

    数组名=new 数组元素类型[元素个数];
    str=new String[10];
    ​
    //数组声明创建的格式1;
    元素类型[] 数组名=new 元素类型[元素个数];
    //数组声明创建的格式2:
    元素类型[] 数组名=[new 元素类型[]]{元素1,元素2,元素3...};
    int arr[]=new int[]{0,1,2};
    int arr[]={0,1,2};
    //也可以让数组不指向任何数组对象
    int x[]=new int[100];
    x=null;
  • 本题分析

    • A符合数组声明创建的格式1

    • B:double myDouble [5]=new double [5];声明的中括号内不能写元素个数

    • C:double myDouble =new double [5];声明时缺少一个中括号

    • D:double myDouble [5]=new double [] ;声明和创建的中括里的内容反了

 

5.针对第1题的要求,则此时classpath设置的内容为: D

A. d:\myjava\ch1; B. d:\users\my\shape;

C. d:\install\my\shape; D. d:\install;

知识点5:classpath

  • classpath

    • 环境变量classpath里面填写的是字节码文件所在的目录,如果字节码文件表示的类有包的话,则classpath应该填写包所在的目录。

  • 本题分析

    • 类Circle的包名为my.shape,所以应该填写包所在目录,即 d:\install,故选D

 

6.代码如下:

int a=10,b=20;
​
a++;b=a++;
​
if(b>=12)
​
  System.out.println("a="+a);
​
else
​
  System.out.println("b="+b);

程序输出结果为:__B_

A. a=10 B. b=11

C. a=12 D. b=12;

知识点6:

  • a++:先运算再递增。++a:先递增再运算

  • 本题分析:b = a++; // b的值是a++之前的,即b=11;执行此行后,a=12了。先赋值再进行自增

    故选B

 

 

7.关于数组以下说法正确的是:__AC__

A. Float f[] ; 只是声明了数组f,并没有分配空间

B. float f={3.2f,2.4f}; f是一个具有2个元素的float数组,其中f[0]=3.2f;f[1]=2.4f;

C. Student s[]=new Student[3]; s是一个Student类型的数组,其中每个元素目前是null

D. char c[]=new char[2]; c[ 2]=’m’;这个语句是正确的。

知识点6:数组的知识

  • 声明数组只是创建了一个引用变量,并不为数组元素分配内存,因此[]中不能指出数组中元素的个数,Java是利用运算符来为数组型变量分配内存空间的,这就是创建数组

  • 如果数组元素是基本数据类型,在完成new操作之后秘书组中的元素会自动初始化为默认值,可以直接使用数据元素

    如果数组元素为引用数据类型,在完成new操作之后数组元素默认为null

  • 本题分析:

    • A选项说法正确;

    • B选项说法错误;原因:没有[]。

    • C选项说法正确;Student为引用数据类型,不是基本数据类型

    • D选项说法错误; c[ 2]会出现数组下标越界异常。

 

8.关于文件操作,以下说法正确的是:_ABC

A.要修改文件d:\my.txt的名字为d:\your.txt,使用的代码为:

File f=new File("d:\my.txt"); File fNew=new File("d:\your.txt"); f.renameTo(fNew);

B.要判断文件d:\1.txt是否存在的代码是: File f=new File("d:\1.txt"); f. exists();

C.要删除文件d:\2.txt 的代码为:File f=new File("d:\2.txt"); f.delete();

D.要列出d:\myproject下的子文件的代码为:

File f=new File("d:\myproject");

File[] files=f.listFile();

知识点8:File类的方法

  • 修改文件名的方法renameTo(文件名)

  • 判断文件或目录是否存在的方法:

    public boolean exists();
  • public boolean delete()

    删除文件或目录。当且仅当成功删除文件或目录时返回true,否则返回false,目录必须为空才能删除

  • public File[] listFiles()

    以File对象数组的形式返回当前目录下的所有文件和目录

  • 本题分析

    • D方法名错误

 

 

 

9.String s="1234567890";

则从s中截取子串"5678"的方法为:__A

A. s.substring(4,8) B. s.substring(4,7)

C. s.substring(5,8) D. s. substring (5,9)

知识点9:String类的常用方法

字符串下标从0开始。String类的常用方法。此处考的是截取子字符串的substring(int beginIndex, int endIndex),结尾指的是开区间

还有substring(int beginIndex):从beginIndex开始一直到字符串结尾的子串。

 

 

10.

类People和Worker的定义如下:

class People{

private String name;

public People(String name){ //应该是

this.name=name;

}

}

class Worker extends People{

private double wage;

public Worker (String name,double wage){

… …

}

}

则在Worker的构造方法中给name和wage赋值的语句正确的是:___C___

A. super. People (name); this. wage=wage; B. People (name); this. wage=wage;

C. super(name); this. wage=wage; D. super. name=name; this. wage=wage;

知识点10:super的用法,this

  • super调用父类构造方法

 

 

 

11.

代码

String s1="Hello World";//0001 常量池中

String s2=new String("hello World");

//Hello World->0001 常量池 在堆上Hello World复制并创建 1001

//hello world->0002 常量池 在堆上Hello world复制并创建 1001

System.out.print(s1.equals(s2)+ " ");

System.out.println(s1==s2);

的输出结果为:__D

A. true true B. true false

C. false true D.false false

知识点11:String类对象的创建

String类的对象的创建:

(1)String s1="Hello World"

如果"Hello World"在常量池不存在,则在常量池创建对象"hello World",然后将地址赋给s1。

(2)String s2=new String("hello world")

检测常量池中是否存在对象"hello World",

不存在,则首先在常量池创建该对象"hello World",然后将地址赋给s1。

所以本题两个打印结果都为false

 

12.

类A和类B的定义如下:

package com;

*class* A {

*private* *int* a = 3;

*double* b = 4.5;

*protected* *double* c = 6;

……

}

package com;

class B extends A{

……

}

则在B类中: ___B___

A.可以访问a和b,不能访问c B.不能访问a,可以访问b和c

C.不能访问a,可以访问b D.不能访问a,可以访问c

知识点12:访问控制符

  • private:private修饰的成员只能被它所属的类内的其他方法访问,不能被该类以外的其他类访问

  • 默认访问权限:不写默认访问控制符的就是默认访问权限,默认访问权限定义的内容可以被同一个包中的类所访问,但不能被别的包中的类访问

  • protected:修饰的成员可以被同一个包内的其他类访问,不同包如果是它的子类也可以访问,其他包不是它的子类不能访问

  • public:修饰的成员可以被任何类访问

  • 本题分析:

    • 此处,B和A在同一个包中,因此A类对B类是可见的,这样B类有可能访问A类中的默认访问权限的成员(属性和方法)。因此,B类可以访问b属性;

      B是A的子类。因此,无论A与B是否在同一个包中,B类可以访问其父类A中的protected成员。所以可以访问c属性

      private的成员,只有在本类中才可以访问,其他任何类无权访问。因此此处,B类不能访问a属性。

    • 所以B不能访问a,可以访问b和c,选B

 

 

14.

代码

class Test{

static int m=10;

int n=5;

public Test(){m++;n=n+2;}

public void add(){

m++;n++;//12 8

}

}

则执行以下代码

Test t1=new Test ();

t1.add();

Test t2=new Test ();

t2.add();

System.out.println("t1.m="+t1.m+" t2.n="+t2.n);

的输出结果为: _A

A. t1.m=14 t2.n=8 B. t1.m=12 t2.n=8

C. t1.m=14 t2.n=11 D.t1.m=12 t2.n=11

  • 知识点:类变量和实例变量

    • 此处m是类变量,是所有new出来的对象共有的,n为实例变量,仅为t2拥有

 

18.

以下说法正确的是:__ACDE

A.抽象类可以有抽象方法,也可以没有抽象方法,接口里都是抽象方法

B.继承抽象类使用implements,实现接口使用extends

C.接口里定义的量都是public static final的。

D.java类的代码编写中只能有1个package语句,但是可以有多个import语句,package语句放在最前面,import语句放在package语句后面,然后才能定义类。

E.一个java源程序文件中只能有一个public的类。

知识点13:抽象类与接口、package(包)与import语句的用法

抽象类与接口:

  • 抽象类和抽象方法的说明

    • 抽象方法只有说明,没有实现

    • 抽象类可以包含抽象方法,也可以不包含抽象方法。但是包含抽象方法的类必须定义成抽象类

    • 抽象类不能被实例化,抽象类可以被继承,所以不允许被定义成final类

    • 继承抽象类必须实现抽象类的抽象方法,否则,也必须定义成抽象类

    • 一个类实现某个接口,但没有实现该接口的所有方法,则必须定义成抽象类。

  • 抽象类与接口的去区别

    • 类可以实现多个接口,但仅能从一个抽象类继承,从抽象类派生的类仍可实现接口,接口可以支持多继承

    • 抽象类中可以有普通方法;接口中的方法都是抽象方法,且都是public方法

    • 抽象类中的成员变量可以被不同的修饰符来修饰,可以有实例变量,也可以有类变量;接口中的成员默认的都是public、static、final的变量

    • 抽象类中有构造方法;接口中不能有构造方法,所以也不能创建对象

package(包)与import语句的用法

  • java类的代码编写中只能有1个package语句,但是可以有多个import语句,package语句放在最前面,import语句放在package语句后面,然后才能定义类。

  • 一个java源程序文件中只能有一个public的类。

本题分析:

  • B中继承抽象类使用extends,实现接口使用implements

 

 

19.

关于图形界面的以下说法正确的是:A CDE

A. 默认从上到下、从左到右排列的布局是FlowLayout

B. JRadioButton是复选框,JCheckBox是单选按钮

C. JTextField是单行文本输入控件,JtextArea是多行文本输入控件

D. 在四周放置小控件,在中间区域放置大控件的布局是:BorderLayout;

E. 可以按照多行多列布局的是GridLayout

知识点14:图形界面

  • FlowLayout:称为流式布局,是JPanel的默认布局方式,按照组建的先后顺序,默认从左到右依次将组件添加到容器中,根据容器宽度,放满一行后,自动从下一行开始从左到右派组件。

  • JRadioButton是单选按钮,JCheckBox是复选框

  • JTextField是单行文本输入控件,JtextArea是多行文本输入控件

  • BorderLayout:边框式布局,在四周放置小控件,在中间区域放置大控件的布局

  • GridLayout:网格式布局,按照多行多列的方式排列组件,每个行列的交叉区域称为一个单元格,每个组件占据一个单元格,根据单元格的大小调整大小。

  • 本题分析:

    • B中反了

 

20.

以下代码正确的是:_A_C_E

A.

public class Test{

public void draw(){System.out.println("hello");}

public int getA(){return 1;}

}

B.

public class Test{

public void draw(){System.out.println("hello");}

public int getA(){System.out.println("hello World");}

}//public int getA(){System.out.println("hello World");}//需要有return语句

C.

public class Test{

public int sum(int a,int b){return a+b;}

public double sum(double a, double b){return a+b;}

}

D.

public class Test{

public int sum(int a,int b){return a+b;}

public int sum(int x,int y){return x+y;}

}//方法名重复了

E.

public class Test{

public int sum(int a,int b){return a+b;}

public int sum(int a,int b,int c){return a+b+c;}

}

知识点15:成员方法的定义:

  • 成员方法的定义格式:

    [修饰符列表] 返回值类型 方法名([参数列表]){
        方法体
    }
    • 该方法不需要返回任何结果,需要定义成void

    • 如果不是void,方法体最后要有return语句,return值要跟方法头中写的返回值类型一致,方法名可以是任何合法的表示符

考试小技巧:

  • 太复杂的程序可以直接在ecilipse上直接复制粘贴来验证答案(本解析中有几个题没做解析的原因)

  • 7
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值