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
特别意外,例如第一个本应该是0.06,但是结果却是 0.060000000000000005,出现了精度不准的情况。
 
以下代码的输出结果是什么?
  
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
原因是第一个中的xy性质为字符串,而第二个xy为int型数据。
 
 
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
结论:枚举的引用不是同一对象,若引用相同的值则是同一对象,并且不是原始数据类型,可列出所有值,可以使用“==”和equals()方法直接比对枚举变量的值
 
数据在计算机内部是以补码的形式存储
原码:原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值
正数的首位为0,其原码是由十进制数转换为二进制数
负数的首位为1,其原码是由十进制数转换为二进制数,然后将首位改为1
例如7的原码为:0000 0000 0000 0000 0000 0000 0000 0111
则-7的原码为:  1000 0000 0000 0000 0000 0000 0000 0111
反码:正数的反码等于原码,负数的反码是在原码的基础上,首位不变,其余位取反
例如7的反码为:0000 0000 0000 0000 0000 0000 0000 0111
-7的反码为:     1111 1111 1111 1111 1111 1111 1111 1000
 
补码:正数的补码等于反码等于原码,负数的补码是在原码的基础上除了首位,其余位取反,在末位+1
例如7的补码为: 0000 0000 0000 0000 0000 0000 0000 0111
-7的补码为:      1111 1111 1111 1111 1111 1111 1111 1001(末位原本是0,但是+1以后成了补码,如果+1之后为2,则向前进位,以此类推,直到不出现2为止)
总结:正数的原码补码反码都是一样的,而负数不一样,反码顾名思义,就是取反(除了首位),而补码就是取反加一。
程序示例:
实现正数与操作:
public class YuOperation{
public static void main(String args[]){
int x = 13;
int y = 7;
System.out.println(x & y);
}
}
分析:
13的二进制原码:0000 0000 0000 0000 0000 0000 0000 1101
7的二进制原码:  0000 0000 0000 0000 0000 0000 0000 0111
按位与:              0000 0000 0000 0000 0000 0000 0000 0101
结果等于5
实现负数与操作:(负数按补码形式进行位运算)
public class Yu_Operation{
public static void main (String args[]){
int x= 13;
int y=-7;
System.out.println(x&y);
}
}
分析:
13的二进制原码:0000 0000 0000 0000 0000 0000 0000 1101
-7的二进制原码:1000 0000 0000 0000 0000 0000 0000 0111
-7的二进制补码:1111 1111 1111 1111 1111 1111 1111 1001
13的二进制原码:0000 0000 0000 0000 0000 0000 0000 1101
按位与:              0000 0000 0000 0000 0000 0000 0000 1001
结果等于9
实现正数或操作
public static HuoOperation{
public static void main(String args[]){
int x =13;
int y=7;
System.pout.println();
}
}
分析:
13的二进制原码:0000 0000 0000 0000 0000 0000 0000 1101
7的二进制原码:  0000 0000 0000 0000 0000 0000 0000 0111
按位或:              0000 0000 0000 0000 0000 0000 0000 1111
结果等于15
负数或操作与与操作相同,只不过是只要有1结果就为1
实现移位操作
public Move{
public static void main(String args[]){
int x =2;
System.out,println("刚开始的变量大小为:"+x);
System.out.println("左移位的结果为:"+(x<<2));
}
}
分析:
2的二进制原码为: 0000 0000 0000 0000 0000 0000 0000 0010
将整体左移两位得:0000 0000 0000 0000 0000 0000 0000 1000
结果为8.

