zoukankan      html  css  js  c++  java
  • Java的小实验——各种测试以及说明

    日期:2018.10.07

    星期五

    博客期:014

    一、Java中的位运算

    代码如下:

     1 package Morts107;
     2  
     3 public class Test107 {
     4     public static void main(String[] args) {
     5        int z;
     6        z = 13>>1;//00001101(13)----------------[右移1位]-------------->00000110(6)
     7        System.out.println(" z = "+z);
     8        z = 45>>2;//00101101(45)----------------[右移2位]-------------->00001011(11)
     9        System.out.println(" z = "+z);
    10        z = 6<<1;//00000110(6)------------------[左移1位]-------------->00001100(12)
    11        System.out.println(" z = "+z);
    12        z = 11<<2;//00001011(11)----------------[右移2位]-------------->00101100(44)
    13        System.out.println(" z = "+z);
    14        z = -1>>2;//10...0000001(-1)----------------[左移1位]-------------->10...010(-2)
    15        System.out.println(" z = "+z);
    16     }
    17 }

    本程序实现了int类型数值的位运算,如代码中的注释一样,计算机只能储存1和0,所以说这些数都是二进制的!而二进制的13就是(…001101),让它向右位移1位,自然就成了6(…00110),即13>>1==6成立,所以位运算就是这样!<<和>>分别表示左移和右移,而右边的操作数就是位置移动的数的大小!如11(…01011)左移2位,就是44(…0101100),即11<<2==44成立;这就相当于<<是这个数除以(2的后操作数次方)的结果,而>>就相当于是乘以(2的后操作数次方)的结果!而对于负数来说,它的第一位是1,所以负数最大也就是-1,-1/2也相当于-1!

    正整数的原码、反码和补码都一样;

    负数部分:

    原码和反码的相互转换:符号位不变,数值位按位取反

    原码和补码的相互转换:符号位不变,数值位按位取反,末位再加1

    二、数据类型所占的位数

    Byte      1 字节   (8bit)

    Char     2 字节   (16bit)

    Short      2 字节   (16bit)

    Int          4字节    (32bit)

    Float      4字节    (32bit)

    Long      8字节    (64bit)

    Double   8字节    (64bit)

    说明了一个问题:取值范围小的可以往取值范围大的类型转(浮点类型所表示范围较大),在非浮点类型转换到浮点类型时一定会失去一部分精度!

    三、测试题目

    结果如下:

    结论:枚举类型与String类不同,可以直接用==、!=来判断关系!

    掌握了!

    四、运行代码

    结果如下:

     

    不意外,因为float和double都是浮点类型,是不精确的!

    五、实验

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

                  int X=100;

                  int Y=200;

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

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

    @:

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

    String类的+是相当于StringBuffer类中的append()函数,就是因为这个原因,System.out.println(”I love”+” China!”);实际上和System.out.println(“I love China!”);是一个效果,而在X和Y(两个整形int的数据)相加时,自然是调用它们自己的加法函数了!)

  • 相关阅读:
    结对项目:四则运算
    Word Count(C语言)
    自我介绍+软工5问
    如何在博客园中使用markdown
    如何设计一门语言(九)——类型
    如何设计一门语言(八)——异步编程和CPS变换
    如何设计一门语言(七)——闭包、lambda和interface
    时隔多年我又再一次体验了一把跟大神聊天的感觉
    20199107 2019-2020-2 《网络攻防实践》第4周作业
    20199107 2019-2020-2 《网络攻防实践》第3周作业
  • 原文地址:https://www.cnblogs.com/onepersonwholive/p/9751092.html
Copyright © 2011-2022 走看看