初识Java

:::info

填空:

:::

  1. Java技术按照用途不同分为三大版本,分别是JavaSE、 javaEE 和JavaMe
  2. Java虚拟机就是一个虚拟的用于执行 bytecodes字节码 的计算机。它是Java最核心的技术,是Java跨平台的基础。
  3. DOS命令中用来改变当前目录的命令是 cd,用来查看当前目录下的文件和子文件夹的命令是 dir 。
  4. 安装JDK后,为了告诉计算机javac.exe和java.exe等执行文件的位置,需要配置的环境变量是 path 。
  5. 使用Java开发应用程序包括编写源程序,编译源程序,解释并运行三个步骤,其中Java源程序编译后生成的字节码文件的扩展名为 class 。
  6. Java提供了三种注释类型,分别是单行注释,多行注释和 文档注释 。
  7. 一个Java源程序是由若干个类组成。如果源文件中有多个类时,则只能有一个类是public类,并且这个类必须与源文件名同名。
  8. DOS下,自动补齐命令的键是 Tab ;想查找以前执行的命令用 上箭头键 ;
  9. DOS下,dir命令表示 显示目录下所有文件和文件夹 ;
  10. DOS下,cd命令表示 改变目录 。 :::info

    判断:

    :::

  11. Java语言是一种面向对象的语言,具有较好的安全性和可移植性及与平台无关等特性。( T )

  12. Java具有一次编译,到处运行的特点,其含义是Java的源代码可以一次性编译成计算机的机器码,并在不同的平台上运行。( F )
  13. JDK包含JRE,JRE包括JVM。( T )
  14. 和C++相比,Java取消了指针,不再有多重继承,不需要手动回收垃圾。( T )
  15. Java的字节码文件的扩展名是class,是一种平台独立的非二进制文件。( F )
  16. 假设有一个Java源程序文件,它只定义了一个具有public属性的类Hello,那么解释执行该类的命令是“java Hello.class”。(F )
  17. 注释是程序员为读者作的说明,是提高程序可读性的一种手段。Java注释不会出现在字节码文件中,即Java编译器编译时会跳过注释语句。( T )
  18. Javadoc是一种从文档注释生成HTML帮助文件的工具。它可以处理在Java源程序中介于“/”和“/”之间的注释,并生成相应的程序文档。( F )

数据类型和运算符

:::info

填空:

:::

  1. Java语言规定标识符由字母、下划线、美元符号和数字组成,并且第一个字符不能是**数字 。**
  2. Java中整型变量有byte、short、int和long四种,不同类型的整数变量在内存中分配的字节数不同,数值范围也不同。对于int型变量,内存分配 4 个字节。
  3. 在Java中浮点型变量有float和double两种,对于float型变量,内存分配4个字节,尾数可精确到7位有效数字,对于double型变量,内存分配 8 个字节。
  4. char c=’a’;System.out.println(c+1);运行结果为: 98 。
  5. _&&__是短路与运算符,如果左侧表达式的计算结果是false,右侧表达式将不再进行计算。
  6. 下面的语句是声明一个变量并赋值:boolean b1=5!=8; b1的值是true__
  7. 使用位运算符来实现运算效率最高,所以最有效率的方法算出2乘以8等于多少的语句是 2<<3 。
  8. 基本数据类型的类型转换中,要将double类型的常量3.14159赋给为整数类型变量n的语句是__int n = (int)3.14159_
  9. 八进制整数012表示十进制的10_,十六进制数0x3C表示十进制的60_
  10. 一个十进制整数转换成八进制数后是1234,则它转为十六进制数后是 29c 。 :::info

    判断:

    :::

  11. Java中变量名不区分大小写,number和NuMbEr代表同一个变量。( F )

  12. 在编译Java源程序时,计算机根本不会去识别各个变量名的具体含义,因此命名规范对编写Java程序而言不是必要的,而且有可能会降低编写Java源程序的效率。( F )
  13. Java语言中不同数据类型的占用字节数是固定的,不随机器硬件不同而改变。( T )
  14. char类型变量可以存储一个Unicode字符,在内存中占2个字节,该字符可以是一个汉字。( T )
  15. 运算符||和&&既是逻辑运算符,也是位运算符。根据两侧操作数的类型判断是逻辑运算符还是位运算符。( F )
  16. ^ 是异或位运算符,运算规则是如果两个操作数相同,结果是0,否则结果是1。( T )
  17. 整型常量的默认类型是int类型,浮点常量的默认类型是float类型。( F )
  18. 00101010 & 00010111语句的执行结果为00111111( F )

