动手动脑的问题以及课后实验性的问题

动手动脑一:枚举
程序代码:
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");
  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
分析:ENUM类似一个类,与类的用法相差不多。
用法:
1.System.out.println(s==t)可以直接判断是否相等
2.    for (EnumTest e : EnumTest.values()) {
            System.out.println(e.toString());
        }遍历枚举类型中的所有值
3.Size u=Size.valueOf("SMALL")字符串转换,进行赋值
动手动脑二:原码、补码、反码
原码:是最简单的机器数表示法。用最高位表示符号位,‘1’表示负号,‘0’表示正号。其他位存放该数的二进制的绝对值。
反码:正数的反码还是等于原码。负数的反码就是他的原码除符号位外,按位取反。
补码:正数的补码等于他的原码。负数的补码等于反码+1。
通过操作可知java中的数是用补码表示的。
动手动脑三:类型转换
byte(字节型):1字节  128~127
char(字符型):2字节  0~65535
short(短整型):2字节  2^15~2^15-1
int(整型):4字节  2^31~2^31-1
long(长整型):8字节  2^63~2^63-1
float(单精度浮点型):4字节  3.403E38~3.403E38
double(双精度浮点型):8字节  1.798E308~- 4.9E324
boolean:1字节   true false
类型转换原则:从低位类型到高位类型自动转换;从高位类型到低位类型需要强制类型转换。
动手实验四:
程序代码:
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));
    }
}
运行结果:
0.05 + 0.01 = 0.060000000000000005
1.0 - 0.42 = 0.5800000000000001
4.015 * 100 = 401.49999999999994
123.3 / 100 = 1.2329999999999999
结论:使用double类型的数值进行计算,其结果是不精确的。Float和Double类型为我们提供快速运算,然而由于在转换为二进制的时候,有些数字不能完全转换,只能无限接近原本的值,从而导致运算结果不正确的问题。
动手动脑五:
程序代码:
 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
原因:由于运算的优先级,System.out.println("X+Y="+X+Y)先输出"X+Y="接下来进行"X+Y="+X也就是输出“X+Y=100”,最后在输出X+Y=100200。而System.out.println(X+Y+"=X+Y"),由于X+Y不是字符串,于是就先进行计算后再输出。
课堂测试:
程序代码:
package ceshi;
import java.util.Random;
import java.util.*;
public class CeShi {
 static Scanner in = new Scanner(System.in);
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  Random random = new Random();
  int z=1;
  for(int i=0;i<30;i++) {
   
   int ran1= random.nextInt(4);
   if(ran1==0) {
    int ran2 = random.nextInt(100);
    int ran3 = random.nextInt(100);
    System.out.println(z+" "+ran2+"+"+ran3+"=");
    z++;
   }
   if(ran1==1) {
    int ran4 = random.nextInt(100);
    int ran5 = random.nextInt(100);
    if(ran4>ran5)
     System.out.println(z+" "+ran4+"-"+ran5+"=");
    z++;
   }
   if(ran1==2) {
    int ran6 = random.nextInt(100);
    int ran7 = random.nextInt(100);
    System.out.println(z+" "+ran6+"*"+ran7+"=");
    z++;
   }
   if(ran1==3) {
    int ran8 = random.nextInt(100);
    int ran9 = random.nextInt(100);
    System.out.println(z+" "+ran8+"/"+ran9+"=");
    z++;
   }
  }
  
 }
}
运行结果:
1 59-52=
2 87*58=
3 53-23=
4 66/1=
5 65/58=
7 70+24=
8 39/97=
9 82-39=
10 51*4=
11 22/25=
12 54/29=
13 64*47=
14 37/81=
15 1+5=
16 45+13=
17 70*85=
18 79+25=
19 50*34=
20 69-8=
21 93-30=
22 23/8=
23 72-51=
24 44+0=
25 62*43=
26 57*71=
27 92+52=
28 88/24=
29 68*38=
30 20+22=
 

你可能感兴趣的:(动手动脑的问题以及课后实验性的问题)