JAVA基础试题 -01

1、下列哪种不属于java的基本数据类型
A int
B float
C String
D char

答案:C 
解析:String 是引用类型

2、设x = 5, 则 y = x++ 和 y = ++x 的结果, y的值分别是
A 5, 5
B 5, 6
C 6, 5
D 6, 6

答案: B
解析:++ 在前表示先计算后赋值, ++ 在后表示先赋值后计算

3、以下标识符中哪项是合法的
A @name
B %name
C _name
D 0name

 答案:C
 解析:标识符只能由数字 0-9、字母、_ 和 $ 符号组成,而且不能以数字开头,也不能与关键字和保留字同名

4、以下不是JRE的主要功能是?
A 加载代码
B 校验代码
C 开发代码
D 执行代码

答案:C
解析:JRE 是 java 运行时环境,主要功能不是开发代码,而是加载、校验和运行代码

5、在Hello.java文件中有如下代码:

class Demo01
{
	public static void main(String[] args) 
  	{
		System.out.println("Hello World!");
   	}
}
class Demo02
{

}

在命令行执行javac Hello.java后,编译生成的class文件是
A Hello.class
B Demo01.class
C Demo02.class
D Demo01.class、Demo02.class

答案:D
解析:每一个类都会生成一个字节码文件,而不管类中是否为空

6、下面代码的输出结果是什么?

class Test {
    public static void main(String[] args) {
        int a = 3, b = 4;
        int result = (++a)/3+(b--)*2-(a--)%6+(b++)*3-(b--);
        System.out.println("result=" + result + ", a=" + a + ", b=" + b);
    }
}

A result=11, a=3, b=3
B result=10, a=3, b=4
C result=11, a=4, b=3
D result=10, a=3, b=3

答案:D
解析:++ 或者 -- 在前,表示先运算再赋值;++ 或者 -- 在后表示先赋值再运算

7、Java 的跨平台机制是由什么实现的
A GC
B Java DE
C Html
D JVM

答案:D
解析:JVM是 java 虚拟机。java 之所以可以实现跨平台是因为有不同版本的 JVM 针对不同的操作系统

8、下面语句的输出结果是

class Test
{
 public static void main(String[] args) 
 {
  int x = 4;  
  System.out.println ("value is "+((x>4) ? 99.9 : 9));
 }
}

A 输出结果为:value is 99.9
B 输出结果为:value is 9
C 输出结果为:value is 9.0
D 输出结果为:语法错误

答案:C
解析:因为三目运算符中有 double 类型的数据,这时候 java 内部自动将 int 类型的转换成 double 类型。

9、整型数据类型中,需要内存空间最少的是
A short
B long
C int
D byte

答案:D
解析:byte 占 1 个字节,short 占 2 个字节,int 占 4 个字节,long 占 8 个字节

10、下列代码执行的结果是

public static void main(String[] args) 
    {
        short s1 = 1;
        s1 = s1 + 1;
        System.out.println(s1);
    }

A 编译异常 无法运行
B 2
C 1
D Null

答案:A
解析:因为 s1 是 short 类型的,而 1 默认是 int 类型,这时候是高级类型向低级类型,需要手动强制转换。

11、下列程序段执行后,t5 的结果是:

int t1=5,t2=6,t3=7,t4,t5;
t4=t1

A 4
B 6
C 5
D 7

答案:C
解析:t4 = t1 是将 t1 的值赋给 t4 ,所以 t4 的值就为5

12、设x为int型变量,则执行以下语句段后,x的值为:

x=10;
x+=x-=x-x;

A 30
B 10
C 20
D 40

答案:C
解析:= 是赋值运算符,所以从后面开始算,然后把后面的值赋给前面的变量

13、分析如下Java程序段,程序编译运行结果是( )。

public class A {
      public static void main(String[] args) {
            int num=0;
            switch(num){
                   default:
                   	System.out.println("Default");
                        num++;
                   case 1:
                        System.out.println("num="+ num);
                        num+=2;
                   case 2:
                        System.out.println("num=" + ++num);
                        break;
                   case 3:
                        System.out.println("num="+ ++num);
                        break;
          }
    }
}

