• Java语法基础动手动脑


    仔细阅读示例:EnumTest.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};

     运行结果:

    false,false,true,SMALL,MEDIUM,LARGE

    阅读相应教材,或者设用互联网搜索引擎,弄清楚反码、补码跟原码这几个概念,然后编写示例程序,对正数、负数进行各种位操作,观察输出

     结果,与手工计算的结果进行比对,看看Java中的数是采用上述那种码表示的

    真值:带符号为的机器数的对应的真正数值称为机器数的真值
    例:0000 0001真值为+1
    原码:符号位加上真值的绝对值,即用第一位表示符号,其余位表示数值
    反码:正数的反码是其本身
    负数的反码在其原码的基础上,符号位不变,其余位取反
    补码:正数的补码是其本身,负数的补码在其原码的基础上,符号位不变,其余位取反,最后加1(即在反码的基础上加1)
     
    源代码:
    public class Bit {
        public static void main( String [] args ){
            System.out.println(3<<2);
            System.out.println(-3<<2);
            System.out.println(9>>3);
            System.out.println(-9>>3);
        }
    }

    运行结果:

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

     输出顺序按照就近原则,先在本方法内查找,如果没有,去到本类中查找,如果也没有,再去到上一级的接口或者父类中查找。如果上一级接口和父类都同时有,那么程序就会报错

    源代码:

    public class Father {
        protected int a = 2;
    }
    public class Child extends Father{
        private int a = 3;
        public int getA(){
            return a;
        }
    }
    public class SameName {
        
        public static int a = 0;
        public static void main( String [] args ){
            int a =1;
            Child c = new Child();
            System.out.println(a);
            System.out.println(c.getA());
        }
    }

    运行结果:

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

    int     32位  4字节       -2147483648~2147483647

    short    16位  2字节        -32768~32678

    long       64位     8字节        -9223372036854775808~9223372036854775807

    float       32位     4字节        -340292347E+38~+340292347E+38

    double   64位  8字节        -1.79769313486231576E+308~.79769313486231576E+308

    char    16位  2字节        ‘u0000′‘~‘uFFFF’

    boolean  1位   0.125字节     true/false

    byte    8位   1字节         -128~127

     低精度型向高精度型转换

    请运行以下代码

    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));
        }
    }

    你看到了什么输出,意外吗?

    运行结果

    以下代码的输出结果是什么

         int x = 100;
            int y = 200;
            System.out.println("x+y="+x+y);
            System.out.println(x+y+"=x+y");

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

     当+号两个操作数都是数字时为运算符,存在一个是" "时为连接符

  • 相关阅读:
    SPOJ NSUBSTR
    一点对后缀自动机的理解 及模板
    HDU 1086 You can Solve a Geometry Problem too
    HDU2036 改革春风吹满地
    POJ 2318 TOYS
    [HNOI2008]玩具装箱TOY
    HDU 3507 Print Article
    洛谷 P1231 教辅的组成(网络最大流+拆点加源加汇)
    P3984 高兴的津津
    P2756 飞行员配对方案问题(网络流24题之一)
  • 原文地址:https://www.cnblogs.com/gothic-death/p/9752192.html
Copyright © 2020-2023  润新知