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. tableau desktop

    参考: 入门指南: https://help.tableau.com/current/guides/get-started-tutorial/zh-cn/get-started-tutorial-co ...

  2. c++ try_throw_catch异常处理

    参考https://www.cnblogs.com/xiaojianliu/articles/8900795.html 在程序设计时,针对不同的异常情况,预先设定异常信息,在程序运行时,根据异常提示信 ...

  3. 创建一个py文件并运行

    在 Linux 中,可以直接用vim 或者 vi 来编辑一个 python 文件 vim hello.py 进入编辑页面 #coding:utf-8 print("你好") (因为 ...

  4. python 安装 colorama 控制台输出彩色文字

    pip install colorama from colorama import Back,Fore,Style # 字体颜色print(Fore.LIGHTBLUE_EX,'HelloWorLd' ...

  5. 微信小程序 报错 “对应的服务器无效。控制台输入 showRequestInfo()可以获取更详细信息”

    之前做的项目突然无法读出数据了,一测试发现报这个错误==>对应的服务器无效.控制台输入 showRequestInfo()可以获取更详细信息,后来发现是SSL证书到期了.重新申请了一个证书,免费 ...

  6. 26. Remove Duplicates from Sorted Array(代码思路新奇)

    Given a sorted array, remove the duplicates in-place such that each element appear only once and ret ...

  7. 使用Tomcat、JNDI与ActiveMQ实现JMS消息通信服务

    前言 之所以使用JNDI 是出于通用性考虑,该例子使用JMS规范提供的通用接口,没有使用具体JMS提供者的接口,这样可以保证我们编写的程序适用于任何一种JMS实现(ActiveMQ.HornetQ等) ...

  8. JavaEE--JSP详解

    一.JSP JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它是由Sun Microsystems公司倡导.许多公司参与一起建立的一种 ...

  9. 微信小程序与内嵌webview之间来回跳转的几点总结,以及二维码的使用

    截止到发稿小程序支持的功能,后续如果小程序更新在完善文稿. 1. 小程序可以内嵌组件跳转到h5页面,前提是在小程序后台配置相应的业务域名.新打开的h5页面会替代小程序组件内的其它组件,即为h5不能与小 ...

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

    MySQL的关联查询语句 六种关联查询 交叉连接(CROSS JOIN) 内连接(INNER JOIN) 外连接(LEFT JOIN/RIGHT JOIN) 联合查询(UNION与UNION ALL) ...