Java语言基础试题

1.Java是怎样跨平台的,javac.exe,java.exe的作用是什么?

   答:Java是通过Java虚拟机跨平台的,不同的平台使用不同的虚拟机,编译的Java字节码文件是相同的。

        javac.exe:是用来编译Java文件的,将Java文件编译成字节码文件,再用虚拟机上运行。

        java.exe:是用来解释执行Java字节码文件的。

 

2.Java的编码规范请写出四点, Java的注释有哪几种?

   答:(1).文件名必须要和类名一样。

         (2).必须区分大小写。

         (3).括号要成对出现。

         (4). 缩进。

       Java的注释有三种:

         第一种是 / / 注释 这种注释只注释一行

         第二种是/* */注释 这种注释可以注释多行

         第三种是/****/注释,文档注释

 

3.请写出Java的八种基本类型以及它们对应的包装类名称(用英文写), 包装类能够将什么转换成基本类型?

   答:int----------------Integer

        short--------------Short     

        byte---------------Byte

        float---------------Float

        double------------Double

        long---------------Long

        char---------------Character

        boolean-----------Boolean

     包装类能够将String转换成基本类型

 

4.short a = 1;

   a = a + 1; 请给出程序运行结果, 并说明原因.  

   答:结果错误,因为short型运行时自动提升为int型,所以要进行强转。

 

   short a = 1;

   a += 1;请给出程序运行结果, 并说明原因.

   答:结果正确,因为a+=1强转已经在虚拟机内部解决。

 

5.Java语言的基本数据类型之间可以进行类型转换,类型转换有几种转换方式?如果进行基本类型之间的类型转换,请分别举例说明,并说明类型转换时应该注意哪些地方?

   答:强制类型转换、自动类型转换

        强转示例:

        short i =1;

        i =(short)i+1;

 

        自动示例:

        short i =1;

        int j = i+1;

 

6.三元运算符可以表示一个简单的if else语句,将”如果a>0,a=0,否则a=1”这句描述用三元运算符”?:”来表示.

   答:a = a>0?0:1;

 

7.我要1000-9999之间的随机数,该怎么得到,请写出代码.

   提示:方式一: Math.random()方法返回一个0-1之间的double类型的随机数

         方式二: int[] num = {0,1,2,3,4,5,6,7,8,9},随机四个下标,将对应的数取出来,然后将值连接起来

class SuiJi{
    public static void main(String[] args){
        for(int i = 0; i<10000; i++){ 
            double val = Math.random()*10000;
            if((int) val>1000){ 
               System.out.println((int)val);
            }
        }
	}
}

 

 

8.编写一个程序,打印出1-100之间的奇数,并算出所有的奇数和,并打印出来

class JiShu {
	public static void main(String[] args){
		int std = 0;
		for(int i = 1;i<100;i++){
			if(i%2 !=0){
				std+=i;
				System.out.println(i);
			}
		}
		System.out.println(std);
	}
}

 

9.switch语句中的指定的变量,只能是哪几种类型? switch中如果省略了break,会怎么执行?

   答:int型、byte型、short型、char型。

        switch中如果省略了break,程序一直执行下去,直到碰到break语句跳出,否则一直执行下去,直到程序结束。

 

10.编写一个程序,打印出以下图形,行数自己确定

                  *

                 ***

                *****

class Sjx{
	public static void main(String[] args){
		int a = 5;
		for(int i = 1;i < a;i++){
			for(int j = 1;j <= a-i;j++){
				System.out.print(" ");
			}
			for(int k =0;k< 2 *i -1;k++ ){
				System.out.print("*");
			}
			System.out.println();
		}
	}
}

 

11.months是一个代表12个月 天数的数组,请写出代码初始化这个数组,必须两种方式

   答:方式一:int[] months = new int[]{31,28,31,30,31,30,31,31,30,31,30,31};

        方式二:int[] months = new int[12];

                 months[0] = 31;

                 .............

                 .............

                 months[11] = 31;

 

12.int, char, String数组初始化后初始值分别是什么?

   答:int初始化后初始值为:0。

        char初始化后初始值为:''。

        String初始化后初始值为:null。

 

13.编写一个程序,使用for循环语句求二维数组{{1,2,3},{0,3,1},{5,3,4}}所有元素的和.

