目录
三、分别简述什么是JDK、JRE、JVM,以及他们之间的关系?
一、char允许存放数字吗?
答:char类型允许存放数字,使用时会去查找数字对应字符,使用字符本身底层使用ASCII码表,表中规定了0-127对应的的字符,其余都是?
二、char是否能存储汉字?为什么?
答:能,但只能存储单个汉字,不能存储字符串。
因为java采用unicode编码,两个字节表示一个字符,无论是数字、字母、还是汉字或者其他内容都可以储存,而char在java中是两个字节,所以可以存储单个汉字
三、分别简述什么是JDK、JRE、JVM,以及他们之间的关系?
答: JDK:Java Development Kit
是java语言的软件开发工具包,整个java的核心,java运行环境JRE,java开发工具 , java基础类库。
JRE:Java Runtime Environment
java的运行环境,包含JVM和java核心类库。
JVM:Java Virtual
java的虚拟机,是整个java实现跨平台最核心的部分,能够运行java语言程序。
四、java实现跨平台的原理是什么?
答:在需要运行的Java应用程序的操作系统上,安装一个java虚拟机,由java虚拟机来负责java程序在系统中的运行,可以让同一个java程序在三个不同操作系统中都可以执行,实现跨平台性,也称为可移植性。
五、Java代码是如何运行的?
编译:通过javac命令将.Java文件编译成.class文件。
执行:先启动Java虚拟机,再通过java虚拟机加载类名.class字节码文件,最后加载main方法执行。
六、标识符及其命名规则?
<1>标识符包括 类名 方法 字符段 变量 包名等
<2> 可以由字母 数字 _ $ 组成
<3> 严格遵循大小写,不能以数字开头,最好见名知意
<4> 不能以关键字命名
七、简述八种基本数据类型以及其所占的字节数。
存储类型 | 关键字 | 范围 | 占用字节 | 默认值 |
整型 | byte | -128——127 | 1个 | 0 |
short | -32768——32767 | 2个 | 0 | |
int | -21e——21e | 4个 | 0 | |
long | 取值范围很大 | 8个 | 0L | |
浮点型 | float | 单精度 | 4个 | 0.0f |
double | 双精度 | 8个 | 0.0 | |
字符型 | char | 0——65535 | 2个 | 空格 0 |
布尔型 | boolean | true false | 1个 | false |
八、java的注释:
答:java代码的解释说明,不影响程序的运行,用于辅助读程序,共分为三种:
单行注释 多行注释 多行注释
九、驼峰命名法:
首字母小写,多个单词从第二个单词开始首字母大写
十、隐式转换和显式转换的区别?
答:<1>小类型转大类型会发生隐式转换,不需要我们操作,编译器会自动进行转换
<2>大类型转小类型会发生显式转换,需要我们在要转换的变量或数字前加小括号,小括号中放入要转换成的数据类型。
<3>需要注意的是,如果小数转换整数,会直接将小数点后所有位数舍弃,不四舍五入。如果整数转化为小数,则在后面加.0
十一、++a和a++区别:
答:++ --在前:++a:先自增,再运算
++ --在后:a++:像运算,再自增
十二、& 和 && 的区别:
答:&:既是位运算符,也是逻辑运算符。
当&的两边时数字时,会将数字转换成二进制数字进行运算
当&的两边是boolean时,会进行逻辑判断
&&:是逻辑运算符,也叫短路与
区别:在判断时,如果表达式结果出现false
&&会直接返回false,不再对后续表达式进行判断,见false就false
&会将表达式都判断完才返回结果
推荐使用短路与,执行效率更高。
十三、switch表达式都可以使用什么数据类型?
答: byte short char int JDK7版本后可以使用String
十四、怎么结束多层循环?
答:设置一个标记,名字随意,:必须有,例如loop:
在想要结束循环的位置写“break loop:”,即可跳出多层循环
十五、分支结构有几种?语法结构怎么写?有什么区别?
答:两种,if和switch
if:①单分支:if(){}括号里写的是 布尔型的判断式
结果为true或者 false 大括号中执行符合条件的代码
②双分支if(){ } else{ }
③多分支if(){ } else if(){ } else if(){ } else{ }
switch: switch() {case 1: case 2: case 3: default: }
括号里写的是变量, case后面写的是变量可能取到的值,
在对应值的冒号后执行符合条件的代码,default代表默认情况,
当不符合case的值时执行defalt中的代码
十六、循环结构有几种?语法结构怎么写?有什么区别?
答:三种
(1)for(初始条件;循环条件;迭代因子) { } : 知道循环次数
(2)while(boolean){ } :循环次数不确定时,先判断,不符合规定,不执行代码
(3)do{ }while(boolean );:循环次数不确定时,代码最少被执行一次,再去判断
十七、生成随机数的方式有几种?语法结构怎么写?有什么区别?
答:两种
Random ran=new Random();
调用ran.nextXXX();随机生成整数,()里可以写范围
Math.random();随机生成小数,可以通过运算达到条件
十八、数组复制的方式有几种?怎么写?有什么区别?
答:三种 int [] a = new int [1];定义初始数组
(1)arrays.copyOf();
例如: int[] b = Arrays.copyOf(a, a.length);
当新数组的长度大于原数组的长度时,将原数组中的内容复制完毕后,后面空余的位置会自动填充数组元素的默认值,也称扩容
(2)system.arraycopy();
例如: System.arraycopy(a,2,b,5,2);
截取目标数组中的一段,括号里有五个参数
第一个参数是原数组,第二个参数是原数组的起始下标,
第三个参数是目标数组,第四个参数是目标数组的起始下标
第五个参数是要复制的长度,
(3)定义数组=原数组
例如: int[ ]b = a;
数组的浅层复制,定义新的数组,没有在堆中新建地址,而是指向了a的地址,如果新的数组中的元素值改变,即改变了地址中的元素值,对应a的元素也会改变,
十九、什么是二维数组?怎么创建二维数组?
答:存放数组的数组,也就是说数组里存的还是数组的数据形式。
数据类型 [ ][ ] 变量名= new 数据类型[要存储多少个一维数组][存储一维数组的长度];
二十、成员变量和局部变量区别?
答:成员变量:蓝色
<1:位置在类中, 方法外
<2:有默认值,可以直接使用
<3:作用域是当前的类中
局部变量:棕色
<1:位置在类的方法中
<2:没有默认值, 必须手动赋值
<3:作用域是所在的方法内
二十一、如何进行单元测试?
答:使用@Test注解进行单元测试,需要导入junit包,并且要求进行测试的方法必须是public void修饰,不能加static,也不能有返回值和参数。