第二章Java作业

第二章Java作业

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

  • 基本数据类型
    • 整数类型

      • byte(8位,1字节)
      • short(16位,2字节)
      • int(32位,4字节)
      • long(64位,8字节)
    • 浮点类型

      • float(4字节)
      • double(8字节)
    • 字符类型
      char : 16位无符号整数,使用Unicode字符集,2字节

    • 布尔类型
      boolean :值为 true 或 false ,1字节

  • 复合数据类型
    • class 类
    • interface(接口)
    • 数组

图片

在这里插入图片描述

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

整型溢出:当数值已经达到了此类型能够保存的最大值之后,再继续扩大,或者达到了最小值后再继续缩小,就会出现数据溢出问题。
例如:

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
}

修改如下:(用一个比此类型更大的一个类型存储)

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

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

普通数据类型包装类高频数据存储范围
charCharacter0~127
intInteger-128~127
byteByte-128~127
shortShort-128~127
longLong128~127
floatFloat/
doubleDouble/
booleanBoolean使用静态final,就会返回静态值

例如:

Integer varInteger1 = 100 ;   
Integer varInteger2 = Integer.valueOf(100);
System.out.println(varInteger1 == varInteger2);
//结果为true
Integer varInteger1 = 1000 ;  
Integer varInteger2 = Integer.valueOf(1000);
System.out.println(varInteger1 == varInteger2);
//结果为false

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

  • 自动装箱: 自动将基本数据类型转换为包装器类型
  • 自动拆箱: 自动将包装器类型转换为基本数据类型
//自动装箱
Integer a = 10; //等价于 Integer a = Integer.valueOf(10);

//自动拆箱
int b = a; //等价于 int b = a.intValue();

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

区别:

  • Integer是int 的包装类,int是基本数据类型
  • Integer 变量必须实例化后才能使用,int 变量不需要
  • Integer 实际是对象的引用,指向此new 的Integer对象,int 是直接存储数据
  • Integer 的默认值是null,int 的默认值是0

转化

  • int 到 Integer
int a = 1;
Integer A = new Integer(a);
// 或 Integer A = Integer.valueOf(a);
  • Integer 到 int
Integer A = new Integer(1);
int a = A.intValue();

JDK Integer官网

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

  • 逻辑运算符 & 和 && 的区别
算符运算举例运算规则是否是短路运算符
&x & yx,y 均是true 时,结果是true
&&条件与x && yx,y 均是true 时,结果是true

举例:

// &&
public class LogicAnd {
       public static void main(String[] args){   
           int out = 10;
           boolean b1 = false;
           if ((b1 == true) && (out += 10) ==20){
               System.out.println("相等,out="+out);
           } else {
              System.out.println("不等,out="+out);
           }
       }
}
//结果 不相等10
// & 
public class LogicAnd {
       public static void main(String[] args){   
           int out = 10;
           boolean b1 = false;
           if ((b1 == true) & (out += 10) ==20){
               System.out.println("相等,out="+out);
           } else {
              System.out.println("不等,out="+out);
           }
       }
}
//结果 不想等20
  • 逻辑运算符**&** 和 运算 & 的区别
算符运算举例运算规则
&逻辑与x & yx,y均是true ,是结果是true
&位运算2 & 6二进制相应位数若均为1,则是1,否则为0

举例:

//逻辑与 & 
public class LogicAnd {
       public static void main(String[] args){   
           int out = 10;
           boolean b1 = false;
           if ((b1 == true) & (out += 10) ==20){
               System.out.println("相等,out="+out);
           } else {
              System.out.println("不等,out="+out);
           }
       }
}
//结果 不想等20
//位运算 &
int a = 2,b = 6;
int c = a & b;
System.out.println(c);
//结果 2

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

  • break

    • break;跳出循环
    • break lab;跳出lab 指定的循环

例如:

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

//break lab
       lab:
           for(i = 0; i<2; i++) {
                for(int j=0; j<10; j++) {
                     if (j >1)  { 
                        break lab; 
                     }
                    System.out.println("break");
                }
           }
/*输出: 
break
break
 */
  • continue
    • continue; 结束本次循环
    • contiue lab: 结束lab 指定的本次循环

例如:

//continue
		for (i = 0; i < 2; i++) {
			for (int j = 0; j < 10; j++) {
				if (j > 1) {
					continue;
				}
				System.out.println("continue");
			}
			System.out.println("************");
		}

	}
/*  结果
continue
continue
************
continue
continue
************
*/
// 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
*/
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值