class ShuZu {
      public static void main(String[] args){
		   int[][] numArray = new int[][]{{1,2,3},{0,3,1},{5,3,4}};
		   int all = 0;
		   for (int i=0; i<numArray.length;i++){
			   for (int j=0; j<numArray[i].length;j++){
			    	System.out.print(numArray[i][j] + "   ");
				    all+= numArray[i][j];	
			   }
			   System.out.println();
		   }
		   System.out.println("sum=" + all);
	  }
}

 

 

14.编写程序,使用排序函数将数组{65,5,9,87,6,54,3,21}, 进行倒序(从大到小)排序, 并输出,请用方法的思想编写程序. .思想为:有一个工具,具有给数组排序的功能,和打印数组的功能.

    提示:导包代码: import java.util.Arrays;  排正序方法: Arrays.sort();

import java.util.Arrays;
class ArrayStd{
	int[] sortArray(int[] array){
		Arrays.sort(array);
		int[] newArray = new int[array.length];
		for(int i=0; i<array.length; i++){
			newArray[i] = array[array.length-1-i];
		}
		return newArray;
	}
	void printArray(int[] array){
		for(int i=0; i<array.length; i++){
			System.out.println(array[i]);
		}
	}
}
class Sort{
	public static void main(String[] args){
		ArrayStd at = new ArrayStd ();
		int[] numArray = new int[]{65,5,9,87,6,54,3,21};
		numArray = at.sortArray(numArray);
		at.printArray(numArray);
	}
}

 

15.如果访问数组中不存在的元素,会抛出什么异常信息.

   答:下标越界: ArrayIndexOutOfBoundsException

 

16.请说明String s = null, String s = “”这两种赋值有什么区别

    答:一个是没有初始化

          一个是初始化了但里面没有值

17.编写程序,使用字符串分割函数将”I’  m  a  String ”按空格分成多个子串,并输出分割后的子串. 请用方法的思想编写程序.思想为:有一个工具,具有分割字符串的功能(它能返回字符串数组),和打印字符串数组的功能.字符串的split()方法可以分割字符串,参数为条件,返回分割后的字符串数组

import java.util.Arrays;
class StringTool{
	String[] split(String str){
		return str.split(" ");
	}
	void printStringArray(String[] str){
		for(int i=0; i<str.length; i++){
			System.out.println(str[i]);
		}
	}
}
class FenGe{
	public static void main(String[] args){
		String str = "I'm a String";
		StringTool st = new StringTool();
		String[] strArray = st.split(str);
		st.printStringArray(strArray);
	}
}

 

18.请说说类和对象(实例)的关系

     答:类是:同一个类事物进行抽象出来的框架,规定了这类事物标准.

            对象是类的表现形式,是类的一个实体,需要用new 关键字去分配内存空间.

 

19.static 关键字的作用是什么, 它对类和对象的影响是什么, 怎么样调用static类型的变量和方法.静态代码块会在什么时候执行?

     答:static 关键字的作用是静态。

            影响是共享一个static数据,.调用static类型的变量和方法.只需使用 类名.变量 或者 类名.方法. 静态代码块会在类第一次加载的时候执行一次.

 

20.int[] a = new int[]{1,2,3};

     int[] b = a;

     答:a,b引用同一个地址空间,控制同一个数组,  所以a改变后对b是有影响。

 

21.程序题

     题目:实现学生信息系统中的学生增加,学生删除,学生列表三个功能,用方法的思想去实现.

import java.io.*;
class Student
{
	String stdName;
	String chineseMark;
	String mathMark;
	String englishMark;

	//学生初始化方法
	void studentInit(String stdName,String chineseMark,String mathMark,String englishMark)
	{
		//实现方法
		this.stdName = stdName;
		this.chineseMark = chineseMark;
		this.mathMark = mathMark;
		this.englishMark = englishMark;
	}
	//显示学生信息方法
	void studentPrint()
	{
		//实现方法
		System.out.println(stdName + "\t" + chineseMark + "\t" + mathMark + "\t" + englishMark);
	}
}

