Java第二章(Java语言基础)课后小结

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

两大数据类型:基本类型引用类型

基本类型:

整数类型:byte(8位), short(16位), int (32位) , long(64位) (值为有符号二进制补码整数)
浮点类型:float,double
字符类型:char (16位无符号整数,使用Unicode字符集)
布尔类型:boolean (值为true或false,C++ 的布尔类型是bool)

在这里插入图片描述
引用类型:
类类型(class),接口类型(interface),数组类型

二. Java在什么情况会发生整型溢出?请举例说明,并给出解决方案。

发生整性溢出是指:某个数太大了,超出了变量数据类型的取值范围(详细可见上表中基本数据类型的取值范围)

常见的情况:数与数之间进行运算的时候(如两数的加法等等)

例如:

原因:两数相加后超出int的取值范围,因此会输出一个错误的数。

public static void main(String[] args) {
      int m = Integer.MAX_VALUE/2+1; //1073741824
      int n = Integer.MAX_VALUE/2+1;
      int overflow = m + n;
      System.out.println(overflow); //-2147483648
}

修改方法:可以将int类型强转为long类型,这样就不会发生溢出现象,修改如下图:

public static void main(String[] args) {
      int m = Integer.MAX_VALUE/2+1; //1073741824
      int n = Integer.MAX_VALUE/2+1;
      long normal = (long) m + n;
      System.out.println(normal); //2147483648
}

三. Java基本类型的包装类分别是哪些?其高频区间数据缓存范围分别是什么?请选择一种包装类型编程验证其数据缓存特性。

基本类型不是类,但Java提供了与基本类型对应的包装类。

如下:

普通数据类型对应的包装类
charCharacter
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble

高频缓存区间:在这个区间中,我们不需要new一个对象,直接赋值即可使用。

其中Double和Float没有高频缓存区间,而其它高频缓存区间的缓存范围是:

Boolean:使用静态final,就会返回静态值
Byte:-128~127
Short:-128~127
Character:0~127
Long:-128~127
Integer:-128~127

参考查找:Java Platform SE 8
例如:

Integer i1 = 127Integer i2 = 127;
i1 == i2 (返回true)

Integer i1 = 128Integer i2 = 128;
i1 == i2 (返回false

四.什么是自动装箱,什么是自动拆箱,请举例说明。

装箱:值类型向引用类型转换 拆箱:引用类型向值类型转换
简之
自动装箱:自动将基本数据类型转换为包装器类型自动拆箱:自动将包装器类型转换为基本数据类型

例如:

 Integer a=1(自动装箱) => (等价)Integer  a=new Integer(1);
 int b=a    (自动拆箱) => (等价)int b=a.intValue();

五. int与Integer有什么区别,它们之间的相互转化是怎样的? 请通过JDK文档自主学习Integer类,对主要方法进行测试。

区分:int 属于普通数据类型,Integer是 int 所对应的包装类。Java 5引入了自动装箱/拆箱机制,使得二者可以相互转换。
相互转换
int转Integer

int a = 5;
Integer A = new Integer(a);//或者Integer A = Integer.valueOf(a);

Integer转int

Integer A = new Integer(5);
int a = A.intValue();

六. 逻辑运算符&和&&的区别是什么?逻辑运算符&与位运算符&的区别是什么?请分别举例说明

逻辑运算符&和&&的区别
相同点
最终得到的boolean值结果一样,都是“并且and”的意思

不同点
&既是逻辑运算符也是位运算符;&&只是逻辑运算符。
&不具有短路效果,即左边false,右边还会执行;&&具有短路效果,左边为false,右边则不执行。

例如

int a=1,b=2;  //定义两个整形变量,分别赋值为1、2
if(a==2 && b>a && ++a==b)  //条件表达式的值是false,当判断a==2为false时,后面的b>a和++a==b就不执行了,a的值为1
if(a==2 & b>a & ++a==b)      //条件表达式的值是false,当判断a==2为false时,后面的b>a和++a==b继续执行,a的值为2

逻辑运算符&与位运算符&的区别

逻辑运算符&:当&两侧的值都为真时,结果才为真;

例子同上代码

位运算符&:如果相对应位都是1,则结果为1,否则为0;

例子:

B = 0000 1101;
A&B = 0000 1100;//12

七. Java语言中可以采用什么语句跳出多重循环?请举例说明。

1.break

break ;(跳出当前循环)
例如:

        int sum=0;
        for(int i=1;i<=100;i++){
            if(i>10)
                break;
            sum+=i;
        }
输出结果:
55

break lab; (跳出多重循环的外层循环),
其中:break是关键字;lab是用户定义的标号。
例如:

lab:
       for(int i =0; i<2; i++) {
            for(int j=0; j<10; j++) {
                 if (j >1)  { 
                    break lab; 
                 }
                System.out.println(break");
            }
       }
输出结果:
break
break

2.continue

continue;(跳出本层的本次循环,继续本层下一次循环)
例如:

int i;
        for(i=1;i<10;i++){
            if(i==5)
                continue;
            System.out.print(i+"  ");
        }
输出结果:
1 2 3 4 6 7 8 9
//在5这直接跳出循环,执行下一次循环

continue lab;(跳出外层的本次循环,继续外层下一次循环)
例如:

 lab:   for(int i =0; i<2; i++) {
             for(int j=0; j<10; j++) {
                  if (j >1)  { 
                        continue lab; 
                    }
                  System.out.println("continue");
              }
              System.out.println("************");
          }
输出结果:
continue
continue
continue
continue
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值