一、为什么Java代码可以实现一次编写、到处运行?
因为有java虚拟机 JVM的存在,在程序运行之前,.java文件会被编译器编译为**.class文件,然而想要运行的话就需要java虚拟机JVM将.class的字节码文件翻译成机器码并运行;跨平台能运行的是java文件;不同的机器有不同的JVM就会翻译成不同的机器码**语言供不同的机器运行。
二、一个Java文件里可以有多个类吗(不含内部类)?
一个java文件中可以有多个类但是只能有一个public修饰的类,而且public修饰的类必须与.java文件名一致。
只有一个public类,就保证了每一个java文件(编译单元)都有单一的公共接口,用public类来表现。该接口可以按要求包含众多的支持包访问权限的类(没有被public修饰的类)。如果在某个编译单元内有一个以上的public类,编译器就会给出错误信息。
public void class Test{
//public修饰的一个唯一的类
class Test1{
//成员内部类
}
}
class other{
//一个java文件中可以存在多个类
}
拓展:一个public修饰的类或者普通的类里面可以包含多个成员内部类,成员内部类可以随意调用外部类中的方法和属性(包括private和static修饰的)。但如果成员内部类中有和外部类同名的方法和属性,则默认情况下都是访问内部类的方法和成员,如果需要访问外部类中的方法和成员则需要使用this关键字。(成员内部类是最普通的内部类,它的定义为位于另一个类的内部)
外部类.this.成员变量
外部类.this.成员方法
三、Java访问权限
访问权限分为:修饰类or修饰成员变量和方法两种
3.1修饰类
修饰类有两种:
public修饰类:该类可以被任意包下任意类访问
default修饰类:该类可以被同一包下的其他类访问
3.2修饰成员变量或方法
修饰成员变量或方法有四种:
public:该成员可以被任意包下的任意类访问。
private:该成员可以被该类的内部成员访问
protected:该成员可以被该类内部成员访问,也可以被同一包下其他的类访问,还可以被它的子类访问;
default:该成员可以被该类内部成员访问,也可以被同一包下的其他类访问。
四、介绍一下Java的数据类型
java的数据类型有八种;整数类型(byte,short,int,long)浮点型(float,double)字符型(char)布尔型(boolean)
五、请介绍成员(全局)变量和局部变量的区别
成员变量:是在类的范围内中定义的变量,有默认初始值;
未被static修饰的成员变量叫实例变量,放在堆内存中生命周期与对象相同
被static修饰的成员变量叫做类变量,储存在方法区中,生命周期与类相同。
(被static修饰的方法或类不能随意调用未被static修饰的方法或变量,需要先创造一个对象再调用其方法或变量)
局部变量:是在方法的范围内定义的变量,没有有默认的初始值;存储在栈内存中,作用的范围结束,变量空间会自动的释放。
六、实例变量的默认值
byte 0; short 0; int 0;long 0; double 0.0;float 0.0f;boolen flase;char ‘\u0000’;