关于Java(2)
陈述类
- Java包含哪两大类数据类型?其中基本类型的每种类型的取值范围和默认值分别是多少?
分为基本数据类型和基本引用类型。
基本数据类型见下图:
基本引用类型:数组、类、接口。默认值:null - Java在什么情况会发生整型溢出?请举例说明,并给出解决方案。
发生情况:当某一种类型的数值已经达到了此类型能够保存的最大值之后,再继续扩大,或者达到了最小值后再继续缩小,就会出现数据溢出问题。
public class MyDemo{
public static void main(String args []){
int a = 2147483647;
//定义一个int型变量a的值为int型能够保存的最高值
System.out.println(a + 1);
}
}
//输出的结果为:-2147483648
- Java基本类型的包装类分别是哪些?其高频区间数据缓存范围分别是什么?请选择一种包装类型编程验证其数据缓存特性。
Java中的8个包装类:Byte,Short,Integer,Long,Float,Double,Character,Boolean它们的使用方式都是一样的,可以实现原生数据类型与包装类型的双向转换。
高频区间数据缓存范围:
Byte:-128~127;
Short:-128~127;
Character(char):0~127;
Long:-128~127;
Integer:-128~127;
Double和Float没有缓存;
Boolean:使用静态final,就会返回静态值;
注意:如果所使用的包装类的值在这个缓存区间内,就会直接复用已有对象,在缓存区间之外的数值会重新在堆上产生。所以在判断是否相等时不要用 “==”,用equals - 什么是自动装箱,什么是自动拆箱,请举例说明。
装箱:基本类型转变为包装器类型的过程。
拆箱:包装器类型转变为基本类型的过程。
Integer i1 = 100;
Integer i2 = 100;
Integer i3 = 200;
Integer i4 = 200;
System.out.println(i1 == i2); //true
System.out.println(i3 == i4); //false
Double d1 = 100.0;
Double d2 = 100.0;
Double d3 = 200.0;
Double d4 = 200.0;
System.out.println(d1 == d2); //false
System.out.println(d3 == d4); //false
Boolean b1 = false;
Boolean b2 = false;
Boolean b3 = true;
Boolean b4 = true;
System.out.println(b1 == b2); //true
System.out.println(b3 == b4); //true
- int与Integer有什么区别,它们之间的相互转化是怎样的?(请通过JDK文档自主学习integer类,对主要方法进行测试。)
区别:
- Integer是int的包装类;int是基本数据类型;
- Integer变量必须实例化后才能使用;int变量不需要;
- Integer实际是对象的引用,指向此new的Integer对象;int是直接存储数据值 ;
- Integer的默认值是null;int的默认值是0。
- 逻辑运算符&和&&的区别是什么?逻辑运算符&与位运算符&的区别是什么?请分别举例说明。
- &:(1)按位运算符; (2)逻辑运算符
- 作为位运算符时&,如果相对应位都是1,则结果为1,否则为0。假设整数变量A的值为60和变量B的值为13。即A = 0011 1100 B = 0000 1101。则(A&B),得到12,即0000 1100。
- 作为逻辑运算符时,&左右两端条件式有一个为假就会不成立,但是两端都会运行,比如(1+2)=4 &(1+2)=3;1+2=4即使为假也会去判断1+2=3是否成立。
- &&——逻辑运算符
&&也叫做短路运算符,因为只要左端条件式为假直接不成立,不会去判断右端条件式。
相同点:只要有一端为假,则语句不成立
- Java语言中可以采用什么语句跳出多重循环?请举例说明。
public void continueLabelTest(){
outer:
for(int i = 0; i<5; i++){
for(int j = 0; j<6; j++){
if(j == 4){
continue outer;
}
System.out.println(j);
}
System.out.println("test");
}
System.out.println("finish");
}
- break:结束整个循环,只会结束一层循环,比如说有两层for,那么break内层循环只会结束内层循环,继续执行外层循环
first:
for (int i = 0; i <10 ; i++) {
second:
for (int j = 0; j <5 ; j++) {
for (int k = 0; k < 3; k++) {
if(k==2) break first;//跳出first循环
if(k==3) break second;//跳出second循环
}
}
- return结束多层循环:直接结束整个函数返回结果,后续代码自然不再执行
public class Main {
public static void main(String[] args) {
for(int i=0;i<10;++i) {
for(int j=0;j<10;++j){
System.out.println(j);
if(j==5)
return;
// 直接结束整个函数返回结果,后续代码自然不再执行
}
}
}
}