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变量遵循“同名变量的屏蔽原则”,请课后阅读相关资料弄清楚相关知识,然后自己编写一些测试代码,就象本示例一样,有意识地在不同地方定义一些同名变量,看看输出的到底是哪个值:

  1. //父类
  2. class Parent
  3. {
  4. public static String kind="javastudy.extendsstudy.parent";
  5. public static int age=50;
  6. public String name="Parent";
  7. //静态方法,返回包名
  8. public static String getKind()
  9. {
  10. System.out.println("parent的getKind()方法被调用了");
  11. return kind;
  12. }
  13. //静态方法,返回年龄
  14. public static int getAge()
  15. {
  16. System.out.println("Parent的getAge()方法被调用了");
  17. return age;
  18. }
  19. //实例方法,返回姓名
  20. public String getName()
  21. {
  22. System.out.println("Parent的getName()方法被调用了");
  23. return this.name;
  24. }
  25. }
  26. //子类
  27. class Child extends Parent
  28. {
  29. public static String kind="javastudy.extendsstudy.child";
  30. public int age=25;
  31. public String name="child";
  32. //隐藏父类静态方法
  33. public static String getKind()
  34. {
  35. System.out.println("child的getkind()方法被调用了");
  36. return kind;
  37. }
  38. //获取父类包名
  39. public static String getParentKind()
  40. {
  41. return Parent.kind;
  42. }
  43. //覆盖父类实例方法
  44. public String getName()
  45. {
  46. System.out.println("child的getName()被调用了");
  47. return this.name;
  48. }
  49. //获取父类名称
  50. public String getParentName()
  51. {
  52. return super.name;
  53. }
  54. /*
  55. *错误,实例方法不能覆盖父类的静态方法
  56. public int getAge()
  57. {
  58. return this.age;
  59. }
  60. */
  61. }

然后测试下

  1. class Test
  2. {
  3. public static void main(String[] args)
  4. {
  5. Child child=new Child();
  6. System.out.printf("子类名称:%s,年龄:%d,包名:%s%n",child.name,child.age,child.kind);
  7. //输出:子类名称:child,年龄:25,包:javastudy.extendsstudy.child
  8. //把child转换成parent对象
  9. Parent parent=child;
  10. System.out.printf("转换后的名称:%s,年龄:%d,包名:%s%n",parent.name,parent.age,parent.kind);
  11. //输出:转换后的名称:Parent,年龄:50,包:javastudy.extendsstudy.parent
  12. System.out.printf("子类访问父类被隐藏的实例变量name:%s%n",child.getParentName());
  13. //输出:子类访问父类被隐藏的实例变量name:Parent
  14. System.out.printf("子类访问父类被隐藏的静态变量kind:%s",child.getParentKind());
  15. //输出:子类访问父类被隐藏的静态变量kind:javastudy.extendsstudy.parent
  16. child.getName();
  17. //输出:child的getName()被调用了
  18. //**************注意看这个方法,返回的还是子类的getName
  19. parent.getName();
  20. //输出:child的getName()被调用了
  21. child.getKind();
  22. //输出:child的getkind()方法被调用了
  23. parent.getKind();
  24. //输出:parent的getKind()方法被调用了
  25. }
  26. }

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)的更多相关文章

  1. 动手动脑-java重载

    有以下例子: 例: Using overloaded methods public class MethodOverload { public static void main(String[] ar ...

  2. 动手动脑——JAVA语法基础

    EnumTest.java public class EnumTest { public static void main(String[] args) { Size s=Size.SMALL; Si ...

  3. 动手动脑java异常处理

    1>请阅读并运行AboutException.java示例,然后通过后面的几页PPT了解Java中实现异常处理的基础知识. import javax.swing.*; class AboutEx ...

  4. 动手动脑-Java的方法重载

    例: Using overloaded methods public class MethodOverload {  public static void main(String[] args) {  ...

  5. 动手动脑-Java的继承与多态

    一. class Grandparent { public Grandparent() { System.out.println("GrandParent Created."); ...

  6. JAVA语法基础作业——动手动脑以及课后实验性问题 (八)

    一.动手动脑 运行AboutException.java示例,了解Java中实现异常处理的基础知识. 1)源代码 import javax.swing.*; class AboutException ...

  7. JAVA方法03之动手动脑问题解决

    动手动脑1.当JAVA里定义的函数中去掉static后,怎么办?(如下程序,将square()函数的static去掉) public class SquareIntTest { public stat ...

  8. java动手动脑和课后实验型问题String类型

    1.请运行以下示例代码StringPool.java,查看其输出结果.如何解释这样的输出结果?从中你能总结出什么? true true false 总结: 使用new关键字创建字符串对象时, 每次申请 ...

  9. Java(接口与继承)动手动脑

    1>继承条件下的构造方法调用 运行 TestInherits.java 示例,观察输出,注意总结父类与子类之间构造方法的调用关系修改 Parent 构造方法的代码,显式调用 GrandParen ...

  10. 动手动脑及java程序之用消息框进行数的运算

        动手动脑     自信成就人生 动手动脑1 ✿仔细阅读示例: EnumTest.java,运行它,分析运行结果? package demo; public class Test { publi ...

随机推荐

  1. C#数组维数及不同维数中元素个数的获取

    简单理解有关数组维数的概念: 1.编程中用到的多维的数组,最多也就是二维数组了 2.数组的维数从0开始计算 using System; using System.Collections.Generic ...

  2. 关于Python中的ifelse、while和for循环的简单小结

    1.ifelse 1.1首先简单编辑一个关于ifelse的程序: _username = 'yanfeixu' _password = 'wuyifan' username = input(" ...

  3. Redis入门指南之二(安装及配置)

    本节主要内容 1. 前言2. redis安装3. 启动和停止Redis 1. 前言 安装Redis需要知道自己需要哪个版本,有针对性的安装,比如如果需要redis GEO这个地理集合的特性,那么red ...

  4. Servlet Exception and Error Handling

    Servlet API support for custom Exception and Error Handler servlets that we can congiure in deployme ...

  5. spring boot ----> jpa连接和操作mysql数据库

    环境: centos6.8,jdk1.8.0_172,maven3.5.4,vim,spring boot 1.5.13,mysql-5.7.23 1.引入jpa起步依赖和mysql驱动jar包 &l ...

  6. nginx ----> nginx配置/反向代理/负载均衡

    nginx [engine x]是一个HTTP和反向代理服务器,一个邮件代理服务器和一个通用的TCP/UDP代理服务器,最初由Igor Sysoev编写. 环境: Ubuntu16.04 安装ngin ...

  7. Python的特殊成员

    Python 用下划线作为变量前缀和后缀指定特殊变量 _xxx 不能用’from module import *’导入 __xxx__ 系统定义名字 __xxx 类中的私有变量名 核心风格:避免用下划 ...

  8. 20170824xlVBA出车对账单

    Private Sub GetClientAccountList() Dim EndRow As Long Dim i As Long, j As Long Dim m As Long, n As L ...

  9. centos6 安装python3.5后pip无法使用的处理

    现象:安装pip后发现命令无法识别command not found 原因:which查看找到不到执行路径   find搜索发现安装后存放在/usr/local/python3.5/bin下,于是判断 ...

  10. AVL平衡二叉树的各种问题(Balanced Binary Tree)

    AVL树或者是一棵空树,或者是具有以下性质的非空二叉搜索树: 1. 任一结点的左.右子树均为AVL树: 2.根结点左.右子树高度差的绝对值不超过1. 1.声明 #include<iostream ...