动手动脑(ppt中6个问题)
问题一:仔细阅读示例: EnumTest.java,运行它,分析运行结果?
- 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};
运行结果:
结论:1.引用同一枚举类型名中枚举表中的不同常量,引用的并不是一个对象,
2.每个具体值都引用一个特定的对象,相同的值则引用同一个对象。
3.枚举是可以从字符串中转换。
4.可以使用“==”和equals()方法直接比对枚举变量的值
枚举类型的基本用法:
枚举常量是枚举类型中的值,即枚举值。枚举类型是一种用户定义的类型,只有用户在程序中定义它后才能被使用。
用户通常利用枚举类型定义程序中需要使用的一组相关的符号常量。
枚举类型的定义格式为:enum <枚举类型名> {<枚举表>};
问题二:请运行以下代码(TestDouble.java)
- 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));
- }
- }
结果:
结论:
这个涉及到二进制与十进制的转换问题。
N进制可以理解为:数值×基数的幂
double类型的数值占用64bit,即64个二进制数,除去最高位表示正负符号的位,在最低位上一定会与实际数据存在误差(除非实际数据恰好是2的n次方)。
举个例子来说,比如要用4bit来表示小数3.26,从高到低位依次对应2的1,0,-1,-2次幂,根据最上面的分析,应当在二进制数11.01(对应十进制的3.25)和11.10(对应十进制的3.5)之间选择。
简单来说就是我们给出的数值,在大多数情况下需要比64bit更多的位数才能准确表示出来(甚至是需要无穷多位),而double类型的数值只有64bit,后面舍去的位数一定会带来误差,无法得到“数学上精确”的结果。
如果涉及到精确数字,更适合用字符串而不是double类型,必要时我们要选取string类型的字符串类型来计算更加精确的结果。
问题三:以下代码的输出结果是什么?
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
System.out.println("X+Y="+X+Y);//字符型输出,先输出x(100),再输出y(200)
System.out.println(X+Y+"=X+Y");//先进行求和,遇到string类型后按照string类型输出
Java中的加号有时是连接符,有时是运算符:
1.当左右两边连接的都是非数字型时,则为连接符。
2.当一边是数值类型,另一边是非数值类型时,则为连接符。
3.当两边都是数值类型时,则为运算符,即相加求和的作用。
问题四:阅读相应教材,或者使用互联网搜索引擎,弄清楚反码、补码跟原码这几个概念,然后编写示例程序,对正数、负数进行各种位操作,观察输出结果,与手工计算的结果进行比对,看看Java中的数是采用上述哪种码表示的。
结论:
原码:原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值。
- 如单字节的5的原码为:0000 0101;-5的原码为1000 0101。
反码:正数:正数的反码与原码相同。负数:负数的反码,符号位为“1”,数值部分按位取反。可见如果一个反码表示的是负数, 人脑无法直观的看出来它的数值. 通常要将其转换成原码再计算。
- 如单字节的5的反码为:0000 0101;-5的反码为1111 1010。
补码:正数的补码就是其本身。负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)。对于负数, 补码表示方式也是人脑无法直观看出其数值的. 通常也需要转换成原码在计算其数值。
- 如单字节的5的补码为:0000 0101;-5的原码为1111 1011。
示例程序:
import java.util.Scanner;
public class ZJF {
public static void main(String[] args)
{
int a=5;
int b=-5;
System.out.println(Integer.toBinaryString(a));
System.out.println(Integer.toBinaryString(b));
}
}
结论:正数采用原码,负数采用补码。
问题五.Java变量遵循“同名变量的屏蔽原则”,请课后阅读相关资料弄清楚相关知识,然后自己编写一些测试代码,就象本示例一样,有意识地在不同地方定义一些同名变量,看看输出的到底是哪个值。
结论:每个变量都有一个有效区域,即定义的那片区域,出了这个区域,变量将不再有效。(全局变量除外)
问题六.查看Java中每个数据类型所占的位数,和表示数值的范围,你能得出什么结论?
结论:
动手动脑(ppt中6个问题)的更多相关文章
- 03-方法ppt动手动脑问题及课后实验性问题总结
一.如何不使用static来进行调用函数? 1.自己定义的不需要都是static,但是要在主函数中调用就需要static了,因为main是静态 的,在类加载时就加载了.如果想用又不加可以吧自己写的方法 ...
- java学习(4)——动手动脑
根据ppt所给的例子,运行的结果如下所示: ppt中出现的第二个动手动脑如下: 代码如下: 其运行结果如下: 作出简单的分析如下:有点类似于if 和else的关系,总是对应try和catch同层中的异 ...
- java语言课堂动手动脑
1 运行 TestInherits.java 示例,观察输出,注意总结父类与子类之间构造方法的调用关系修改Parent构造方法的代码,显式调用GrandParent的另一个构造函数,注意这句调用代码是 ...
- java异常处理动手动脑问题解决和课后总结
动手动脑 一.问题:请阅读并运行AboutException.java示例,然后通过后面的几页PPT了解Java中实现异常处理的基础知识. 1.源代码 import javax.swing.*; cl ...
- JAVA语法基础作业——动手动脑以及课后实验性问题 (八)
一.动手动脑 运行AboutException.java示例,了解Java中实现异常处理的基础知识. 1)源代码 import javax.swing.*; class AboutException ...
- 05-String动手动脑问题及课后实验性问题总结
一.请运行以下实例代码StringPool.java,查看其输出结果.如何解释这样的输出结果?从中你能总结出什么? (1)在Java中,内容相同的字符常量("Hello")只保存一 ...
- JAVA09异常处理之动手动脑问题
动手动脑1:为什么不管是否有异常发生,finally语句块中的语句始终保证被执行? 我们在写代码时,如果finally块中的代码过多会导致字节码条数"膨胀",因为finally中的 ...
- JAV07接口与继承之动手动脑问题解决
动手动脑:请自行编写代码测试以下特性:在子类中,若要调用父类中被覆盖的方法,可以使用super关键字. 1.源代码: package Work; class A{ public A(){ System ...
- JAVA06数组之动手动脑问题解决
一.随机生成10个数,填充一个数组,然后用消息框显示数组内容,接着计算数组元素的和,将结果也显示在消息框中. 1.设计思路:首先生成10个随机数,然后存放至长度至少是10的数组中,然后计算10个随机 ...
- JAVA方法03之动手动脑问题解决
动手动脑1.当JAVA里定义的函数中去掉static后,怎么办?(如下程序,将square()函数的static去掉) public class SquareIntTest { public stat ...
随机推荐
- cmd查找端口占用情况
查找端口占用情况:netstat -ano|findstr 4848 查看使用指定端口的应用程序:tasklist|findstr xxxx,xxxx指的是pid 结束指定进程:taskkill /p ...
- RMQ((Range Minimum/Maximum Query))ST算法
给定一个数组,求出给定区间[l,r]中元素的最大值或最小值或者最值的索引. 一看到这个题目,简单,看我暴力出奇迹.暴力当然是可行的.但是时间复杂度很高(O(n^2)).线段树,树状数组也可以解决这个问 ...
- svg-sprite-loader ( svg-icon) 使用
svg-sprite-loader 可以多个svg图标合并. 使用时只需根据合并的symbol的id即可. <svg class="svg-icon" aria-hidde ...
- APP漏洞之WebView File域同源策略绕过漏洞
i春秋作家:MAX丶 基本知识Android架构 Kernel内核层 漏洞危害极大,通用性强 驱动由于多而杂,也可能存在不少漏洞 Libaries系统运行库层 系统中间件形式提供的运行库 包括libc ...
- 通过Nginx统计网站的PV、UV、IP
转载:通过Nginx统计网站的PV.UV.IP 概念 UV:独立访客:以cookie为依据,假设一台电脑装有3个不同的浏览器,分别打开同一个页面,将会产生3个UV.PV:访问量:页面每访问或刷新一次, ...
- Array + two points leetcode.18 - 4Sum
题面 Given an array nums of n integers and an integer target, are there elements a, b, c, and d in num ...
- PHP基础——语法篇
<!-- 语句:通过 PHP,有两种在浏览器输出文本的基础指令:echo 和 print. --> <?php echo "Hello World!"; //PH ...
- 【Day5】项目实战.CSDN热门文章爬取
import urllib.request as ur import lxml.etree as le import user_agent keyword = input('请输入关键词:') pn_ ...
- 【Day4】5.Request对象之Http Post请求案例分析
import urllib.parse as up import urllib.request as ur import json word = input('请输入要翻译的中文') data = { ...
- Windows10系统里安装SCons
1. 安装python2.7 执行python2.x的安装包程序python-2.7.12.amd64.msi进行安装即可 2. 安装scons 下载scons-2.5.0.zip压缩包并解压缩 CM ...