Java第二章作业——Java语言基础

简单数据类型

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

    Java中的数据类型分为两大类分别是基本类型引用类型

数据类型所占位数取值范围默认值
byte8-2^7 ~ 2^7-10
short16-2^15 ~ 2^15-10
int32-2^31 ~ 2^31-10
long64-2^63 ~ 2^63-10
float321.4E-45 ~3.4E+380.0f
double644.9E-324 ~1.7E3080.0d
char16——‘\u0000’
boolean64——false
public class IntegerExample {
    public static void main(String[] args) {
        System.out.println(Integer.MAX_VALUE);
        System.out.println(Integer.MIN_VALUE);
    }
}
 2147483647
-2147483648

字符型变量:类型为char,它在机器中占16位,其范围为0~65535,
默认值为’\u0000’,表示NUL,空的不可见字符
字符串变量:用String表示,String 不是原始类型,而是一个类(class)

String str=Hello\u0041\n”;//定义一个字符串变量,初值为HelloA
char[] str=Hello;//编译错误,不支持字符串类型到字符数组类型的转换

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

在选用整数类型上,一定要注意数的范围,否则可能由于数的类型选择不当而造成溢出,例如下面的代码add就存在着潜在的溢出问题,从而为程序带来Bug。

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 normal = (long) m + n;
      System.out.println(normal); //2147483648
}

基本数据类型及其对应包装类

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

普通数据类型对应的包装类高频区间数据缓存范围
byteByte-128~127
shortShort-128~127
intInteger-128~127
longLong-128~127
floatFloat——
doubleDouble——
charCharacter——
booleanBoolean使用静态final,就会返回静态值
public static void main(String[] args) {
        Integer a = 100;//自动装箱
        Integer b = Integer.valueOf(100);
        System.out.println(a == b);//true
    }
public static void main(String[] args) {
        Integer a = 1000;//自动装箱
        Integer b = Integer.valueOf(1000);
        System.out.println(a == b);//false
    }

Integer默认会在-128到127(高频数值)之间复用已有缓存对象,以提高性能。

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

自动装箱:将基本数据类型转换为封装类型
自动拆箱:将封装类型转换为基本数据类型
Integer a = 100;//自动装箱
Integer a = Integer.valueOf(100);
int b = a;//自动拆箱
int b = a.intValue();
//自动装箱,相当于Java编译器替我们执行了 Integer.valueOf(XXX);
//自动拆箱,相当于Java编译器替我们执行了Integer.intValue(XXX);

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

表达式

表达式使用运算符把操作数连接起来的式子,可分为算术表达式、关系表达式、逻辑表达式、复制表达式、条件表达式。对各种类型的数据进行加工的过程成为运算,表示各种不同运算的符号成为运算符,参与运算的数据称为操作数。
按照操作数的数目来分,可有:
一元运算符:++,–,+(正数),-(取负)
二元运算符:+,-,>,instanceof(对象运算符),==等
三元运算符:?:

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

注意:
Java中的算术运算主要依赖于Math类的静态方法,例如:
——取绝对值:Math.abs(Type i),Type可以为int、long、float、double
——对数取三角和反三角函数、对数和指数、乘方、开方
——求两个数的最大最小值
——得到随机数(random(),类型为double)
——对浮点数进行处理:四舍五入(round)、ceil(取大值)、floor(取小值)

public class Test {
    public static void main(String[]args){
        System.out.println(Math.ceil(5.2));
        System.out.println(Math.ceil(5.6));
        System.out.println(Math.ceil(-5.2));
        System.out.println(Math.ceil(-5.6));
        System.out.println(Math.floor(5.2));
        System.out.println(Math.floor(5.6));
        System.out.println(Math.floor(-5.2));
        System.out.println(Math.floor(-5.6));
        System.out.println(Math.round(5.2));
        System.out.println(Math.round(5.6));
        System.out.println(Math.round(-5.2));
        System.out.println(Math.round(-5.6));
    }
}

输出:

6.0
6.0
-5.0
-5.0
5.0
5.0
-6.0
-6.0
5
6
-5
-6

控制语句

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

Java语言提供了4种转移语句:break,continue,return和throw

break语句:

break;//跳出本层循环
break lab;//跳出多重循环的外层循环
其中:break是关键字;lab是用户定义的标号
public static void main(String args[]){
        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

continue语句:

continue语句只能用于循环结构中,其作用是使循环短路。
continue;//跳出本层的本次循环,继续本层下一次循环
continue lab;//跳出外层的本次循环,继续外层下一次循环
public static void main(String args[]){
        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//i=0,j=0
continue//i=0,j=1
continue//i=1,j=0
continue//i=1,j=1

返回语句return:

return语句从当前方法中退出,返回到调用该方法的语句处,并从紧跟该语句的下一条语句继续程序的执行
返回语句有两种格式:
		return expression;
		return;
return语句通常用在一个方法体的最后,否则会产生编译错误。

注意

1.两个整数相加,结果默认转化为int,赋值给byte或short时会发生类型转化问题。
例如下面的代码b+c的结果必须进行显式转化。

public static void main(String[] args) {
    byte b = 27;
    byte c = 26;
    byte d = b + c;
    //Type mismatch: cannot convert from int to byte
    //不兼容的类型: 从int转换到byte可能会有损失
}
public static void main(String[] args) {
    byte b = 27;
    byte c = 26;
    byte d = (byte)(b + c);
}
  1. 简单数据类型举例
public class Test {
    public static void main(String args[]){
        int x,y;//定义x,y两个整型变量
        float z=1.234f;//指定变量z为float型,且赋初值为1.234
        double w=1.234;//指定变量w为double型,且赋初值为1.234
        boolean flag=true;//指定变量flag为boolean型,且赋初值为true
        char c;//定义字符型变量c
        String str;//定义字符串型变量str
        String str1="Hi";//指定变量str1为String型,且赋初值为Hi
        c='A';//给字符型变量c赋值'A'
        str="bye";给字符串变量str赋值"bye"
        x=12;//给整型变量x赋值为12
        y=300;//给整型变量y赋值为300
    }
}

3.数据类型转换

不同类型数据间的优先关系如下:
低---------------------------------------->高
byte,short,char->int->long->float-> double

自动类型转换规则:
①byte、short、char类型被提升到int类型
②整型, 浮点型,字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算,转换从低级到高级

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值