选择和循环语句

:::info

填空:

:::

  1. Java中有两种类型的选择结构的控制语句,分别是if语句和** SWITCH语句 **。
  2. 在Java JDK1.7之前,switch只能支持byte、short、char、int或者其对应的封装类以及Enum类型。在JDK1.7中又加入了 String 类型。
  3. for循环的语法格式是for (表达式1;表达式2;表达式3) {循环体},其中在整个循环过程中只执行一次的部分是 表达式1 。
  4. 在循环结构中,如果想跳出循环体,结束整个循环结构可以使用 break 语句。
  5. __continue_语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。即只结束本次循环,而不是终止整个循环的执行。
  6. 使用Math.random( )返回带正号的 double值,该值大于等于0.0且小于1.0。使用该函数生成[30,60]之间的随机整数的语句是 (int)(Math.random()*31)+30 。 :::info

    判断:

    :::

  7. if语句的条件表达式的结果都必须是boolean值。( T )

  8. switch选择语句是多分支选择语句,只能处理等值条件判断的情况,表达式可以是int类型、char类型,但不能是double,float类型。( T )
  9. while循环结构的特点是先循环再判断,循环体至少执行一次。( F )
  10. for循环的语法格式是for (表达式1;表达式2;表达式3) {循环体},其中三个表达式都可以省略。( T )
  11. break语句可以出现在switch语句和循环语句中。( T )
  12. continue语句可以出现在switch语句和循环语句中。( F )

数组

:::info

填空:

:::

  1. 1. 数组会在内存中开辟一块__连续__的空间,每个空间相当于之前的一个变量,称为数组的元素。数组的长度一经确定,就无法再改变。
  2. 要获取一个数组的长度,可以通过__length__属性来获取,但获取的只是为数组分配的空间的数量,而不是数组中实际已经存放的元素的个数。
  3. __声明数组__仅仅是给出了数组名字和元素的数据类型,要想真正的使用数组还必须使用new关键字为它分配内存空间。
  4. 创建数组后,系统会给每一个数组元素一个默认的值,如String类型元素的默认值是_null_
  5. 在Java中有二维数组int [ ] [ ] array={{1,2,3},{4,5}} ,可以使用_array[0].length_得到二维数组中第二维中第一个数组的长度。 :::info

    判断:

    :::

  6. 数组可以声明为任何数据类型,包括任何基本数据类型和引用数据类型。(T )

  7. 数组的长度是确定的,数组一旦被创建,它的大小就是不可以改变的。但是其元素类型可以是不同类型,允许出现混合类型。( F )
  8. 声明数组并分配空间后,数组的每个元素将会赋予初始值。( T )
  9. 创建数组后,系统会给每个数组元素一个默认值,如double型元素的默认值是0.0。( T )
  10. 数组的主要优点是按照索引查找某个元素效率高,同时按照元素值查询某个元素效率也很高,但是添加和删除元素需要大量移动元素,效率低下。( F )
  11. 数组的某个元素被传递给一个方法并被该方法修改,当被调用方法执行完毕时,这个元素中含有修改过的数值。( T )
  12. Java允许创建不规则数组,即Java多维数组中各行的列数可以不同。( T )
  13. 对于数组int[][] t={{1,2,3},{4,5,6}}来说,t.length等于3,t[0].length等于2( F )

类和对象

:::info

填空:

