• 课后实验


    【动手动脑】

    仔细阅读示例:

    public class EnumTest {

    public static void main(String[] args) { 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");//给u赋值

    System.out.println(s==u);  //true //列出它的所有值

    for(Size value:Size.values()){ System.out.println(value); } }

    } enum Size{SMALL,MEDIUM,LARGE};运行它,分析运行结果。你能得到什么结论?你掌握了枚举类型的基本用法了吗

    回答:

    运行结果:false  false  true SMALL MEDIUM LARGE

    分析结果:s与t不是引用的同一个对象flase;8种原始类型byte,char,short,int,long,float,double,boolean,所以s.getClass().isPrimitive()是enum返回flase;s与u都是SIZE类中的SMALL,为同一个对象,所以是true.

    结果思考:

    枚举型不是原始数据类型是应用类型 ,枚举型判断==与.equals()一样都是判断值

    枚举用法:

        1枚举的定义枚举类型定义的一般形式为:enum 枚举名{ 枚举值表 };

      2枚举变量的说明 如同结构和联合一样,枚举变量也可用不同的方式说明,即先定义后说明,同时定义说明或直接说明。

    设有变量a,b,c被说明为上述的weekday,可采用下述任一种方式:

    enum weekday{ sun,mou,tue,wed,thu,fri,sat };

    enum weekday a,b,c;

    或者为:enum weekday{ sun,mou,tue,wed,thu,fri,sat }a,b,c;

    或者为:enum { sun,mou,tue,wed,thu,fri,sat }a,b,c;

      3枚举元素本身由系统定义了一个表示序号的数值,从0开始顺序定义为0,1,2…。如在weekday中,sun值为0,mon值为1,…,sat值为6

    main(){    enum weekday    { sun,mon,tue,wed,thu,fri,sat } a,b,c;    a=sun;    b=mon;    c=tue;}

    说明: 只能把枚举值赋予枚举变量,不能把元素的数值直接赋予枚举变量。

    如:    a=sum; b=mon;是正确的。而:    a=0; b=1;是错误的。如一定要把数值赋予枚举变量,则必须用强制类型转换。

    如:    a=(enum weekday)2;其意义是将顺序号为2的枚举元素赋予枚举变量a,相当于:    a=tue;

      另外说明:

    还应该说明的是枚举元素不是字符常量也不是字符串常量,使用时不要加单、双引号。

    【动手实验】

    请运行以下代码(TestDouble.java)

    你看到了什么样的输出,意外吗?为什么double类型的数值进行运算得不到“数学上精确”的结果?

    请通过互联网查找资料,或者是阅读相关计算机教材,解决这个问题。 提示: 这个问题,与浮点数在计算机内部的表示方法有关系。可以使用这个知识在搜索引擎中查找相关资料

    运算结果:

    0.05 + 0.01 = 0.060000000000000005
    1.0 - 0.42 = 0.5800000000000001
    4.015 * 100 = 401.49999999999994
    123.3 / 100 = 1.2329999999999999

    分析结果:

    不同进制数值进行运算,double类型的数值占用64bit,即64个二进制数,除去最高位表示正负符号的位,在最低位上一定会与实际数据存在误差(除非实际数据恰好是2的n次方)。

    【动手动脑】

    以下代码的输出结果是什么?

    int X=100;

    int Y=200;

    System.out.println("X+Y="+X+Y);

    System.out.println(X+Y+"=X+Y");

    为什么会有这样的输出结果?

    回答:

    运算结果:

    X+Y=100200
    300=X+Y

    分析结果:

    因为第一个是“x+y=”字符串打头所以+系统理解为是字符串相加,第二个x+y就是整型相加。

    Addtion用消息框求和内容:

    首先import是引用的意思,import javax.swing.JOptionPane。JOptionPane 是有助于方便地弹出要求用户提供值或向其发出通知的标准对话框。

    输入first_Number=
        JOptionPane.showInputDialog("Enter first number");

    输出JOptionPane.showMessageDialog(
        null,"The sum is "+sum,"Results",
        JOptionPane.PLAIN_MESSAGE);

      java保存数据是默认为字符串保存,要将字符串转换为整型数字并进行运算

       将字符串转换为整型int number1=Integer.parseInt(first_Number);

       将字符串转换为double型double number2 = Double.parseDouble(str);

    Enum判断是否为原始数据类型:

    首先Java原始数据类型包括byte、int、char、long、float、double、boolean和short。原始数据类型保存在栈中,保存的是实际值;引用类型也保存在栈中,保存的是一个实际对象的地址。当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关。

    基本型别 大小 最小值 最大值
    boolean ----- ----- ------
    char 16-bit Unicode 0 Unicode 2^16-1
    byte 8-bit -128 +127
    short 16-bit -2^15 +2^15-1
    int 32-bit -2^31 +2^31-1
    long 64-bit -2^63 +2^63-1
    float 32-bit IEEE754 IEEE754
    double 64-bit IEEE754 IEEE754
    void      

    Random判断随机数:

    计算机产生6位随机数可以一次一次的产生然后连接,也可以产生0~999999的数

    import java.util.*;其中Scannerr类还可以任意地对字符串和基本类型(如int和double)的数据进行分析。

      for(int i=0;i<6;i++)
        {
        int intVal=(int)(Math.random()*26+97);

         result=result+(char)intVal;
        }

    或者

      java.util.Random random=new java.util.Random();定义随机数

      int result= random.nextInt(99)产生0~99的随机数

     SwitchTest画图:

      首先import java.awt.Graphics中awt是Java虚拟工具包。

      public class SwitchTest extends JApplet{、、、、}后面加的extends JApplet

      g.drawLine,  g.drawRect,g.drawOval,画图选择。

      ps:其实我没大懂55

    Test字符串相连的问题:

      int X=100; int Y=200;

      System.out.println("X+Y="+X+Y); System.out.println(X+Y+"=X+Y");

       结果显示是1.x+y=100200 2.300=x+y

      因为第一个是“x+y=”字符串打头所以+系统理解为是字符串相加,第二个x+y就是整型相加。

    TestBigDeccimal:

      为了解决基本数据类型浮点数不能进行精确计算的问题,Java中专门提供了java.math.BigDecimal类,调用import java.math.BigDecimal其提供浮点数的精确计算功能。

      加" "与不加" "的区别:加了是表示规定数据格式-保留数据的位数,不加是无限小数double类型.

     
    2
    3
     
     
    BigDecimal d = new BigDecimal(1.0 3.0); //定义一个无限小数
    DecimalFormat df = new DecimalFormat("0.00"); //定义数据格式,保留两位小数

      通过调用bigdecimal:

      加:f1.add(f2) 减:f1.subtract(f2) 乘:f1.multiply(f2) 除:f1.divide(f2)-----同样是将f2类型转换为f1类型。

        BigDecimal f1 =new BigDecimal("0.05");
        BigDecimal f2= BigDecimal.valueOf(0.01);
        BigDecimal f3=new BigDecimal(0.05);

      不懂这三个的区别是什么?

    TestDouble:

      与上题字符串有关联,加了括号运算次序不同。

      此题System.out.println("0.05+0.01="+(0.05+0.01));

      System.out.println("0.05+0.01="+0.05+0.01);

  • 相关阅读:
    对javascript匿名函数的理解(透彻版)
    js操作Cookie
    C# WinForm WebBrowser (一) MSDN资料
    asp.net 生成静态HTML方法
    ASP.NET 操作XML
    c# WinForm 登陆 Program.cs 中代码
    Jquery 将后台返回的字符串转换成Json格式的数据
    获取数据库中的所有用户表、取数据表的描述信息包括描述说明
    asp.net 发送QQ邮件
    设置服务器文件的访问权限
  • 原文地址:https://www.cnblogs.com/Amyheartxy/p/5937250.html
Copyright © 2020-2023  润新知