关于Java(2)
陈述类
Java包含哪两大类数据类型?其中基本类型的每种类型的取值范围和默认值分别是多少? 分为基本数据类型和基本引用类型。 基本数据类型见下图: 基本引用类型:数组、类、接口。默认值:nullJava在什么情况会发生整型溢出?请举例说明,并给出解决方案。 发生情况 :当某一种类型的数值已经达到了此类型能够保存的最大值之后,再继续扩大,或者达到了最小值后再继续缩小,就会出现数据溢出问题。
public class MyDemo {
public static void main ( String args [ ] ) {
int a = 2147483647 ;
System. out. println ( a + 1 ) ;
}
}
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) ;
System. out. println ( i3 == i4) ;
Double d1 = 100.0 ;
Double d2 = 100.0 ;
Double d3 = 200.0 ;
Double d4 = 200.0 ;
System. out. println ( d1 == d2) ;
System. out. println ( d3 == d4) ;
Boolean b1 = false ;
Boolean b2 = false ;
Boolean b3 = true ;
Boolean b4 = true ;
System. out. println ( b1 == b2) ;
System. out. println ( b3 == b4) ;
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;
if ( k== 3 ) break 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 ;
}
}
}
}