:::

  1. 类是组成Java程序的基本要素,类体有两部分构成:一部分是变量的定义,另一部分是** 方法 **的定义。
  2. 执行Person p = new Person();语句后,将在_堆内存__中给Person对象分配空间,并在栈内存中给引用变量p分配空间,存放Person对象的引用。
  3. **构造方法 是一种特殊方法,它的名字必须与它所在的类的名字完全相同,并且不书写返回值类型,在创建对象实例时由new运算符自动调用。**
  4. 局部变量的名字与成员变量的名字相同,若想在该方法内使用成员变量,必须使用关键字** this **。
  5. 使用关键字** this **来调用同类的其它构造方法,优点同样是以最大限度地代码的利用程度,减少程序的维护工作量。
  6. 用关键字** static **修饰的成员变量是类变量,类变量是指不管类创建了多少对象,系统仅在第一次调用类的时候为类变量分配内存,所有对象共享该类的类变量。
  7. 使用static修饰的变量称为静态变量,静态变量可以有两种访问方式,分别是类名.静态变量名和_对象名 . 静态变量名__
  8. 在一个类文件中的关键字package,import,class出现的可能顺序是package import class_
  9. **package 关键字作为Java源文件的第一条非注释性语句,指明该源文件定义的类所有的包。**
  10. ** java.lang 包是Java语言的核心类库,它包含了运行Java程序必不可少的系统类,使用该包下的类和接口不需要使用import导入。** :::info

    判断:

    :::

  11. 类可以看成一类对象的模板,对象可以看成该类的一个具体实例。( F )

  12. 如果没有为类中的某些成员赋初始值,Java会为类成员赋予固定的初始值,如数值变量的值为0,布尔变量的值为true,未初始化的引用为null。( F )
  13. Java中所有的变量,不管是成员变量还是局部变量,在使用前都必须进行初始化。( F )
  14. 在Java中对象可以赋值,只要使用赋值运算符即可,相当于生成了一个各属性与赋值对象相同的新对象。( T )
  15. System.out.println(“Hello java!”)中out是System类的一个静态成员变量。( F )
  16. 构造方法用于创建对象,一般不允许有任何返回值,因此需要在构造方法返回类型处标注为void.( F)
  17. Java语言为所有的Java程序自动导入包“java.lang”,因此Java程序可以直接用“java.lang”中的类和接口。( T )

封装和继承

:::info

判断:

:::

  1. 使用public修饰的成员属性和方法可以被当前项目中所有包的所有类访问。( T )
  2. 类的方法通常设为public,而类的实例变量一般也设为public。( F )
  3. 与未加访问控制符的缺省情况相比,public和protected修饰符扩大了类及其属性和方法的被访问范围,private修饰符则缩小了这种范围。( T )
  4. 访问权限是private的变量,只能在本类和与本类同一个包中的其他类使用。( F )
  5. 如果定义一个类时没有使用extends,则它的父类是java.lang.Object。( T )
  6. 对子类实例化对象需要调用超类的构造函数进行初始化工作,完成对子类中的超类实例变量的初始化,则子类可以继承超类的构造函数。( F )
  7. 在Java中任何一个子类的构造方法都必须调用其父类的构造方法(包括隐式调用),并且调用父类的构造方法的语句必须是子类构造方法的第一条语句。( F )
  8. Java中的类不允许多重继承,一个类只能有有一个直接父类。( T )
  9. Object类有一个public方法是toString( ),一个对象通过调用该方法可以获得该对象的字符串表示。( T )
  10. 运算符“==”用于比较引用时,如果两个引用指向内存同一个对象,则返回true。( T )

多态

:::info

判断:

:::

  1. 将子类对象赋给父类引用变量,称为向下转型,将无法访问子类特有的方法。( F )
  2. 继承是多态的基础,没有继承就没有多态。( T )

抽象类和接口

:::info

判断:

:::

  1. 声明为final的类不能是超类。( T )
  2. 使用final修饰的变量将变成常量,其中不能再被改变;使用final修饰的方法将无法被子类重载;使用final修饰的类将无法再被其他类继承。( T )
  3. 抽象方法不能含有方法体,并且必须定义在抽象类中。( F )
  4. 抽象类是指在class前加使用abstract关键字修饰,且可以存在抽象方法和普通方法的类。( T )
  5. 接口中只有常量,没有变量;只有抽象方法,并且全部都是public方法。(T )
  6. 抽象类和接口都不能实例化,都没有构造方法。( F )
  7. 接口并不要求实现类和接口在概念本质上一致的,仅仅是实现了接口定义的约定或者能力而已。接口定义了“做什么”,而实现类负责完成“怎么做”,体现了功能(规范)和实现分离的原则。( T )
  8. 对于物理连接,比如数据库连接、输入流输出流、Socket连接等,垃圾回收机制无能为力,必须手动关闭才可以。( T )
  9. 垃圾回收机制回收任何对象之前,总会先调用它gc( )方法,该方法是Object类提供的方法。不要主动调用某个对象的该方法,应该交给垃圾回收机制调用。( F )

常用工具类

:::info

填空:

