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. 【转】【mysql面试】https://blog.csdn.net/hanfazy/article/details/14520437

    公司招聘MySQL DBA,也面试了10个2年MySQL DBA工作经验的朋友,谈谈自己的心得,欢迎大家指点. 1    2年MySQL DBA经验 其中许多有水分,一看到简历自我介绍,说公司项目的时 ...

  2. SQL中前置0和后置0的处理问题

    在sql语句中经常遇到处理前置和后置数据的问题 1.首先使用convert转化函数对预处理的数据进行转化,CONVERT()函数可以将制定的数据类型转换为另一种数据类型 MySQL 的CAST()和C ...

  3. 小记---------有关hadoop的HDFS命令行操作

      HDFS命令操作 首先需要在xshell启动hadoop start-all.sh  or start-hdfs.sh hadoop fs -ls /        (显示当前目录下所有文件) h ...

  4. 【6.28校内test】T1 Jelly的难题1

    Jelly的难题[题目链接] 废话一句:今天中考出成绩,感觉大家考的都超级棒,不管怎样,愿大家成为最好的自己. 好了废话完了,下面是题解部分: SOLUTION: 首先你可能发生的,是看不懂题: 定睛 ...

  5. 利用BFS解决拯救007问题 -- 数据结构

    题目: 7-1 拯救007 (30 分) 在老电影“007之生死关头”(Live and Let Die)中有一个情节,007被毒贩抓到一个鳄鱼池中心的小岛上,他用了一种极为大胆的方法逃脱 —— 直接 ...

  6. 2017 ACM-ICPC 亚洲区(乌鲁木齐赛区)网络赛 F. Islands

    On the mysterious continent of Tamriel, there is a great empire founded by human. To develope the tr ...

  7. golang 反射中调用方法

    反射中调用函数 众所周知,golang中的函数是可以像普通的int.float等类型变量那样作为值的,例如: package main import "fmt" func hell ...

  8. Android热修复、插件化、组件化

    模块化:项目按照独立的模块进行划分 组件化:将项目按照单一的组件来进行划分结构 项目组件化的重要环节在于,将项目按照模块来进行拆分,拆分成一个个业务module和其他支撑module(lib),各个业 ...

  9. java集合之 ConcurrentHashMap的产生

    ConcurrentHashMap:  在java集合中 最常用的是ArrayList 效率最高的还是HashMap 但是线程不安全   HashTable是线程安全的(里面的方法是同步方法) 但相比 ...

  10. wex5 windowDialog组件

    windowDialog组件可以实现页面跳转 xid:windowDialog src:$UI/lohas/detailedknowledge.w 父页:myknowledge.w Model.pro ...