动手动脑及课后实验性作业

人盡茶涼 提交于 2020-03-01 07:22:51

1.第一个动手动脑:

package test2;

 

public class EnumTest {

 

  public static void main(String[] args) {

     // TODO 自动生成的方法存根

     Size s=Size.SMALL;

     Size t=Size.LARGE;

     //s和t引用同一个对象?

     System.out.println(s==t);//

     //是原始数据类型吗?

     System.out.println(s.getClass().isPrimitive());

     //从字符串中转换

     Size u=Size.valueOf("SMALL");

     System.out.println(s==u); //true

     //列出它的所有值

     for(Size value:Size.values()){

       System.out.println(value);

     }

  }

}

enum Size {SMALL,MEDIUM,LARGE};

 

枚举类型是引用类型不属于原始数据类型,它的每个具体值都引用到一个特定的对象,相同的值则引用同一个对象。

S=Size.SMALL,t=Size.LARGEs和t引用的不是同一个值所以就不是同一个对象,所以输出false

System.out.println(s==t);属于枚举类型,而枚举类型不属于原始数据类型,所以输出false

因为u=Size.valueOf(“SMALL”)System.out.println(s==u);枚举变量的值是相同的,所以是正确的所以输出true

最后因为枚举的value中三个值是SMALL,MEDIUM,LARGE,所以输出这三个值。

得出结论:

枚举需要将字串转化为枚举Java中除了int,float等几个数据类型,其余的数据类型都用来引用对象。

枚举不属于原始数据类型,它的每个具体值都引用一个特定的对象。相同的值则引用同一个对象。

可以用“==”和“equals()”方法直接比对枚举变量的值。

2.课后练习:

在计算机内,定点数有3种表示发:原码、反码和补码

反码

作用:储存数值(多数计算机不采用反码表示数值)

原码

所谓的原码就是二进制定点的表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值大小

3.动手动脑二:

      结论是图画错了,float->double只有在strictfp的模式下才是无精度损失的;byte->short->float的转换也是无精度损失的,理应在short到flost之间画一道实线;char->float之间也应该有一道实线;int->double也是无精度损失,应将虚线改成实线;long可以转换到float,在long和float之间也应该有一条虚线。

4.动手实验:

 

意外,使用double类型的数值进行计算,其结果是不精确的。

Double类型的数值占用64bit,即64个二进制数,除去最高位表示正负符号的位,在最低位上一定会与实际数据存在误差,简单地说就是我们给出的数值,在大多数情况下需要比64bit更多的位数才能准确表示出来,而double类型的数值只有64bit,后面舍去的位数一定会带来误差,无法得到“数学上精确”的结果。

5.动手动脑:

     

“+”放前面代表字符串的连接

“+”放后面代表运算

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1.第一个动手动脑:

package test2;

 

public class EnumTest {

 

  public static void main(String[] args) {

     // TODO 自动生成的方法存根

     Size s=Size.SMALL;

     Size t=Size.LARGE;

     //s和t引用同一个对象?

     System.out.println(s==t);//

     //是原始数据类型吗?

     System.out.println(s.getClass().isPrimitive());

     //从字符串中转换

     Size u=Size.valueOf("SMALL");

     System.out.println(s==u); //true

     //列出它的所有值

     for(Size value:Size.values()){

       System.out.println(value);

     }

  }

}

enum Size {SMALL,MEDIUM,LARGE};

 

枚举类型是引用类型不属于原始数据类型,它的每个具体值都引用到一个特定的对象,相同的值则引用同一个对象。

S=Size.SMALL,t=Size.LARGEs和t引用的不是同一个值所以就不是同一个对象,所以输出false

System.out.println(s==t);属于枚举类型,而枚举类型不属于原始数据类型,所以输出false

因为u=Size.valueOf(“SMALL”)System.out.println(s==u);枚举变量的值是相同的,所以是正确的所以输出true

最后因为枚举的value中三个值是SMALL,MEDIUM,LARGE,所以输出这三个值。

得出结论:

枚举需要将字串转化为枚举Java中除了int,float等几个数据类型,其余的数据类型都用来引用对象。

枚举不属于原始数据类型,它的每个具体值都引用一个特定的对象。相同的值则引用同一个对象。

可以用“==”和“equals()”方法直接比对枚举变量的值。

2.课后练习:

在计算机内,定点数有3种表示发:原码、反码和补码

反码

作用:储存数值(多数计算机不采用反码表示数值)

原码

所谓的原码就是二进制定点的表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值大小

3.动手动脑二:

      结论是图画错了,float->double只有在strictfp的模式下才是无精度损失的;byte->short->float的转换也是无精度损失的,理应在short到flost之间画一道实线;char->float之间也应该有一道实线;int->double也是无精度损失,应将虚线改成实线;long可以转换到float,在long和float之间也应该有一条虚线。

4.动手实验:

 

意外,使用double类型的数值进行计算,其结果是不精确的。

Double类型的数值占用64bit,即64个二进制数,除去最高位表示正负符号的位,在最低位上一定会与实际数据存在误差,简单地说就是我们给出的数值,在大多数情况下需要比64bit更多的位数才能准确表示出来,而double类型的数值只有64bit,后面舍去的位数一定会带来误差,无法得到“数学上精确”的结果。

5.动手动脑:

     

“+”放前面代表字符串的连接

“+”放后面代表运算

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!