动手动脑问题及课后实验性问题总结

动手动脑一:仔细阅读示例:Enum.Test.Java,运行它,分析结果?得到什么结论?是否掌握枚举类型的用法?

运行结果如图:s和t是不同的内容,引用不同的对象;枚举类型是引用数据类型;可以字符转换;对定义变量名进行逐个列出。

Enum 一般用来表示一组相同类型的常量。如性别、日期、月份、颜色等。对这些属性用常量的好处是显而易见的,不仅可以保证单例,且比较时候可以用 ”==” 来替换 equals 。

用法:

枚举的声明,其形式为:访问修饰符enum 枚举名: 基础类型{ 枚举成员(标识符) }

枚举成员不能是数值常量、字符常量、字符串常量,使用时不能加单、双引号。

每个枚举成员均具有相关联的常数值。此值的类型就是枚举的基础类型。枚举类型属于顺序类型。根据定义类型时各枚举成员的排列顺序确定它们的序列,如在默认基础类型即int的情况下序列号从0开始,后面每个枚举成员的值依次递增1。

课后练习:弄清楚反码,补码,原码的定义,并判断Java是运用哪种码编写的?

原码:一个整数,按照绝对值大小转换成的二进制数,称为原码。虽然原码非常的简单直观,但是当用原码表示0的时候就会出问题。0用原码表示分为+0和-0,当机器字长为8时,[+0]原=00000000,[-0]原=10000000。这就有问题了,同一个数却有两种表示,产生了二义性,从而给机器判断0带来了麻烦;二是用原码运算时,符号位需要单独处理,而且运算规则很复杂。例如加法运算,若两个数异号,则先要让绝对值大的数减去绝对值小的数,然后把绝对值大的数的符号付给结果。还有就是,借位操作如果用计算机硬件实现起来是很困难的。

反码:将二进制数按位取反,所得的新二进制数称为原二进制数的反码。反码很少会被用到,他主要的用途就是作为原码与补码的一个桥梁。他和原码一样对0有两种表示方法,[+0]反=00000000,[-0]反=11111111。

补码: 采用补码进行运算有两个好处,一个就是刚才所说的统一加减法;二就是可以让符号位作为数值直接参加运算,而最后仍然可以得到正确的结果符。

说到补码,就需要另一个概念——模数。模数从物理意义上讲是某种计量器的容量。这里我们经常举的一个例子就是钟表,其模数为12,即每到12就重新从0开始,数学上叫取模或求余(mod),Java里用%表示求余操作。在模数系统中,A-B或A+(-B)等价于A+[B补],这样用补码来表示负数就可以将加减法统一成加法来运算,简化了运算的复杂程度。

Java运用补码计算。

课后练习:Java遵循“同名变量的屏蔽原则”:

程序测试:

public class Test {

private static int value=1;

public static void main(String[] args){

int value=2;

System.out.println(value);

}

}

输出结果为二。

Java变量是有作用域的,两个作用域完全不同,不会引起冲突。因为在java中,局部定义的变量能够覆盖全局范围内的变量。在局部使用某个变量的时候JVM会优先找和当前使用位置"近"的变量的的定义!如果在局部定义了和全局变量一样的名字,我们使用的过程中,调用全局变量的话,会使用this关键字辅助。

例:class A{

int i=10;
                                      void f()

{

int i=100;
                                            System.out.println(this.i);//全局
                                            System.out.println(i);//局部
                                       }
                           }

动手动脑二:Java中每个数据类型所占位数及表示数值范围。

1.Int         32位       取值范围为       -2的31次方到2的31次方减1之间的任意整数

2.Short     16位       取值范围为       -32768~32767之间的任意整数

3.long       64位       取值范围为       -2的63次方到2的63次方减1之间的任意整数

4.float       32位       取值范围为       3.402823e+38 ~ 1.401298e-45

5.double    64位       取值范围为       1.797693e+308~ 4.9000000e-324

6.char       8位         取值范围为        -128~127

7.byte       8位         取值范围为        -128~127之间的任意整数

动手实验:运行代码,分析结果

