zoukankan      html  css  js  c++  java
  • 动手动脑(一)

    一,

    代码:

    public class EnumTest {
    private enum MyEnum{
      ONE, TWO, THREE
    }
     public static void main(String[] args) {
         for(MyEnum value:MyEnum.values()){
             System.out.println(value);
             }
        }
    }
    运行结果:
    ONE
    TWO
    THREE
    总结如下:
    1.java中的enum关键字背后实际是Enum这个类实现的。
    2.values()方法遍历枚举类中的每个元素。
    3.在我们编写自定义的enum时,其中是不含values方法的,在编译java文件时,java编译器会自动帮助我们生成这个方法。
    二,
    原码:所谓原码就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。
    反码:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
    补码:正数的补码与其原码相同;负数的补码是在其反码的末位加1。
    示例:
    +100表示为2进制数为+1100100
    原码=01100100 反码=01100100 补码=01100100 正数的话3码都一样
    -100表示为2进制树为-1100100
    原码=11100100 反码=10011011(第一位表示符号的数字不变)
    补码=反码+1=10011100

    示例:

    package 练习一;
    public class Shu {
     public static void main(String[] args) {
      System.out.println(2&3);
     }
    }
    运行结果:
    2
    采用补码的形式
    三,
    package 练习一;
    public class Shu {
     private static int value=1;
     public static void main(String[] args) {
      int value=2;
      System.out.println(value);
     }
    }
    运行结果:
    2
    分析:Shu类中的value变量为私有变量,外部函数没有访问权限。
    四,
    从int或long转换为float或double会有精度的损失
    java 的浮点类型都依据 IEEE 754 标准。
    分为三个部分:
    (1) 一个单独的符号位s 直接编码符号s 。
    (2)k 位的幂指数E ,移码表示 。
    (3)n 位的小数,原码表示 。
    当下面情况出现是则无法精确表示:
    1.幂数不够表示了:这种情况往往出现在数字太大了,超过幂数所能承受的范围,那么这个数字就无法表示了。如幂数最大只能是10,但是这个数字用科学计数法表示时,幂数一定会超过10,就没办法了。
    2.尾数不够表示了:这种情况往往出现在数字精度太长了,如1.3434343233332这样的数字,虽然很小,还不超过2,这种情况下幂数完全满足要求,但是尾数已经不能表示出来了这么长的精度。
    五,
    package 练习一;
    public class Shu {
     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类型的数据进行运算,结果是不精确的

    这个涉及到二进制与十进制的转换问题。
    N进制可以理解为:数值×基数的幂,例如我们熟悉的十进制数123.4=1×10²+2×10+3×(10的0次幂)+4×(10的-1次幂);其它进制的也是同理,例如二进制数11.01=1×2+1×(2的0次幂)+0+1×(2的-2次幂)=十进制的3.25。
    double类型的数值占用64bit,即64个二进制数,除去最高位表示正负符号的位,在最低位上一定会与实际数据存在误差(除非实际数据恰好是2的n次方)。
    举个例子来说,比如要用4bit来表示小数3.26,从高到低位依次对应2的1,0,-1,-2次幂,根据最上面的分析,应当在二进制数11.01(对应十进制的3.25)和11.10(对应十进制的3.5)之间选择。
    简单来说就是我们给出的数值,在大多数情况下需要比64bit更多的位数才能准确表示出来(甚至是需要无穷多位),而double类型的数值只有64bit,后面舍去的位数一定会带来误差,无法得到“数学上精确”的结果。

    六,

    package 练习一;
    public class Shu {
     public static void main(String[] args) {
      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的值,若第一个想要求和应该改为:System.out.println("X+Y="+(X+Y));
    第二个则为计算了两个变量的值
  • 相关阅读:
    iOS IM开发建议(三)添加一个自定义键盘
    iOS IM开发建议(二)计算TableViewCell的高度:图文混排
    iOS IM开发建议(一)App框架设计
    iOS IM开发准备工作(五)iOS中的struct怎么处理
    关东升的iOS实战系列图书 《iOS实战:入门与提高卷(Swift版)》已经上市
    关东升的《从零开始学Swift》3月9日已经上架
    《从零开始学Swift》学习笔记(Day 71)——Swift与C/C++混合编程之数据类型映射
    《从零开始学Swift》学习笔记(Day 70)——Swift与Objective-C混合编程之Swift与Objective-C API映射
    《从零开始学Swift》学习笔记(Day 69)——Swift与Objective-C混合编程之语言
    《从零开始学Swift》学习笔记(Day 10)——运算符是“ +、-、*、/ ”吗?
  • 原文地址:https://www.cnblogs.com/mawangwang/p/9751042.html
Copyright © 2011-2022 走看看