首页 > 技术文章 > java语法基础

qianwangxingfu 2016-10-08 01:09 原文

1.EnumTest.java程序:

package damo;

 

public class EnumTest {

   enum Size{SMALL,MEDIUM,LARGE};

   public static void main(String[] args) {

      Size s=Size.SMALL;

      Size t=Size.LARGE;

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

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

      //是原始数据类型吗?false

      System.out.println(s.getClass().isPrimitive());//判断是什么数据类型

      //从字符串中转换

      Size u=Size.valueOf("SMALL");//将small的值赋给u

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

      //列出它的所有值

      for(Size value:Size.values()){//遍历

         System.out.println(value);

      }

   }

   //enum Size{SMALL,MEDIUM,LARGE};

}

运行结果

 

首先判断s==t?不等所以输出false;第二个判断是否是原始数据类型,不是原始的数据类型,false;第三个s表示SMALL将SMALL赋给了u,u=s,ture;第四、五、六个是遍历,Size{SMALL,MEDIUM,LARGE}中有三个数据,所以遍历是三个数据。

结论:

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

2.数值的二进制

数在计算机中是以二进制形式表示的。
数分为有符号数和无符号数。
原码、反码、补码都是有符号定点数的表示方法。

原码就是这个数本身的二进制形式。正数的反码和补码都是和原码相同,负数的反码是将其原码除符号位之外的各位求反,负数的补码是将其原码除符号位之外的各位求反之后在末位再加1。

3.TestDouble.java程序

源程序:

package damo;

 

public class TestDouble {

    public static void main(String args[]) {

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

           System.out.println("1.0 - 0.42 = " + (1.0 - 0.42));

           System.out.println("4.015 * 100 = " + (4.015 * 100));

           System.out.println("123.3 / 100 = " + (123.3 / 100));

       }

}

实验截图:

 

分析:使用double类型的数值进行计算,  其结果是不精确的

为什么double类型的数值进行运算得不到“数学上精确”的结果

java中double类型数据是用64位来表示的,精度肯定是有限的,浮点数是属于有理数中某特定子集的数的数字表示,在计算机中用以近似表示任意某个实数。具体的说,这个实数由一个整数或定点数(即尾数)乘以某个基数(计算机中通常是2)的整数次幂得到,这种表示方法类似于基数为10的科学记数法。在需要更高精度的运算过程中,有两种方法可供参考:1. 自己用超过64位来表示一个double类型,比如用100个byte[]来表示一个double(800bytes);这样的话,double的加减乘除就需要自己实现一遍了。很多IT公司有这样的面试题。2. 用java自带的BigDecimal类可以方便做高精度的运算。(c++中是没有BigDecimal这种方面的类的,所以只能用第一种方法)

4.

int X=100;

      int Y=200;

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

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

程序结果

 

原因:+X+Y表示连续输出x和y的值,第二个表示两数相加

5.验证码

(1).设计思想:

因为验证码都是随机产生的,所以要用到Math.random()来产生随机数,验证码是字符串,所以要用强制类型转换,将数字转换成字符串。再将字符串输出,以对话框的形式输出来,这就要用到JOptionPane了,需要导入JOptionPane。先随机产生97-122的数,保证强制转换后是字符,然后将产生的随机数强制转换成字符,用JOptionPane.showInputDialog将产生的随机数显示在对话框上,并且用户输入,然后判断输入的和随机产生的是否一样,一样就显示验证码输入正确,否则显示验证码输入不正确。还要用到JOptionPane.showMessageDialog显示信息对话框。

(2).源程序

package demo;

 

import javax.swing.JOptionPane;

 

public class yanzhengma {

       public static void main(String[] args)

       {

              String result = "";//定义一个空字符串

              String result1;//定义一个字符串用于输出

              //进行6次循环

              for(int i = 0 ; i < 6 ; i ++)

              {

                     int intVal = (int)(Math.random() * 26 + 97);//生成一个97~122的int型的整数,有26个数

                     result = result + (char)intVal;//强制类型转换,将intValue强制转换为char后连接到result后面

              }

              result1=JOptionPane.showInputDialog("验证码是:"+result +"请输入");//将“验证码是:”、随机产生的验证码、“请输入”显示在对话框上

              if(result1.equals(result))//判断输入的和随机产生的是否一样

                     JOptionPane.showMessageDialog(null,"验证码输入正确!","result",JOptionPane.PLAIN_MESSAGE);

              else

                     JOptionPane.showMessageDialog(null,"验证码输入有误!","result",JOptionPane.PLAIN_MESSAGE);

      }

}

 

 

 

 

(4).实验总结(包括调试过程中出现的错误)

随机产生的数字必须是在97-122之间,这样才能保证强制转换后的字符串是字母,在进行比较时要用到equals函数,判断输入的是否和随机产生的一样。如果输入一样会显示输入正确,但是输入不正确就不能再重新输入了,也不能回到随机产生的验证码的页面了。还需要找一个方法去改。JOptionPane.showInputDialog("验证码是:"+result +"请输入")括号里的内容也要注意,多一个逗号就有可能会出错。“”内的会全部输出,”+”表示输出result的值。用两个加号连接前后两个引号内的东西。

 

推荐阅读