因为使用double类型数值计算,结果不准确。浮点数在计算机内部的表示方法有关。浮点数是属于有理数中某特定子集的数的数字表示,在计算机中用以近似表示任意某个实数。具体的说,这个实数由一个整数或定点数(即尾数)乘以某个基数(计算机中通常是2)的整数次幂得到,这种表示方法类似于基数为10的科学记数法。 浮点计算是指浮点数参与的运算,这种运算通常伴随着因为无法精确表示而进行的近似或舍入。 

动手动脑:以下代码的输出结果是什么?为什么会有这样的输出结果?

x+y=100200

300=x+y

第一种结果是相当于字符串的连接,输出的是x+y的字符串;第二个是加法运算,等于300。

时间: 2024-10-25 23:37:09

动手动脑问题及课后实验性问题总结的相关文章

05-String动手动脑问题及课后实验性问题总结

一.请运行以下实例代码StringPool.java,查看其输出结果.如何解释这样的输出结果?从中你能总结出什么? (1)在Java中,内容相同的字符常量("Hello")只保存一份以节约内存,所以s0,s1,s2实际上引用的同一个对象. (2)编译器在编译s2一句时,会去掉"+"号,直接把两个字符串连接起来得一个字符串("Hello").这种优化工作由Java编译器自动完成. (3)当直接使用new关键字创建字符串对象时,虽然值一致(都是&qu

03-方法ppt动手动脑问题及课后实验性问题总结

一.如何不使用static来进行调用函数? 1.自己定义的不需要都是static,但是要在主函数中调用就需要static了,因为main是静态 的,在类加载时就加载了.如果想用又不加可以吧自己写的方法写在一个类中调用就行.主函数一般也只是调用不做数据处理. 2.static方法是在编译的时候确定的,在类装入内存的时候也同时装入内存了.而非static方法是在类的实例化的时候装入内存的,其必须依赖于类的实例. 实例在装入堆栈的时候是会附加上指向method area的指针,所以可以在非静态方法中调

java异常处理动手动脑问题解决和课后总结

动手动脑 一.问题:请阅读并运行AboutException.java示例,然后通过后面的几页PPT了解Java中实现异常处理的基础知识. 1.源代码 import javax.swing.*; class AboutException { public static void main(String[] a) { int i=1, j=0, k; //k=i/j; try { k = i/j; // Causes division-by-zero exception throw new Exc

动手动脑的问题以及课后实验性的问题

      结果: 实验结论:枚举类型是引用类型!枚举不属于原始数据类型,它的每个具体值都引用一个特定的对象.相同的值则引用同一个对象.可以使用“==”和equals()方法直接比对枚举变量的值,换句话说,对于枚举类型的变量,“==”和equals()方法执行的结果是等价的. 2.课后联系 阅读相应教材,或者使用互联网搜索引擎,弄清楚反码.补码跟原 码这几个概念,然后编写示例程序,对正数.负数进行各种位操作,观察输出结果,与手工计算的结果进行比对,看看Java中的数是采用上述哪种码表示的. 原码

JAVA 数组作业——动手动脑以及课后实验性问题

JAVA课后作业——动手动脑 一:阅读并运行示例PassArray.java,观察并分析程序输出的结果,小结,然后与下页幻灯片所讲的内容进行对照. 1.源代码 // PassArray.java // Passing arrays and individual array elements to methods //引用传递和按值传递 public class PassArray { public static void main(String[] args) { int a[] = { 1,

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

一.动手动脑 1)源代码 public class ParentChildTest { public static void main(String[] args) { Parent parent=new Parent(); parent.printValue(); Child child=new Child(); child.printValue(); parent=child; parent.printValue(); parent.myValue++; parent.printValue(

07-继承与接口动手动脑及课后实验性问题总结

一.运行TestInherits.java示例,观察输出,注意总结父类与子类之间构造方法的调用关系修改Parent构造方法的代码,显式调用GrandParent的另一个构造函数,注意这句调用代码是否是第一句,影响重大! class Grandparent { /*public Grandparent() { System.out.println("GrandParent Created"); }*/ public Grandparent(String string) { System.

异常处理---动手动脑及课后作业

动手动脑1:请阅读并运行AboutException.java示例,然后通过后面的几页PPT了解Java中实现异常处理的基础知识. 源码: import javax.swing.*; class AboutException { public static void main(String[] a) { int i=1, j=0, k; k=i/j; try { k = i/j; // Causes division-by-zero exception //throw new Exception

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()); //