class StudentArrayTool
{ 
	Student[] stdArray = new Student[20];
	int x = 0;
	//数据库初始化方法
	void stdArrayInit()
	{
		//实现方法
		stdArray[x] = new Student();
		stdArray[x++].studentInit("张三","100","100","100"); 
		stdArray[x] = new Student();
		stdArray[x++].studentInit("李四","100","100","100"); 
		stdArray[x] = new Student();
		stdArray[x++].studentInit("王五","100","100","100"); 
		stdArray[x] = new Student();
		stdArray[x++].studentInit("赵六","100","100","100"); 
		stdArray[x] = new Student();
		stdArray[x++].studentInit("小王","100","100","100"); 
		stdArray[x] = new Student();
		stdArray[x++].studentInit("小李","100","100","100"); 
		stdArray[x] = new Student();
		stdArray[x++].studentInit("瓦纳","100","100","100"); 
		stdArray[x] = new Student();
		stdArray[x++].studentInit("小桥","100","100","100"); 
		stdArray[x] = new Student();
		stdArray[x++].studentInit("小红","100","100","100"); 
		stdArray[x] = new Student();
		stdArray[x++].studentInit("小明","100","100","100");
	}

	//获取学生个数方法
	int getStudentCount()
	{
		//实现方法
		int temp = -1;
		for(int i = 0;i < stdArray.length;i++)
		{
			if(stdArray[i] == null)
			{
				temp = i;
				break;
			}
		}
		return temp;
	}

	//判断学生是否重名
	int sameStdName(String stdName)
	{
		//实现方法
		int temp = -1;
		for(int i = 0;i < stdArray.length;i++)
		{
			if(stdArray[i] == null)
			{
				break;
			}
			if(stdName.equals(stdArray[i].stdName))
			{
				temp = i;
				break;
			}
		}
		return temp;
	}

	//获取输入的字符串方法
	String getInputString(String say) throws IOException
	{
		//实现方法
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		System.out.print(say);
		String temp = br.readLine();
		return temp;
	}

	//显示菜单方法
	void showMenu() throws IOException
	{
		//实现方法
		System.out.println("*****************************");
		System.out.println("*********学生信息系统********");
		System.out.println("*********1.学生信息录入******");
		System.out.println("*********2.学生信息删除******");
		System.out.println("*********3.学生信息列表******");
		System.out.println("*****************************");
		swi(getInputString("请选择功能:"));
	}
	void swi(String temp) throws IOException
	{
		char choose = '0';
		choose = temp.charAt(0);
		switch(choose)
		{
			case '1':
				insertStudent();
				break;
			case '2':
				deleteStudent();
				break;
			case '3':
				listStudent();
				break;
				default:
					
		}
	}

	//增加学生方法
	void insertStudent() throws IOException
	{
		//实现方法
		int temp = -1;
		String name = getInputString("请输入学生姓名");
		temp = sameStdName(name);
		if(temp != -1)
		{
			System.out.println("您输入的学生已存在");
			insertStudent();
		}
		else
		{
			stdArray[x] = new Student();
			stdArray[x].stdName = name;
			String mark = getInputString("请输入语文成绩");			
			stdArray[x].chineseMark = mark;
			mark = getInputString("请输入数学成绩");
			stdArray[x].mathMark = mark;
			mark = getInputString("请输入英语成绩");
			stdArray[x].englishMark = mark;		
			System.out.println("录入成功");
			showMenu();
		}		
	}

	//删除学生
	void deleteStudent() throws IOException
	{
		//实现方法
		int temp = -1;
		temp = sameStdName(getInputString("请输入学生姓名"));
		if(temp != -1)
		{
			for(int i = temp;i < stdArray.length -1;i++)
			{
				stdArray[i] = stdArray[i+1];
				int k = getStudentCount();
				stdArray[k] = null;
				showMenu();
			}
		}
		else
		{
			System.out.println("您输入的学生不存在");
			insertStudent();
		}
		
	}

	//显示学生列表
	void listStudent() throws IOException
	{
		//实现方法
		for(int i = 0;i < stdArray.length;i++)
		{
			if(stdArray[i] == null)
			{
				break;
			}
			stdArray[i].studentPrint();
		}		
	}

	 //程序运行
	void run() throws IOException
	{
		//实现方法
		showMenu();
	}
}

public class StudentSystem
{
	public static void main(String[] args) throws IOException
	{
		//程序运行
		StudentArrayTool g = new StudentArrayTool();
		g.stdArrayInit();
		g.run();

	}
}

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值