A 输出:Default; num=1 ; num=3
B 输出:Default
C 输出:Default ; num=1 ; num=4
D 程序编译出错

答案:C
解析:switch 具有穿透性。也就是说当与第一个 case 后面的值匹配之后若是没有碰到 break 或者右大括号 }  ,那么就不再与下面的 case 匹配,而直接执行后面剩下的代码,直到碰到 break 或者右大括号 }。

14、下面哪一个操作符的优先级最高
A &&
B ||
C !
D ()

答案:D
解析:()的优先级最高,其次是 !、&、|

15、关于循环说法错误的是
A while 循环是先判断条件表达式是否为 true,如果为 true,则执行循环体
B do-while 则是先循环后判断,do-while 至少会循环一次
C for()括号中的分号可以一个也不要
D for 循环也是先判断再循环

答案:C
解析:for() 中的表达式可以省略,但是一个分号都不能省略

16、给出以下代码,请问该程序运行的结果是什么?

public class Check{ 
    public static void main(String args[]){ 
        byte b=10; 
        byte c=15; 
        b=(byte)(b^c); 
        System.out.println(“b contains+b); 
    } 
}

A 打印输出b contains10
B 打印输出b contains 5
C 打印输出b contains 250
D 打印输出b contains 245

答案:B
解析:b 和 c 进行位与运算后,强转回 byte 类型。这里需要使用二进制进行计算

17、下面代码的输出结果是()

   class Test 
   {
    	public static void main(String[]  args) 
    	{
     		int[] arr = {1, 3, 2, 5, 4};
     		change(arr);
     		print(arr);
    	}
    	public static void change(int[] arr)
    	{
     		for (int i = 0; i < arr.length -  1; i++){
      			for (int j = i + 1; j <  arr.length; j++){
       				if (arr[i] > arr[j]){
        				int temp = arr[j];
        				arr[j] = arr[i];
        				arr[i] = temp;
       				}
     	 		}
     		}
    	}
    	public static void print(int[]  arr)
    	{
     		for (int i = 0; i < arr.length;  i++){
      			System.out.print(arr[i] +  ",");
     		}
    	}
   }

A 1,2,3,4,5
B 5,4,3,2,1
C 1,3,4,2,4
D 1,2,3,4,5

答案:D
解析:for()循环的嵌套,要逐层进行。

18、下面代码的输出结果是什么?

class Test {
     public static void main(String[] args) {
         int a = 3;
         int b = 4;
         if ((a>b&(a++)>b&&(--b)<a)|(b++)<=(a--)) {
              System.out.println("判断结果为true, a=" + a + ",b=" + b);
         } else {		
	      System.out.println("判断结果为false, a=" + a + ",b=" + b);
                }
      }
}

A 判断结果为true, a=3,b=5
B 判断结果为true, a=3,b=4
C 判断结果为false, a=3,b=5
D 判断结果为false, a=4,b=4

答案:A
解析:++ 在前表示先计算后赋值, ++ 在后表示先赋值后计算

19.下面代码的输出结果是什么?

class Test {    
	public static void main(String args[]) {        	
		int x = 9;        
		for (; x > 0; x--) {            
			if (x % 3 == 0) {                
				System.out.println(--x);                
				continue;            
			}  
		} 
	}
}

A 9、3、6
B 9、6、3
C 8、5、2
D 7、4、1

正确答案: C
解析:注意每次循环的时候x值得变化  

20.下面代码的输出结果是什么?

class Test {    
	public static void main(String args[]) {        
		int i = 1, j = 10;        
		do {            
			if (i++ > --j)
				 continue;
		} while (i < 5);       
		System.out.println(i);        
		System.out.println(j);    
	}
}

A 4、5
B 5、6
C 6、7
D 7、8