2019.9.16JAVA课堂作业的更多相关文章

  1. 栋哥你好,让我们回顾最初认识C++的时候(课堂作业)

    计算器的第一步,至今还记记忆犹新,本次的课堂作业,便是那个框架.闲话少叙,代码如下传送门: Main.cpp #include "stdafx.h" #include<ios ...

  2. 20155213 第十二周课堂作业MySort

    20155213 第十二周课堂作业MySort 作业要求 模拟实现Linux下Sort -t : -k 2的功能 参考 Sort的实现 提交码云链接和代码运行截图 初始代码 1 import java ...

  3. 课堂作业-Bag类的实现

    课堂作业-Bag类的实现 要求: 代码运行在命令行中,路径要体现学号信息,IDEA中,伪代码要体现个人学号信息 参见Bag的UML图,用Java继承BagInterface实现泛型类Bag,并对方法进 ...

  4. 2019 SDN上机第一次作业

    2019 SDN上机第一次作业 1. 安装轻量级网络仿真工具Mininet 安装Mininet的步骤 - git clone git://github.com/mininet/mininet - cd ...

  5. Java课程课堂作业代码

    前言 本文章只是单纯记录课堂老师布置的课堂作业代码,题目都比较简单,所以没有写解题思路,相信大家都能理解,当然其中有的解法和代码不是最优的,当时只是为了完成题目,后来也懒得改了,如果有不恰当或者不正确 ...

  6. JAVA课堂作业(2019.10.21)

    1. 代码: package class20191021; class Grandparent { public Grandparent() { System.out.println("Gr ...

  7. JAVA课堂作业(2019.10.14)

    一. (1)代码 package class20191014; import java.util.Scanner; public class ClassHomework { public static ...

  8. OSLab课堂作业1

        日期:2019/3/16 作业:实现命令cat, cp, echo. myecho命令 #include <stdio.h> int main(int argc, char *ar ...

  9. Java课堂作业详解

    今天的Java课堂留下了一个作业:使用Eclipse编写一个程序,使输入的两个数进行加和,并且输出他们的和.对于这个题目,我们首先可以把它分解成为三个不同的小步骤 第一步就是输入这两个数,因为我们无需 ...

随机推荐

  1. 小记------mongodb数据库如何进行模糊查询

    // 模糊匹配createTime   是以 2019-07-23 开头 db.getCollection('driver_online_record').find({"createTime ...

  2. awk对文件的奇偶行做处理

    { if(NR % 2 == 0) printf("%s\n", $0) else printf("%s, ", $1) } awk -f awk.awk da ...

  3. Forsaken喜欢数论

    链接:https://ac.nowcoder.com/acm/contest/1221/A来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 524288K,其他语言1048 ...

  4. pythonWeb框架创建app模块以及虚拟环境管理工具

    在进行项目搭建的时候,如果有多个功能模块,以及多个网页地址时,为了系统的可维护性,以及易读性,我们大多数情况下选择模块化开发 所以我们就要使用app指令来创建不同的功能模块 首先项目框架如下: 接下来 ...

  5. 带EFI支持的GRUB2安装全记录

    版权归作者所有,任何形式转载请联系作者. 作者:keenshoes(来自豆瓣) 来源:https://www.douban.com/note/210077866/  关键词:EFIGRUB2efibo ...

  6. java复习(1)

    这几天开学,很多知识点还很生疏,这两天先把java基础复习一下,有段时间没有写博客了,今天就先谈谈进制转换吧. 1.二进制数的原码,补码和反码 1):对于正数的原码,补码和反码均是相同的,这里不讨论了 ...

  7. Docker下载镜像出现failed to register layer: symlink....问题

    在用Docker下载RabbitMQ的时候出现如下问题 个人解决方案:重启Docker. 若重启还是无法解决问题,可以先关闭Docker systemctl stop docker 然后把已下载的相关 ...

  8. Laravel配置全局公共函数的方法步骤

    前言 在laravel项目开发中,经常使用到公共函数,那如何在laravel配置全局公共函数呢??下面话不多说了,来一起看看详细的介绍吧 方法如下 在Laravel项目中我们常常需要定义一些全局的公共 ...

  9. memcached和redis的区别

    memcache和redis区别 memcach简介 Memcache时一个内存对象缓存系统,用于加速动态web应用程序,减轻数据库负载.它可以应对任意多个连接,使用非阻塞的网络I/O, 工作机制: ...

  10. Zen Cart 138 在PHP5.3环境下出现的Fatal error: Cannot redeclare date_diff()

    Zen Cart 138 在PHP5.3环境下出现的Fatal error: Cannot redeclare date_diff() in includes/functions/functions_ ...