zoukankan      html  css  js  c++  java
  • 课程作业02 将课程中的所有动手动脑的问题以及课后实验性的问题,整理成一篇文档。

     

    一个Java类文件中真的只能有一个公有类吗?

    请使用Eclipse或javac检测一下以下代码,有错吗?

    1
    2
    3
    4
    5
    6
    public class Text {
        public static void main(String[] args) {
    public class InnerClass{
    }
        }
    }

    经检验一个Java类文件中只能有一个公有类。java程序是从一个public类的main函数开始执行的,就像C程序是从main()函数开始执行一样。public类只能定义在以它的类名为文件名的文件中。每个编译单元(文件)都只有一个public类。因为每个编译单元都只能有一个公共接口,用public类来表现。该接口可以按照要求包含众多的支持包访问权限的类。如果有一个以上的public类,编译器就会报错。并且public类的名称必须与文件名相同(严格区分大小写)。当然一个编译单元内也可以没有public类。在一个源文件.java文件中可以有很多类,只有一个public类其他的都不能是在public类。如果有很多public类,那程序怎么运行?

    把main()方法的返回值由 void 改为 int ,程序能编译通过吗?能运行吗?

    不能运行,因为没有返回值。

    为什么java规定作为程序入口点的main() 方法静态的?

    非静态成员函数在执行前必须先构造并实例化该函数所在的类。如果允许非静态的main,那么main函数所在的类必须先进行实例化,那么就需要再写个函数去实例化main所在的类,再调用main,如果这个实例化代码也是非静态的,又要写个函数去实例化它所在的类。因此,java语言就规定了main必须是静态的。

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

    成员变量和局部变量的区别:

     成员变量:

    ①成员变量定义在类中,在整个类中都可以被访问。

    ②成员变量随着对象的建立而建立,随着对象的消失而消失,存在于对象所在的堆内存中。

    ③成员变量有默认初始化值。

    局部变量:

    ①局部变量只定义在局部范围内,如:函数内,语句内等,只在所属的区域有效。

    ②局部变量存在于栈内存中,作用的范围结束,变量空间会自动释放。

    ③局部变量没有默认初始化值

    在使用变量时需要遵循的原则为:就近原则。首先在局部范围找,有就使用;接着在成员位置找。然后在主函数里面创建对象并输出。

    示例:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public class Person {
        private int age=1000;
        public void setAge(int age) {
            age=age;  System.out.println("方法内的年龄"+age); 
            }
        public void sayHello() {
            System.out.println("我的年龄是"+age+"."); 
            }
    public static void main(String[] args) {
    Person p=new Person();
    p.setAge(20);
    p.sayHello();
    }
    }

    运行结果:

    为什么double类型的数值进行运算得不到“数学上精确”的结果?

    double类型的数值占用64bit,即64个二进制数,除去最高位表示正负符号的位,在最低位上一定会与实际数据存在误差(除非实际数据恰好是2的n次方。简单来说就是我们给出的数值,在大多数情况下需要比64bit更多的位数才能准确表示出来(甚至是需要无穷多位),而double类型的数值只有64bit,后面舍去的位数一定会带来误差,无法得到“数学上精确”的结果。

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

    int X=100;

    int Y=200;

    System.out.println("X+Y="+X+Y);

    System.out.println(X+Y+"=X+Y");

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

    输出结果:

    因为+的默认含义不同,第一个由于在“”之后默认为进行数据的链接。而第二则是在前面默认为加法运算。

  • 相关阅读:
    tkinter 对键盘和鼠标事件的处理
    python基础知识字符串与元祖
    python中的raw string的使用
    python使用tkinter做界面之颜色
    windows强制删除文件和文件夹
    Python 类的继承__init__() takes exactly 3 arguments (1 given)
    python tkinter txt窗口,开线程两个卡死
    python Tkinter的Text组件中创建x轴和y轴滚动条,并且text文本框自动更新(三)
    tkinter界面卡死的解决办法
    python Tkinter的Text组件中创建x轴和y轴滚动条,并且text文本框自动更新(二)
  • 原文地址:https://www.cnblogs.com/woshitiancai/p/7638332.html
Copyright © 2011-2022 走看看