Java第二章学习笔记

写在前面:

第二篇博客啦ovo

这次的博客也是针对一些重点问题进行解释,顺便备忘~

话不多说,正文开始啦

目录

1. Java包含哪两大类数据类型?其中基本类型的每种类型的取值范围和默认值分别是多少?

2. Java在什么情况会发生整型溢出?

3. Java基本类型的包装类分别是哪些?其高频区间数据缓存范围分别是什么?

4.什么是自动装箱,什么是自动拆箱?

5. int与Integer有什么区别,它们之间的相互转化是怎样的?

6. 逻辑运算符&和&&的区别是什么?逻辑运算符&与位运算符&的区别是什么?

7. Java语言中可以采用什么语句跳出多重循环?

正文

1. Java包含哪两大类数据类型?其中基本类型的每种类型的取值范围和默认值分别是多少?

答:

    java数据类型分为两种:

    1.基本数据类型:简单数据类型是不能简化的、内置的数据类型、由编程语言本身定义,它表示了真实的数字、字符和整数。基本数据类型包括:整数类型4个(byte,short,int,long)浮点类型2个(float,double)字符型1个(char)以及布尔型1个(boolean),共计4+2+1+1=8个。
 2.引用数据类型:Java语言本身不支持C++中的结构(struct)或联合(union)数据类型,它的复合数据类型一般都是通过类或接口进行构造,类提供了捆绑数据和方法的方式,同时可以针对程序外部进行信息隐藏。总结:引用数据类型有3种,是类、接口和数组。
 

        

数据类型占几个字节(占几位)最小值最大值默认值举例
byte1(占1*8=8位)-128(负的2的7次方)127(2的7次方减1)0byte a=4;
short2(占2*8=16位)-32768(负的2的15次方)32767(2的15次方减1)0short b=288;
int4(占4*8=32位)-2147483648(负的2的31次方)2147483647(2的31次方减1)0int c=54;
long8(占8*8=64位)负的2的63次方2的63次方减10Llong d=3000L;
float(单精度)4(占4*8=32位)负的2的128次方2的128次方减10.0ffloat f=1.7f;
double(双精度)8(占8*8=64位)负的2的1024次方2的1024次方减10.0ddouble e=7.89;
char2(占2*8=16位)--'u0000'char f='f';

忘记了还有一个boolean,是2字节16位的,默认值是false。注意,不可以把boolean类型作为赋值语句给int或其他类型,这与c语言是不一样的。

2. Java在什么情况会发生整型溢出?

答:

如果你仔细学习了上面的表格,你应该很容易做出解答。但是,这里依然会给出答案:

当赋值超过整形的最大值的时候(这个值是多少?请尝试在不看表格的情况下独立解答)就会发生整型溢出。举例:有语句int OverFlow=200000000000000000000;那么如果尝试输出(OverFlow+1),就会发生整型溢出。


3. Java基本类型的包装类分别是哪些?其高频区间数据缓存范围分别是什么?

答:

Java中的8个包装类分别是:Byte,Short,Integer,Long,Float,Double,Character,Boolean

对应的高频区间为:

Byte:-128~127
Short:-128~127
Character:0~127
Long:-128~127
Integer:-128~127

至于double和float,则没有缓存区间,切记。

如果所使用的包装类的值在这个缓存区间内,就会直接复用已有对象,在缓存区间之外的数值会重新在堆上产生。

我们知道,Java中判断两个数是否相等,如果使用Integer类型,实际上判断的是两个对象的地址是否相等。如果在高频区间内,由于直接复用已有对象,自然地址值相同,将返回True;否则,在堆上产生的时候,两个数值相同的变量将分配在两个不同的地址上,根据判断规则,将返回False。

4.什么是自动装箱,什么是自动拆箱?

答:

自动装箱就是Java自动将原始类型值转换成对应的对象,比如将int的变量转换成Integer对象,这个过程叫做装箱,反之将Integer对象转换成int类型值,这个过程叫做拆箱。

5. int与Integer有什么区别,它们之间的相互转化是怎样的?

答:

1.Integer是int的包装类;int是基本数据类型;

2.Integer变量必须实例化后才能使用;int变量不需要;

3.Integer实际是对象的引用,指向此new的Integer对象;int是直接存储数据值 ;

4.Integer的默认值是null;int的默认值是0。

6. 逻辑运算符&和&&的区别是什么?逻辑运算符&与位运算符&的区别是什么?

答:

“&”和“|”在执行操作时,运算符左右两边的表达式首先被运算执行,再对两表达式的结果进行与、或运算。

而利用“&&”和“||”执行操作时,如果从左边的表达式中得到操作数能确定运算结果,则不再对右边的表达式进行运算。

采用“&&”和“||”具有“短路”效应,目的是为了加快运算速度。

举个例子来看看:

boolean a=false;

int b=10;

if(a==true&&(b+=10)==20)a=true;

此时如果输出b,得到结果为10,而不是20。原因是,采用&&,则具有短路效应,左面的式子中,a为false,不为true,所以a==true的结果是假,又因为短路效应,所以右面的式子不执行,因此b=10。

注意,当&两侧的对象不同的时候,将具有不同的含义。如果都是Boolean,则进行逻辑与;如果都是数值,进行按位与;否则就会报错。请再次注意Java中不能将数值类型和布尔类型相互赋值。

7. Java语言中可以采用什么语句跳出多重循环?

答:

可以采用例如break lab的语句。注意,这里的lab需要事先声明。

总结:break lab可以跳出多重循环的外层循环

好啦~这一章的博客就写到这里啦,撒花*★,°*:.☆( ̄▽ ̄)/$:*.°★* 。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值