动手动脑(Java)
1.仔细阅读示例: 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>s与t不一样所以显示false,s的类不是Primitive,u是SMALL,所以显示true。<2>结论:相同的显示true,不一样的显示false.
枚举类型是引用类型! 枚举不属于原始数据类型,它的每个具体值都引用一个特定的对象。相同的值则引用同一个对象。 可以使用“==”和equals()方法直接比对枚举变量的值,换句话说,对于枚举类型的变量,“==”和equals()方法执行的结果是等价的。
<3>掌握了。
2.反码、补码、源码:
00110011的反码就是11001100补码就是计算机里存储指令都用补码举例就是9的原码是0000100反码是11110110补码是00001001 (如果是-9)那么符号位变成1 就是10001001
3.Java变量遵循“同名变量的屏蔽原则”,请课后阅读相关资料弄清楚相关知识,然后自己编写一些测试代码,就象本示例一样,有意识地在不同地方定义一些同名变量,看看输出的到底是哪个值:
- //父类
- class Parent
- {
- public static String kind="javastudy.extendsstudy.parent";
- public static int age=50;
- public String name="Parent";
- //静态方法,返回包名
- public static String getKind()
- {
- System.out.println("parent的getKind()方法被调用了");
- return kind;
- }
- //静态方法,返回年龄
- public static int getAge()
- {
- System.out.println("Parent的getAge()方法被调用了");
- return age;
- }
- //实例方法,返回姓名
- public String getName()
- {
- System.out.println("Parent的getName()方法被调用了");
- return this.name;
- }
- }
- //子类
- class Child extends Parent
- {
- public static String kind="javastudy.extendsstudy.child";
- public int age=25;
- public String name="child";
- //隐藏父类静态方法
- public static String getKind()
- {
- System.out.println("child的getkind()方法被调用了");
- return kind;
- }
- //获取父类包名
- public static String getParentKind()
- {
- return Parent.kind;
- }
- //覆盖父类实例方法
- public String getName()
- {
- System.out.println("child的getName()被调用了");
- return this.name;
- }
- //获取父类名称
- public String getParentName()
- {
- return super.name;
- }
- /*
- *错误,实例方法不能覆盖父类的静态方法
- public int getAge()
- {
- return this.age;
- }
- */
- }
然后测试下
- class Test
- {
- public static void main(String[] args)
- {
- Child child=new Child();
- System.out.printf("子类名称:%s,年龄:%d,包名:%s%n",child.name,child.age,child.kind);
- //输出:子类名称:child,年龄:25,包:javastudy.extendsstudy.child
- //把child转换成parent对象
- Parent parent=child;
- System.out.printf("转换后的名称:%s,年龄:%d,包名:%s%n",parent.name,parent.age,parent.kind);
- //输出:转换后的名称:Parent,年龄:50,包:javastudy.extendsstudy.parent
- System.out.printf("子类访问父类被隐藏的实例变量name:%s%n",child.getParentName());
- //输出:子类访问父类被隐藏的实例变量name:Parent
- System.out.printf("子类访问父类被隐藏的静态变量kind:%s",child.getParentKind());
- //输出:子类访问父类被隐藏的静态变量kind:javastudy.extendsstudy.parent
- child.getName();
- //输出:child的getName()被调用了
- //**************注意看这个方法,返回的还是子类的getName
- parent.getName();
- //输出:child的getName()被调用了
- child.getKind();
- //输出:child的getkind()方法被调用了
- parent.getKind();
- //输出:parent的getKind()方法被调用了
- }
- }
4.
看着这个图,再查查Java中每个数据类型所占的位数,和表示数值的范围,你能得出什么结论?高精度向低精度转化,不发生精度缺失,否则可能相反。
5.
<1>你看到了什么样的输出,意外吗?不意外。
<2>为什么double类型的数值进行运算得不到“数学上精确”的结果? 首先得从计算机本身去讨论这个问题。我们知道,计算机并不能识别除了二进制数据以外的任何数据。无论我们使用何种编程语言,在何种编译环境下工作,都要先 把源程序翻译成二进制的机器码后才能被计算机识别。
<3>解决方法: 思路很简单,我们先通过BigDecimal(double value)方法,将double型数据转换成BigDecimal数据,然后就可以正常进行精确计算了。等计算完毕后,我们可以对结果做一些处理,比如 对除不尽的结果可以进行四舍五入。最后,再把结果由BigDecimal型数据转换回double型数据。
6.
以下代码的输出结果是什么? int X=100; int Y=200; System.out.println("X+Y="+X+Y); System.out.println(X+Y+"=X+Y"); 为什么会有这样的输出结果?
加号在前为和的意思,在后为加法求和。
动手动脑(Java)的更多相关文章
- 动手动脑-java重载
有以下例子: 例: Using overloaded methods public class MethodOverload { public static void main(String[] ar ...
- 动手动脑——JAVA语法基础
EnumTest.java public class EnumTest { public static void main(String[] args) { Size s=Size.SMALL; Si ...
- 动手动脑java异常处理
1>请阅读并运行AboutException.java示例,然后通过后面的几页PPT了解Java中实现异常处理的基础知识. import javax.swing.*; class AboutEx ...
- 动手动脑-Java的方法重载
例: Using overloaded methods public class MethodOverload { public static void main(String[] args) { ...
- 动手动脑-Java的继承与多态
一. class Grandparent { public Grandparent() { System.out.println("GrandParent Created."); ...
- JAVA语法基础作业——动手动脑以及课后实验性问题 (八)
一.动手动脑 运行AboutException.java示例,了解Java中实现异常处理的基础知识. 1)源代码 import javax.swing.*; class AboutException ...
- JAVA方法03之动手动脑问题解决
动手动脑1.当JAVA里定义的函数中去掉static后,怎么办?(如下程序,将square()函数的static去掉) public class SquareIntTest { public stat ...
- java动手动脑和课后实验型问题String类型
1.请运行以下示例代码StringPool.java,查看其输出结果.如何解释这样的输出结果?从中你能总结出什么? true true false 总结: 使用new关键字创建字符串对象时, 每次申请 ...
- Java(接口与继承)动手动脑
1>继承条件下的构造方法调用 运行 TestInherits.java 示例,观察输出,注意总结父类与子类之间构造方法的调用关系修改 Parent 构造方法的代码,显式调用 GrandParen ...
- 动手动脑及java程序之用消息框进行数的运算
动手动脑 自信成就人生 动手动脑1 ✿仔细阅读示例: EnumTest.java,运行它,分析运行结果? package demo; public class Test { publi ...
随机推荐
- L1 正则为什么会使参数偏向稀疏
2018-12-09 22:18:43 假设费用函数 L 与某个参数 x 的关系如图所示: 则最优的 x 在绿点处,x 非零. 现在施加 L2 regularization,新的费用函数()如图中蓝线 ...
- nodejs中function*、yield和Promise的示例
var co = require("co"); var fs = require("fs"); function cusReadFile(fileName) { ...
- 日常英语---十一、MapleStory/Monsters/Level 201-210(Dark Demon Eagle Rider)
日常英语---十一.MapleStory/Monsters/Level 201-210(Dark Demon Eagle Rider) 一.总结 一句话总结:骑着鹰的快速飞行的恶魔,进入地图后跟着你. ...
- (10)进程---Manager数据共享
Manager 能够实现进程之间的数据共享(dict list),但是必须上锁来确保数据的准确性, 队列则可以实现进程之间数据通信 from multiprocessing import Proce ...
- SQL语句内做除法得出百分比
保留两位小数点 SELECT ROUND(CAST(field1 AS DOUBLE)/field2, 2) * 100 FROM TB; 不保留 SELECT CAST(field1 AS FLOA ...
- QQ Protect 的删除
删的好费劲,驱动程序,服务,各个东西都在相互保护. 最后总结: 1)进安全模式 2)删除 下面的文件 c:\program files\tencent\qqlite\shellext\qqshelle ...
- 关于Handler中Message的创建问题
Message用来定义一个包含任意数据的消息对象,这个消息对象是可以被发送给Handler处理的. 我们最好通过Message.obtain()和Handler.obtatinMessage()来得到 ...
- Confluence 6 如何考虑设置一个空间的主页
这空间是干什么的?空间主页是访问你空间的用户最先看到的页面.如果你在这个页面中包含一些你空间是干什么的内容能够帮助你的用户更加容易的访问你的空间,同时也能够让你的用户更加容易了解你正在工作的事情.你可 ...
- Watto and Mechanism CodeForces - 514C (字典树,哈希)
大意: 给定字符串集$S$, 每次询问给出字符串$a$, 求$S$中是否存在一个字符串恰好与$a$相差一个字符. 直接建字典树暴力复杂度是$O(n\sqrt{n})$, 也可以用set维护所有哈希值, ...
- HTML(简介及常用标签)
一.HTML简介 1.1 html是什么? 超文本标记语言(Hypertext Markup Language,HTML)通过标签语言来标记要显示的网页中的各个部分.一套规则,浏览器认识的规则. 浏览 ...