:::

  1. 在Java中每个Java基本类型在java.lang包中都在一个相应的包装类,把基本类型数据转换为对象,其中包装类Integer是 Number 的直接子类。
  2. 包装类Integer的静态方法可以将字符串类型的数字”123”转换成基本整型变量n,其实现语句是: Integer.parseInt(“123”);
  3. 在Java中使用java.lang包中的 StringBuffer/StringBuilder 类来创建一个字符串对象,它代表一个字符序列可变的字符串,可以通过相应的方法改变这个字符串对象的字符序列。
  4. StringBuilder类是StringBuffer类的替代类,两者的共同点是都是可变长度字符串,其中线程安全的类是 StringBuffer
  5. DateFormat类可以实现字符串和日期类型之间的格式转换,其中将日期类型转换为指定的字符串格式的方法名是 format
  6. 使用Math.random( )返回带正号的 double值,该值大于等于0.0且小于1.0。使用该函数生成[30,60]之间的随机整数的语句是 (int)(Math.random()*31)+30
  7. JDK1.5后提供了 enum 关键字,用以定义枚举类。枚举类是一种特殊的类,可以有自己的属性、方法和构造方法。
  8. File对象调用方法 createNewFile 创建一个目录,不包括所有必需但不存在的父目录,当且仅当已创建目录时,返回true;否则返回false。 :::info

    判断:

    :::

  9. 方法Integer.parseInt()的作用是将一个整数转变成String。( F )

  10. JK1.5后提供了自动装箱和自动拆箱功能,从而可以实现基本数据类型和对应包装类之间的自动转换,简化了操作。(T )
  11. 执行语句String str=”abcedf”; int len=str.length; 后,能够得到字符串的长度是6。( F )
  12. 运算符“==”用于比较引用时,如果两个引用指向内存同一个对象,则返回true。( T )
  13. java.sql.Date类和java.util.Date类的关系是前者是后者的父类,其中前者没有提供无参数构造方法,而后者可以提供无参数构造方法来获取当前时间。( F )
  14. 求x的y次方,其表达式为:Math.pow(x,y)。( T )
  15. 一个File对象可以代表一个文件或目录,它可以获取文件和目录属性,也可以访问文件内容。( F )
  16. 在使用File类中的delete( )方法时,删除时可能文件不存在,所以我们最好先判断一下是否存在,不然会出现NullPointerException异常。( F )
  17. 程序调用自身的编程技巧称为递归。递归的特点是编程简单并且节省内存。( F )
  18. 任何可用递归解决的问题也能使用循环解决,递归既花时间又耗内存,在要求高性能的情况下尽量避免使用递归。( T )

IO流

:::info

填空:

:::

  1. Java IO流可以分为 节点流 和处理流两大类,其中前者处于IO操作的第一线,所有操作必须通过他们进行。x
  2. 输入流的唯一目的是提供通往数据的通道,程序可以通过这个通道读取数据,read

方法给程序提供了一个从输入流中读取数据的基本方法。

  1. read方法从输入流中顺序读取源中的单个字节数据,该方法返回字节值(0-255之间的一个整数),如果到达源的末尾,该方法返回 -1 。
  2. Java系统的标准输入对象是System.in,标准输出对象有两个,分别是标准输出System.out和标准错误输出 System.err 。x
  3. Java IO体系中, ObjectInputStream 是字节输入流,不仅提供了存取所有Java基础类型数据(如:int,double 等)和String的方法,也提供了提供存取对象的方法。x
  4. Java IO体系中,DataOutputStream是字节输出流,提供了可以存取所有Java基础类型数据(如:int,double 等)和String的方法,但没有提供存取对象的方法。x
  5. 序列化 是指将Java对象转换成字节序列,从而可以保存到磁盘上,也可以在网络上传输,使得不同的计算机可以共享对象。x :::info

    判断:

    :::

  6. 假设文件”a.txt”的长度为100字节,那么当正常运行语句”OutputStream f=new FileOutputStream(new File(“a.txt”));”之后,文件”a.txt”的长度变为0字节。( T )

  7. ByteArrayInutStream和ByteArrayOutputStream对内存中的字节数组进行读写操作,属于字节流,属于处理流而不是节点流。 ( T )
  8. 实现Serializable接口的可以被序列化和反序列化。该接口中没有定义抽象方法,也没有定义常量。( F )
  9. 序列化是指将字节序列转换成Java对象,只有实现了Serializable接口的类的对象才可以被序列化。( )