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的数据)相加时,自然是调用它们自己的加法函数了!)

转载于:https://www.cnblogs.com/onepersonwholive/p/9751092.html

重庆大学11级计算机学院JAVA小实验: Project 3:Raiden (雷電) Lite Overview Raiden (雷電,) is a 1990 scrolling shooter arcade game that was developed by Seibu Kaihatsu. The title in Japanese translates to "Thunder And Lightning". Rai means thunder, and den means lightning. "Raiden" is the name of a Japanese WWII Fighter. Raiden consists of eight vertical scrolling missions where the player pilots the "Raiden Supersonic Attack Fighter" through waves of enemies, dodging and destroying enemy buildings, ground targets, and air craft. For this project,you and your team will design and implement a simplified version of raiden game using Java language. Requirements Please read following specifications carefully. You will lose points if you miss any requirement.   The Player can control the Raiden by pressing different key on the keyboard. Four key are used to moving the fighter front, back, left and right respectively in order to avoid attacks of enemies or to target enemies. One key is used to fire a bullet or to launch a missile to attack enemies.   At least two types of weapon- bullet and missile should be supported. The bullet moves in straight line, and can only attack the enemy at front of it while the missile can target an enemy, track it and destroy it. After destroying an enemy aircraft the player can gain certain bonus such as making his weapons stronger, elongating his life or increasing score etc. When the player gained enough scores, the game should come into next stage, in which there are more enemies and the enemies shoot faster. At least two stages should be provided. Of course you can gain higher grade if you provide more advanced function beyond those listed above. Implement tips 1 You will find more useful informations in the following lessons: “Java GUI”, “Java Graphics”, “Applet and Multimedia”. The lesson ‘multithreading ’ maybe is useful to some advanced programmer.
<think>嗯,用户想了解如何在Java中使用MongoDB进行实验,特别是头歌平台的教程。首先,我需要回忆相关的引用内容,看看有没有直接相关的资料。引用[1]提到Java操作MongoDB的两部分内容,引用[2]详细说明了使用Java连接MongoDB的流程和代码编写,引用[4]则提到了头歌平台的实验,需要补充代码插入文档到数据库。 用户的问题集中在头歌平台的实验教程,所以需要结合引用[4]中的信息,可能涉及具体的代码补充。首先,我应该整理Java连接MongoDB的基本步骤,比如添加驱动依赖、建立连接、选择数据库和集合,然后进行插入、查询等操作。引用[2]中的实验内容提到了创建Java项目,编写操作代码,这可能对应到Eclipse环境下的步骤。 然后,用户可能需要具体的代码示例,例如如何插入文档到test1集合,这在引用[4]中被提到。此外,引用[3]中的批量插入数据可能对性能测试有帮助,但用户的问题可能更关注基础操作。需要注意引用中的代码格式是否符合要求,比如使用正确的LaTeX格式,但这里主要是Java代码,所以代码块应该用反引号包裹。 还需要考虑用户可能的后续问题,比如环境配置、依赖管理(Maven或Gradle),以及常见错误处理。引用[1]和[2]都涉及Java操作MongoDB,可能需要分步骤说明,确保用户能一步步完成实验。此外,头歌平台可能有特定的代码结构,需要提示用户根据提示补充代码,如引用[4]中的右侧编辑器部分。 最后,生成相关问题时要围绕Java与MongoDB的连接、操作、性能优化等,帮助用户深入理解。比如如何批量插入数据,如何配置连接池,异常处理等。确保回答结构清晰,步骤明确,引用正确来源,如引用[2]中的流程说明和引用[4]的实验任务。</think>### Java 连接 MongoDB 实验教程(头歌平台) #### 一、实验准备 1. **环境配置** - 安装 MongoDB 服务并启动(默认端口 27017)[^2] - 在 Java 项目中添加 MongoDB 驱动依赖(Maven/Gradle): ```xml <!-- Maven 依赖示例 --> <dependency> <groupId>org.mongodb</groupId> <artifactId>mongo-java-driver</artifactId> <version>3.12.10</version> </dependency> ``` 2. **项目创建** - 在 Eclipse 中创建 Java Project(例如 `Mongo1`),并配置依赖[^2]。 --- #### 二、Java 操作 MongoDB 核心步骤 1. **连接数据库** ```java MongoClient mongoClient = new MongoClient("localhost", 27017); // 默认地址 MongoDatabase database = mongoClient.getDatabase("mydb1"); // 选择数据库 MongoCollection<Document> collection = database.getCollection("test1"); // 选择集合 ``` 2. **插入文档** 根据头歌平台实验要求,插入指定格式的文档[^4]: ```java Document doc = new Document("_id", 1) .append("text", "Hello MongoDB"); collection.insertOne(doc); // 单条插入 ``` 3. **批量插入**(引用实验脚本逻辑)[^3] ```java List<Document> documents = new ArrayList<>(); for (int i=0; i<100000; i++) { documents.add(new Document("_id", i) .append("text", "Hello MongoDB" + i)); } collection.insertMany(documents); // 批量插入 ``` --- #### 三、实验任务示例(头歌平台) 根据引用,补充代码实现插入操作: ```java // Begin-End 补充代码 MongoClient client = new MongoClient("localhost", 27017); MongoDatabase db = client.getDatabase("mydb1"); MongoCollection<Document> coll = db.getCollection("test1"); Document doc = new Document("_id", 1001) .append("name", "头歌实验数据"); coll.insertOne(doc); // 执行插入 client.close(); // 关闭连接 ``` --- #### 四、验证操作 1. **查询数据** ```java FindIterable<Document> results = collection.find(); for (Document d : results) { System.out.println(d.toJson()); } ``` 2. **异常处理** ```java try { // 操作代码 } catch (MongoException e) { System.err.println("数据库操作失败: " + e.getMessage()); } ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值