1. JDK,JRE,JVM三者之间的关系,以及JDK、JRE包含的主要结构有哪些?

JDK: Java Development Kit 的英文缩写,中文翻译:Java开发工具包。是Java开发的核心,包括了Java运行环境 jre,很多的Java工具,以及一些Java基础类库。JDK = JRE + Java的开发工具(javac.exe,java.exe,javadoc.exe)

JRE: Java Runtime Environment 的英文缩写,中文翻译:Java运行环境。是运行基于Java语言编写的程序所不可缺少的运行环境。JRE= JVM + Java核心类库

JVM:Java Virtual Machine 的英文缩写,中文翻译:Java虚拟机。是Java实现跨平台的最核心部分。所有的java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行。由虚拟机将程序解释给本地系统执行

2. 常见的dos命令

  • cd ——进入文件
  • cd… ——退出当前目录
  • cd\ ——退至根目录
  • md 文件目录 —— 创建文件目录
  • dir ——查看当前路径下的所有文件
  • echo 文件内容 > 文件名 ——创建文件并写入文件内容
  • del 文件名 —— 删除文件
  • rd 或者rmdir 空文件目录 ——删除文件目录
  • rd /s 文件目录 ——询问并删除不为空的文件目录
  • del 文件目录 ——删除文件目录下的文件
  • rd /q/s 文件目录——不询问直接删除不为空的文件目录

3. 标识符的命名规则有哪些?

  • 必须有字母、下划线、数字和$组成,数组不能开头
  • 不能是java中的关键字和保留字,可以是关键字的组合
  • 在同一作用域范围内不能重名
  • 没有长度限值
  • 严格区分大小写

4. 标识符的命名规范有哪些?

  • 见名知意
  • 包名:xxxyyyzzz  都小写
  • 类名、接口名:XxxYyyZzz  首字母大写
  • 变量或方法:xxxYyyZzz  第一个单词首字母小写
  • 常量: XXX_YYY_ZZZ 多单词时每个单词用下划线连接

5. Java变量按照数据类型怎么划分?并指出Java的基本数据类型有哪8种,并指出各自占用的内存空间大小

运行java环境 java运行环境的英文缩写_文件目录

  • 基本数据类型: 整型(byte,short,int, long)、浮点型(float、double)、字符型(char)、布尔型(boolean)
  • 整型
  • Java语言中描述整数数据的类型有:byte、 short、 int、 long
  • 直接写出的整数数据叫做直接量/字面值/常量,默认int类型
  • 若希望表达更大的直接量,在后面加上l或者L,推荐L
  • 浮点型
  • float:单精度,尾数可以精确到7位有效数字,4个字节,表示范围 -3.403E38 ~ 3.403E38
  • double:双精度,精度是float的两倍,8个字节,表示范围-1.798E308 ~ 1.798E308
  • Java 的浮点型常量默认为double型, 声明float型常量,须加‘f’或‘F’。
  • 字符型
  • 2个字节,Java中的所有字符都使用Unicode编码
  • 字符常量是用单引号(‘ ’)括起来的单个字符,必须初始化值,不能单纯使用‘’
  • 允许使用转义字符‘\’来将其后的字符转变为特殊字符型常量。
  • 直接使用 Unicode 值来表示字符型常量:‘\uXXXX’。其中, XXXX代表一个十六进制整数。
  • char类型对应的Unicode码是可以进行运算的
  • 布尔型
  • 1个字节,只有两种取值,true和false;
  • 用来判断逻辑条件
  • 不可以使用0或非 0 的整数替代false和true
  • Java虚拟机中没有任何供boolean值专用的字节码指令
  • Java语言表达所操作的boolean值,在编译之后都使用java虚拟机中的int数据类型来代替: true用1表示, false用0表示。
  • 引用数据类型: 数组(String)、类、接口、枚举

6. 基本数据类型变量之间自动类型提升的运算规则以及基本数据类型变量之间强制类型转换的使用规则和强转可能出现的问题。

  • 自动提升运算规则:short/char/byte-->int-->long-->float-->double
  • 强制类型转换: 将容量大的基本数据类型转为容量小的基本数据类型可能会造成精度损失,用强转符号()

7. char型变量中能不能存贮一个中文汉字?为什么?

  • 可以,java采用Unicode编码存放字符型,一个字符占两个字节,16个bit 

8. 变量的分类

  • 变量是程序中最基本的存储单元,包含变量类型、变量名和存储的值
  • 变量必须先声明后使用,作用域内不能重名,作用域内才能使用
  • 变量的分类
  • 主要有静态变量,成员变量和局部变量
  • 类的成员变量的作用范围与类的实例化对象的作用范围相同,当类被实例化后,成员变量就会在内存中分配空间并初始化,直到这个被实例化对象的生命周期结束,成员变量生命周期结束
  • static修饰的成员变量可以当做全局变量,不依赖于特定的实例,被所有实例共享,只要加载了类,JVM就会给类的静态变量分配存储空间
  • 局部变量的作用域和可见性为他所在的花括号内

9. 方法的重载和重写

  • 方法的重载(Overload):方法名称相同,参数列表不同,这样的方法之间构成重载关系
  • 参数的个数不同、参数的类型不同、参数顺序不同,与返回值类型和形参变量名无关,建议返回值类型最好相同
  • 方法重载的实际意义在于调用者只需要记住一个方法名就可以调用各种不同的版本,来实现各种不同的功能
  • 在编译时期调用地址已经静态绑定 
  • 方法的重写:在子类中根据需要对从父类中继承下来的方法进行改造,该方式叫做方法的重写或者方法的覆盖。
  • 方法名相同,形参列表相同,返回值类型相同,从java5开始允许返回子类类型
  • 方法的访问权限不能变小,可以与父类相同或者变大,
  • 方法不能抛出更大的异常
  • 子类不能重写父类中声明为private权限的方法,也不能重写父类的静态方法