一、简答题
1. 简述JDK、JRE、JVM分别是什么? 以及它们之间的包含关系 JDK是java语言的环境开发包, JVM虚拟机是编译java文件的编译器,用来将java代码编译到各类操作系统. JRE是用于java开发的核心类库 JRE:是指java运行环境.包含JVM虚拟机及JAVA核心类库 JDK:是Java语言的软件开发工具包,内部包含了代码的编译工具和运行工具 JVM:是编译java文件的编译器,用来将java代码编译到各类操作系统. 2. 写出Java中,基本数据类型的关键字 (四类八种) 整型:int short long 浮点型:double folat 布尔型: true false 字符串型:String 整数:byte,short,int,long 浮点数:float,double 字符:char 布尔:boolean 3. 实现键盘录入的三个步骤分别是什么? (文字+代码) //导包 import java.util.Scanner //新建键盘录入对象 Scanner sc = new Scanner(System.in); //获取键盘录入值 int mun = sc.nextInt(); 4. 什么是标识符? 标识符的4个定义规则 (看清楚题意,写完整) 用于定义或命名的具有特殊含义的字符 命名规则: 全小写字母 如:value 小写字母后加数字 如:value01 字母与数字连接符 如:value_01 大写字母开头 如: Demo 标识符:给类,方法,变量等起名字的符号. 小驼峰命名法:方法,变量 1.标识符是一个单词的时候,首字母小写.如:name 2.标识符由多个单词构成时,第一个单词首字母小写,其他单词首字母大写.如:firstName 大驼峰命名法: 1.标识符是一个单词的时候,首字母大写.如:Demo 2.标识符由多个单词组成的时候,每个单词的首字母大写.如DemoHelloWorld 5. 简述Java中针对整数,除(/)和取余(%)的区别 /:表示两数相除的商,小数部分直接舍去 %:表示两数相除后,取余数 6. 简述短路与(&&)和短路或(||)的区别 -> 我们推荐都是用短路逻辑运算符,因为可以稍微的提升代码的效率 短路&&表示,当运算符两边有任意一个为false,则计算结果均为false,必须两边均为true,计算结果才为true 短路||表示,当运算符两边有任意一个为true,则计算结果均为true,当两边均为false时,计算结果才为false 短路与&&,如果左边为真,右边执行;如果左边为假,右边不执行. 短路或||,如果左边为假,右边执行;如果左边为真,右边不执行. 7. 写出三元运算符的格式 int a = 10; int b = 20; a > b ? a : b; 格式:关系表达式 ? 表达式1 : 表达式2; 8. 简述for、while、do..while三种循环之间的区别 for(条件初始化 ; 循环执行判断条件 ; 条件变量变化 ){循环体} 条件初始化 while(循环执行判断条件){ 循环体 } 条件初始化 do{ 循环体 }while(循环执行条件); 区别:for循环和while循环都是先判断,后执行 do...while循环是先执行,后判断 其次就是格式上的区别 三种循环的区别: for循环和while循环先判断条件是否成立,然后决定是否执行循环体(先判断,后执行) do...while循环先执行依次循环体,然后判断条件是否成立,是否执行循环体(先执行,后判断) for和while的区别: 条件控制语句所控制的自增变量,因为归属for循环的语法结构中,在for循环结束后,就不能再次被访问到了 条件控制语句所控制的自增变量,对于while循环来说不归属其语法结构中,在while循环结束后,该变量还可以 继续使用. 9. 写出三种循环的死循环格式 for(;;){} while(true){} do{}while(true); 10. 简述break和continue作用 break 可直接跳出循环,不管循环后面的判断条件是否为true continue 跳过当前执行的这次循环 , 但如果循环后面的判断条件为true则继续执行接下来的循环. continue 用在循环中,基于条件控制,跳过某次循环体内容的执行,继续下一次的执行 break 用在循环中,基于条件控制,终止循环体内容的执行,也就是说结束当前的整个循环 11. Random随机数对象的使用步骤(文字+代码) //导包 import java.util.Random //创建随机数对象 Random rd = new Random(); //使用随机数对象 int num = rd.ints(10,20); 12. 简述IDEA的工程目录结构 工程目录 -> src目录 -> package包:java包 -> java文件 project->module->package->class 项目工程->模块->包->类 13. 初始化数组的两种方式(中文+代码举例说明) //动态初始化. int[] arr = new int[3]; arr[0] =1; arr[1] =1; arr[2] =1; //静态初始化 int[] arr = {1,2,3}; 14. 写出数组操作过程中,常见的两个异常及原因 1.超出数组堆内存的调用,如:数组:int[] arr={1,2,3},其中只有三个元素,但调用时使用 arr[3],超出数组元素个数,从而出现异常. 2.指针异常,当两个变量同时指向同一个数组时,一个变量的值发生变化时,会同时影响数组中的值也发生变化,从而导致另一个变量也发生变化. 1.索引越界:访问了数组中不存在的索引对应的元素,造成索引越界问题 2.空指针异常:访问的数组已经不在指向堆内存数据,造成空指针异常 15. 简述形参和实参的区别,及作用 实参:用于定义参数的值,将参数传递给被调用的方法 形参:用于接受实际参数,并且在方法中参与运算 形参:形式参数,方法定义中的参数 实参:实际参数,方法调用中的参数 16. 写出方法定义的通用格式(写完整!) 权限 状态 返回值类型 方法名 (参数数据类型 参数){方法体} 公共,私有 静态,动态 空,int,String main,getMax (int a ){... } public static void main(String[] args){} 格式: public static 返回值类型 方法名 (参数){ return 数据; } 17. 简述方法的重载 方法名相同,但 参数数据类型 或 参数数据数量不同 ,一般用于同一个功能争对不同参数数据类型或参数数量创建的多个方法. 方法重载的概述 在同一个类中,定义了多个同名的方法,但每个方法具有不同的参数类型或参数个数,这些同名的方法,就构成了重载 关系 同一个类中,方法名相同,参数不同的方法.(参数不同:个数不同,类型不同,顺序不同)
二、编码题
/* 分析并完成以下需求: 键盘录入三个整数,设计程序求出三个整数的中间值,控制台如下 请连续输入三个整数: 5 2 8 三个整数中间值是:5 */ //在IDEA编码完成后,包含main方法复制到这里即可! public static void main(String[] args) { //创建键盘输入对象 Scanner sc = new Scanner(System.in); //打印提示语句 System.out.println("请连续输入三个整数:"); //接受键盘录入对象 int a = sc.nextInt(); int b = sc.nextInt(); int c = sc.nextInt(); //判断最大值和最小值,并求出中间值 int min = (a<b?a:b)<c?(a<b?a:b):c; int max = (a>b?a:b)>c?(a>b?a:b):c; int mid = a+b+c-max-min; System.out.println("三个整数的中间值是:"+mid); }
/* 分析并完成以下需求: 定义一个方法getCount, 该方法可以在指定数组中, 判断低于元素平均值元素的个数, 并返回 main方法中, 使用生成一个范围在[1-50]的随机数组arr, 测试getCount方法 */ //在IDEA编码完成后,包含main方法复制到这里即可!
public static void main(String[] args) { //新建Random对象 Random rd = new Random(); //新建动态数组 int[] arr = new int[5]; for (int i = 0; i < arr.length; i++) { arr[i] = rd.nextInt(50); System.out.println("生成的随机数有:"+arr[i]); } System.out.println("低于元素平均值的个数有"+getCount(arr)+"个"); } public static int getCount(int arr[]) { //求元素平均值 int sum = 0; for (int i = 0; i < arr.length; i++) { sum += arr[i]; } int avg = sum / arr.length; //低于元素平均值的个数 int count = 0; for (int i = 0; i < arr.length; i++) { if(arr[i]<avg){ count++; } } return count; }