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的值。用两个加号连接前后两个引号内的东西。