正确答案: B
解析:注意循环了多少次
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、单选题(30分) 1.Java语言是( )。 A.面向问题的解释型高级编程语言 B.面向机器的低级编程语言 C.面向过程的编译型高级编程语言 D.面向对象的解释型高级编程语言 2.下列的变量定义中,错误的是( )。 A) int i; B) int i=Integer.MAX_VALUE; C) static int i=100; D) int 123_$; 3.以下的变量定义语句中,合法的是( )。 A) float $_*5= 3.4F; B) byte b1= 15678; C) double a =Double. MAX_VALUE; D) int _abc_ = 3721L; 4.以下字符常量中不合法的是( )。 A) '|' B) '\'' C) "\n" D) '我' 5.若以下变量均已正确定义并赋值,下面符合Java语言语法的语句是( )。 A) b = a!=7 ; B) a = 7 + b + c=9; C) i=12.3* % 4; D) a = a + 7 = c + b; 6.下列程序段执行后t5的结果是( )。 int t1 = 9, t2 = 11, t3=8; int t4,t5; t4 = t1 > t2 ? t1 : t2+ t1; t5 = t4 > t3 ? t4 : t3; A) 8 B) 20 C) 11 D) 9 7.设 a, b, c, d 均为 int 型的变量,并已赋值,下列表达式的结果属于非逻辑值的 是( )。 A) a!=b & c%d < a B) a++ = =a+b+c+d C) ++a*b--+d D) a+b>=c+d 8.执行下列程序段后,b, x, y的值分别是( )。 int x=6,y=8; boolean b; b=x>y&&++x==--y; A) true , 6, 8 B) false , 7, 7 C) true, 7, 7 D) false, 6, 8 9.以下由do-while语句构成的循环执行的次数是( )。 int k = 0; do { ++k; }while ( k < 1 ); A) 一次也不执行 B) 执行1次 C) 无限次 D) 有语法错,不能执行 10.下列语句序列执行后,x 的值是( )。 int a=3, b=4, x=5; if( ++a==b ) x=++a*x; A) 35 B) 25 C) 20 D) 5 11.下列语句序列执行后,k 的值是( )。 int i=6,j=8,k=10,m=7; if(i>j||m<k--) k++; else k--; A) 12 B)11 C) 10 D) 9 12.下列语句序列执行后,k的值是( )。 int j=8, k=15; for( int i=2; i!=j; i++ ) { j-=2; k++; } A) 18 B) 15 C) 16 D) 17 13.下列语句序列执行后,j 的值是( )。 int j=3, i=2; while( --i!=i/j ) j=j+2; A) 2 B) 4 C) 6 D) 5 14.下列语句序列执行后,k 的值是( )。 int x=6, y=10, k=5; switch( x%y ) { case 0: k=x*y; case 6: k=x/y; case 12: k=x-y; default: k=x*y-x; } A) 60 B) 5 C) 0 D) 54 15.下列语句序列执行后,a的值是( )。 int a=13; a%=a/5; A) 3 B) 13 C) 169 D) 1 16. 既能作为类的修饰符, 也能作为类成员的修饰符的是( )。 A) public B) extends C) Float D) static 17.下列选项中,用于定义接口的关键字是( )。 A)import B) implements C) interface D) protected 18.下列类头定义中,错误的是( )。 A) class x { .... } B) public x extends y { .... } C) public class x extends y { .... } D) class x extends y implements y1 { .... } 19.下列选项中,用于在定义类头时声明父类名的关键字是( )。 A)return B) interface C) extends D) class 20.设 i,j 为类 x 中定义的 double 型变量名,下列 x 类的构造函数中不正确的是( )。 A) double x(double k ){ i=k; return i; } B) x(double m, double n ){ i=m; j=n; } C) x( ){i=0;j=0 } D) x(double k ){ i=k; } 21.下列方法定义中,不正确的是( )。 A) public int x( ){ ... } B) public static int x( double y ){ ... } C) void x( double d ) { ... } D) public static x( double a ){ ... } 22.能从循环语句的循环体中跳出的语句是( )。 A) for 语句 B) break 语句 C) while 语句 D) continue语句 23. 若有循环: int x=5,y=20; do{ y-=x; x++; }while(++x<--y);则循环体将被执行( )。 A.0次 B.1次 C.2次 D.3次 24. 定义类头时,不可能用到的关键字是( )。 A) private B)class C)extends D)implements 25.在一个应用程序中有如下定义:int a[]={1,2,3,4,5,6,7,8,9,10};,为了打印输出数组a的最后一个元素,下面正确的代码是( )。 A) System.out.println(a[10]); B) System.out.println(a[9]); C) System.out.println(a[a.length]); D) System.out.println(a(8)); 26.若一个类中对某个方法进行了重载,能够区分这些重载方法的手段是 ( )。 A)它们的返回值类型的不同 B)它们的名称的不同 C) 它们的参数表的不同 D) 它们的修饰符不同 27.下面是有关子类继承父类构造函数的描述,其中正确的是( )。 A) 创建子类的对象时,先调用子类自己的构造函数,然后调用父类的构造函数。 B) 子类无条件地继承父类不含参数的构造函数。 C) 子类必须通过super关键字调用父类的构造函数。 D) 子类无法继承父类的构造函数。 28.下面说法正确的是( )。 A) final 可修饰类、属性、方法。 B) abstract可修饰类、属性、方法。 C) 定义抽象方法需有方法的返回类型、名称、参数列表和方法体。 D) 用final修饰的变量,在程序中可对这个变量的值进行更改。 29.选择排序的思想是,将数据序列划分为两个子列,一个子列是排好序的,另一个是尚未排序的。现若想将数据序列由小到大排序,则每次放到有序子列尾部位置的元素,应从无序序列中选择( )。 A)最大的 B)最小的 C)任意的 D)头上的 30.若想将数据序列使用插入排序算法由小到大排序,则每次放到有序子列合适位置上的元素,应从无序序列中选择( )。 A) 固定位置的 B)最小的 C)任意的 D) 最大的 二、填空题(每小题1.5分,共15分) 。 1.声明并创建类MyClass的一个对象,其名称为obj,可通过以下语句实现:________________。 2..设 x, y,max,min 均为 int 型变量, x、y 已赋值。用三目条件运算符,求变量 x 、y的最大值和最小值,并分别赋给变量 max 和min, 这两个赋值语句分别是 _________和________。 3.结构化程序设计的三种基本流程控制结构是:_____________、 _____________、__________。 4. 若a,b为int型变量且已分别赋值为2,4。表达式!(++a!=b--)的值是_________ 。 5.在Java语言中,将后缀名为_____的源代码编译后形成后缀名为______的字节码文件。 6.设有整型数组的定义:int a[]=new int[8]; ,则a.length的值为_____。 7.栈是一种先进____________的线性数据结构,而队列是先进_________的线性数据结构。 8.如果子类中的某个方法的________、___________和___________与它的父类中的某个方法完全一样,则称子类中的这个方法覆盖了父类的同名方法。 9.若a,b为int型变量且已分别赋值为2,6。表达式(a++)+(++b) +a*b的值是________ 。 10.定义数组,需要完成以下三个步骤,即:___________、________和_____________ 。 三、判断题( 每小题1分,共15分 ) 1.类头定义包含的四个部分分别为:访问控制修饰符、类名说明、父类名说明和接口名的说明,它们中的任何一个都是不能缺少的。 2.在 Applet 的坐标系中,(0,0) 代表输出窗口左上角的象素点。 3.应用程序一定要有main()方法,小程序一定要继承于Applet 类。 4.java语言中的逻辑变量可以和整型变量相互强制转换。 5.面向对象的软件开发方法用类把数据和基于数据的操作封装在一起,并且类之间可以存在继承关系。 6.方法可以没有返回值,或有一个返回值,也可以有多个返回值。 7.一个类中用private 修饰符修饰的属性成员,可被该类的方法和它的子类的方法访问。 8.构造函数能继承,也能被重载。 9.Java 源程序的文件名必须和公共类的类名相同。 10.双精度数强制转换成单精度数后,其数值精度会提高。 11. 队列、链表、堆栈和树都是线性数据结构。 12.属性的隐藏是指子类重新定义从父类继承来的同名变量。 13.用static修饰的方法称为静态方法,它不属于类的一个具体对象,而是整个类的类方法。 14.java语言中的接口可以继承,一个接口通过关键字extends可以继承另一个接口。 15.声明为final的方法不能在子类中重载。 四、程序填空( 每空2分,共20分 ) 1.下面是一个java应用程序(Application),它的功能是在屏幕上输出26个英文字母,其中每个字母相隔一个制表符,请完成程序。 public _____ Class1 { public static void main( String args[] ) { char c='a'; for (int i=1;i<=26;i++) { System.out.print(______); } } } 2.下面程序的功能为计算数组各元素的和,请完成程序。 import java.awt.Graphics; import java.applet.Applet; public class SumOfArray _______ Applet { public void paint( Graphics g ) { int a[] = { 1, 3, 5, 7, 9, 10 }; int total=0; for ( int i = 0; i < a.length; i++ ) total+=_____________; g.drawString( "Total of array elements: " + total, 25, 25 ); } } 3. 下面的java小应用程序实现的功能是从文本域中输入你的名字"***",回车后在 Applet中显示"***,你好!" ,请完成程序。 import java.awt.*; import java.applet.*; import java.awt.event.*; public class Applet1 extends Applet implements ActionListener { Label aa; TextField t1; String s=" "; public void init() { aa=new Label("请输入你的名字:"); add(aa); t1=___________; add(t1); t1.addActionListener(this); } public void paint(Graphics g) { g.drawString(s,20,100); } public void actionPerformed(ActionEvent e) { s=_________; repaint(); } } 4. 下面是求阶乘的递归算法,方法的返回值类型为long, 请完成程序。 ______ Factorial(long n) { if(n<=1) return 1; else ___________; } 5.下面程序的功能是通过调用方法max()求给定的三个数的最大值,请将程序补充完 整。 import java.io.*; public class Class1 { public static void main( String args[] ) { int i1=1234,i2=456,i3=-987; int MaxValue; MaxValue=____________; System.out.println("三个数的最大值:"+MaxValue); } public ______ int max(int x,int y,int z) { int temp1,max_value; temp1=x>y?x:y; max_value=temp1>z?temp1:z; return max_value; } } 五、简答题( 每1问2分,共20分 ) 1.阅读下面的程序,回答以下问题.(6分) import java.awt.*; import java.applet.*; import java.awt.event.*; public class Applet1 extends Applet implements ActionListener { Label aa; TextField t1; int i=0; public void init() { aa=new Label("请输入一个整数:"); add(aa); t1=new TextField(10); add(t1); t1.addActionListener(this); } public void paint(Graphics g) { g.drawString("a="+( ++i*--i),20,60); g.drawString("i="+( i),20,80); } public void actionPerformed(ActionEvent e) { i=Integer.parseInt(t1.getText());//转化为整数 repaint(); } } 问题: 1)程序开头的 import java.applet.* ; 的含义是什么? 2)ActionListener是类还是接口? 程序中哪个方法是ActionListener中的方法,其功能为何? 3)若在文本域中输入6并回车,程序输出什么? 2.阅读程序,回答以下问题.(6分) public class InheritTest1 { public static void main (String[] args) { A aa; B bb; aa=new A( ); bb=new B( ); aa.show( ); bb.show(); } } //A.java public class A { int a=1; double d=2.0; void show( ) { System.out.println("Class A: "+"\ta="+a +"\td="+d); } } //B.java public class B extends A { float a=3.0f; String d="Java program."; int b=4; void show( ) { System.out.println("Class A: "+"\ta="+super.a +"\td="+super.d); super.show( ); System.out.println("Class B: "+"\ta="+a +"\td="+d+"\tb="+b); } } 问题: 1) 这是哪一类java程序? 2) 类A和类B是什么关系? 3) 按程序输出的格式写出程序运行后的结果. 3.阅读下面的程序段,回答以下问题.(4分) if ( x < 5 ) System.out.print(" one "); else { if ( y < 5 ) System.out.print(" two "); else System.out.println(" three "); } 问题: 1)若执行前 x=6, y=8,该程序段输出是什么? 2)若执行前 x=1, y=8,该程序段输出是什么? 4.现有一数据序列为:50 88 6 93 24 18 1 128 87 66 ,请写出使用选择排 序方法进行升序排序的第2趟和第5趟的结果序列。(4分)

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值