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. etcd常用命令-增删改查

    增删改查key-values 插入数据测试 # etcdctl put name1 james# etcdctl put name11 alice# etcdctl put name12 seli # ...

  2. SPOJ 4003 Phone List 题解

    题面 啊~,很水的一道trie树模板题: 当两个串存在关系时情况有两种: 若当前串插入后没有任何新建节点,则该串肯定是之前插入的某个串的前缀: 若在插入的时候,有某个经过的节点带有某串结尾的标记,则之 ...

  3. Python time strptime()方法 时间操作

    描述 Python time strptime() 函数根据指定的格式把一个时间字符串解析为时间元组. 语法 strptime()方法语法: time.strptime(string[, format ...

  4. CS起源:实现狙击子弹加速

    在前面的课程 FPS 游戏实现方框透视 中我们实现了对CS中游戏人物的透视效果,今天我们就来研究下狙击枪如何变成机关枪!原理很简单,直接去掉枪的上膛动画,配合无线子弹就完事了,这里只提供一种分析思路. ...

  5. Homebrew学习(一)之初认识

    Homebrew Homebrew是一款Mac OS平台下的软件包管理工具,拥有安装.卸载.更新.查看.搜索等很多实用的功能.简单的一条指令,就可以实现包管理,而不用你关心各种依赖和文件路径的情况,会 ...

  6. 企业面试题|最常问的MySQL面试题集合(一)

    问题1:char.varchar的区别是什么?varchar是变长而char的长度是固定的.如果你的内容是固定大小的,你会得到更好的性能. 问题2: TRUNCATE和DELETE的区别是什么?DEL ...

  7. 异常:Caused by: java.lang.NoClassDefFoundError: org/springframework/web/context/WebApplicationContext

    说明项目没有加载jar包 异常:Caused by: java.lang.NoClassDefFoundError: org/springframework/web/context/WebApplic ...

  8. Linux man学习

    5 man    man是manual的简写,Linux求助的工具    man  命令行,如 man  date 在我学习鸟哥私房菜的时候,也称man为man page  手册页入口:1 用户指令2 ...

  9. 机器学习聚类算法之K-means

    一.概念 K-means是一种典型的聚类算法,它是基于距离的,是一种无监督的机器学习算法. K-means需要提前设置聚类数量,我们称之为簇,还要为之设置初始质心. 缺点: 1.循环计算点到质心的距离 ...

  10. 转载:利用php数组函数进行函数式编程

    因为一个BUG, 我在一个摇摇欲坠,几乎碰一下就会散架的项目中某一个角落中发现下面这样一段代码 这段程序与那个BUG有密切的关系. 我来回反复的捉摸这段代码, 发现这段代码实现了两个功能 第一个是在一 ...