java练习题

一.

分析程序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};

运行结果:

  • 结论:可以看出,枚举类型可以定义几种类型,并从中选择其中一种进行赋值。当判断两个赋值是否相同时,输出结果只能是ture或false。当输出value时,需要Size value:Size.values()循环类型的数量的次数。enum Size{SMALL,MEDIUM,LARGE};语句可以写在程序的最后,也可以写在前面,但必须自己引用。枚举的赋值可以有两种表示方法:1.Size s=Size.SMALL;  2.Size t=Size.valueof(“SMALL”)。

二.阅读相应教材,或者使用互联网搜索引擎,弄清楚反码、补码跟原    码这几个概念,然后编写示例程序,对正数、负数进行各种位操作,观察输出结果,与手工计算的结果进行比对,看看Java中的数是采用上述哪种码表示的。

  • 反码:机器数的反码可由原码得到。如果机器数是正数,则该机器数的反码与原码一样;如果机器数是负数,则该机器数的反码是对它的原码(符号位除外)各位取反而得到的。设有一数X,则X的反码表示记作〔X〕反。
  • 补码:机器数的补码可由原码得到。如果机器数是正数,则该机器数的补码与原码一样;如果机器数是负数,则该机器数的补码是对它的原码(除符号位外)各位取反,并在未位加1而得到的。设有一数X,则X的补码表示记作〔X〕补。
  • 原码:原码表示法是机器数的一种简单的表示法。其符号位用0表示正号,用:表示负号,数值一般用二进制形式表示。设有一数为x,则原码表示可记作〔x〕原。

三.

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

public class Test1 {

 

    public static int value = 1;

    public static void main(String[] args) {

       // TODO Auto-generated method stub

         int value = 2;

         System.out.println(value);

        

    }

}

结果为:2

public class Test1 {

 

    public static int value = 5;

    public static void main(String[] args) {

       // TODO Auto-generated method stub

         int value = 3;

         System.out.println(value);      

    }

}

结果为:3

public class Test1 {

    public static int value = 4;

    public static void main(String[] args) {

       // TODO Auto-generated method stub

         System.out.println(value);      

    }}

结果为:4

得出结论:在函数里面的赋值优先于在函数外赋值,函数外的赋值可以赋给类中的多个函数,如果函数里面没有重复的赋值,那么函数的值为函数外的。

四.

看着这个图,再查查Java中每个数据类型所占的位数,和表示数值的范围,你能得出什么结论?

 

实线代表无精度损失,虚线代表有精度损失,一般来说在实线两端都是由低精度指向高精度的类型,所占的位数从低到高,范围从小到大,所以可得出,低精度向高精度转化不丢失精度,反之,从高精度传向低精度则会损失。

 

n  五.以下代码的输出结果是什么?

       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

 

为什么会有这样的输出结果?

因为输出的是字符串,所以前一个分别输出两个字符串,而后一个表示用字符串输出两个整形的和。

原文地址:https://www.cnblogs.com/xiaosongbiog/p/4859981.html