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