当前位置:文档之家› 黑马面试题汇总(理论部分)

黑马面试题汇总(理论部分)

黑马面试题汇总(理论部分)
黑马面试题汇总(理论部分)

理论题

1.Java语言基础

1. 数组是引用数据类型还是基本数据类型?

答:数组是引用数据类型.

2. java的数据类型有哪些?

答:(1)基本数据类型.

整数型:byte short int long

浮点型:float double

字符型:char

布尔类型:boolean

(2)引用数据类型

类接口数组

3.冒泡排序和选择排序的区别?

答:(1)冒泡排序

依次比较相邻的两个数,将小数(或者大数)放在前面,大数(或者小数)放在后面,如此下去,重复以上过程,直至最终完成排序.

(2)选择排序

每一趟从待排序的数组元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列最后,直到全部待排序的数据元素排完.

4. i++和++i的区别?

答:简单的来说,++i和i++,在单独使用的时候,就是i=i+1;

而a=++i,相当于i=i+1;a=i;

而a= i++,相当于a=i;i = i+1;

5.short s1 = 1; s1 = s1 + 1;有什么错? short s1 =1; short s1 +=1;有什么错?

答:对于前者,由于s1 + 1 运算时会自动提升表达式的类型,所以结果是int型,再赋值给short类型s1时,编译器会报告需要强制类型转换的错误.

对于short s1 = 1; s1 +=1; 由于+=是java语言规定的运算符,java编译器会对它进行特殊处理,因此可以正确编译.

6.&& 和& 的区别?

答:

7."==" 和equals 方法究竟有什么区别?

答:"=="操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能用"=="操作符.

如果一个变量指向的数据是对象类型的,那么这时候就涉及到了两块内存,对象本身占用了一块内存(堆内存),变量也占用了一块内存.此时变量所对用的内存中存储的数值就是对象占用的那块内存的首地址.对于指向对象类型的变量,如果要比较两个变量是否指向同一个

对象.即要看这两个变量所对应的内存中的数值是否相等,这时候需要用==操作符进行比较.

A:==

a:基本类型比较的是基本类型的值

b:引用类型比较的是引用类型的地址值

B:equals()

只能比较引用类型。

默认比较地址值。

8. 什么是注释?注释分为几种?注释有什么作用?

答:注释就是对代码的解释说明性文字,分为三种:单行注释、多行注释、文档注释。注释可以对程序进行说明,给人看,还可以对程序进行排错。

9.什么是关键字?有什么特点?

答:关键字就是被java语言赋予了特殊含义的单词。特点就是所有的关键字都是小写。

10.什么是标识符?由哪些部分组成?常见的命名规则有哪些?

答:标识符就是给类、接口、方法、变量名起的名字。常见的规则有:有数字、字母、_以及$符号组成,不能以数字开头,不能是java中的关键字。

11.什么是常量?常量的分类?字面值常量表现形式有哪些?

答:在程序的运行过程中其值不发生改变的量。

字面值常量:1 14

自定义常量:int MAX = 100;

12.什么是变量?变量的定义格式?要使用变量需要注意什么?

答:在程序运行过程中,其值是可以在某个范围内发生改变的量。

变量其实就是内存中一小块区域。

由3部分组成:

1,数据类型: 限定变量的取值

2,变量名:方便使用。

3,值:如果没有值就没有意义。

13.算术运算有哪些,各自的作用?

答:+,-,*,/,%,++,--。

+:正号,加法,字符串连接符

%:取得余数

++,--:单独使用:在操作数据的前后效果一致。

参与操作使用:

在操作数据的前面,是先++或者--,然后参与操作。

在操作数据的后面,是先参与操作,后++或者--。

14.+运算符需要注意的问题?

答:当把+号作为加法和字符串连接符一起使用的时候,注意把运算的地方()起来。

15.赋值运算符常见的有哪些,各自的作用?

答:=:把右边的内容赋值给左边

+=,-=,*=,/=,%=:把左边的和右边的操作后赋值给左边。

注意:

+=隐含了强制类型转换。

x+=y;等价与:x = (x的数据类型)(x + y);

16.逻辑运算符有哪些都有什么作用?

答:&:有false则false

|:有true则true

^:相同为false,不同为true。通过情侣关系来理解。

!:非false则true,非true则false。偶数次不改变以前的真假。

&&:和&的结果一样,但是具有短路效果。左边有false,右边不执行。||:和|的结果一样,但是具有短路效果。左边有true,右边不执行。

17.位移运算符有什么不同?

答:要想操作,就必须把所有的数据转换为二进制。然后操作。

<<:把数据向左移动,后边补0。其实相当与乘以2的移动位数次幂。

>>:把数据向右移动,左边补是最高位的值。其实相当与除以2的移动位数次幂。

>>>:把数据向右移动,左边补0。其实相当于除以2的移动位数次幂。

18.编程计算3乘8等于几,什么方法效率更高?

答:位运算的方法效率更高。编程运算其实质是二进制的运算,运用位运算的方法移动后补位即可得结果,比一般的3*8更高效。

19.不借用第三方变量,互换两个变量。

答:n=11,m=3

n=n^m;

m=n^m; //(n^m)^m一个数异或另一个数两次,还是得原来那个数

n=n^m //n^(n^m)

20.为什么需要配置path,什么时候需要classpath?

答:path路径:是操作系统的环境变量,目的是希望在任意目录下都能执行该命令操作起来更加方便快捷;

classpath是给类提供路径:想在其他目录下执行java程序时需要配置classpath路径

2.面向对象

1.自定义异常需要继承哪个类?

答:定义一个子类继承Exception或RuntimeException,让该类具备可抛性。

2.如何理解匿名内部类?

答:匿名内部类也就是没有名字的内部类.

正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写,使用匿名内部类还有个前提条件,必须继承一个父类或者实现一个接口。

格式:

new 类名或者接口名() {

重写方法;

};

本质:是继承类或者实现接口的子类匿名对象。

3.栈内存和堆内存的特点

答:

4.静态变量和实例变量的区别?

答:(1)在语法定义的区别上:静态变量需要加static关键字,而实例

变量前则不加.

(2)在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例才会被分配空间,才能使用这个实例变量. 静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了.总之,实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用.

5.请说出final,finally,finalize的区别

答:fianl用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承.内部类要访问局部变量,局部变量必须定义成final 类型.

finally是异常处理语句结构的一部分,表示总是执行.

6.权限修饰符有哪些?

答: public private protect 默认的。

7.在什么情况下,finally语句不会执行

答:如果在try内部执行一条System.exit(0)语句终止应用程序的执行,则finally中的语句不会被执行.

8.fianl关键字的特点?

答:final特点:

1:这个关键字是一个修饰符,可以修饰类,方法,变量。

2:被final修饰的类是一个最终类,不可以被继承。

3:被final修饰的方法是一个最终方法,不可以被覆盖。

4:被final修饰的变量是一个常量,只能赋值一次。

9.什么是函数重载?

答:函数名相同,参数列表不同,跟返回值不关,就是函数重载。

10.类是什么?类的组成是哪些?

答:类是抽取了同类对象的共同属性和行为形成的对象或实体的"模版"。

类是由成员变量,成员方法,构造函数组成。

11. 对象是什么?什么时候需要使用对象?

答:对象是现实世界中实体的描述,是其自身所具有的状态特征及可以对这些状态施加的操作结合在一起所构成的独立实体.

需要描绘具体事物的时候要使用对象.

12.封装是什么?自己概述

答:隐藏对象的属性和具体的实现细节,仅对外提供公共的访问方式.

类、方法其实也是封装的体现。

13.继承是什么?自己概述

答:概念:把多个类中相同的内容抽取出来,单独定义到一个类(父类)中,再定义其他类(子类)的时候,继承父类即可.

好处:1.提高了代码的复用性,降低了代码的重复率.2.让类与类之间产生了关系,是多态的前提.

继承的特点是:Java中类只能够单继承,但是可以多层继承。

14.匿名对象是什么?应用场景是什么?

答:匿名对象就是没有名字的对象,由于没有指向,所以效率较高一些。

应用场景:A:调用方法。但是仅仅只限调用一次而已。B:匿名对象用作实际参数传递。

15.构造方法的作用是什么?构造方法的特点是什么?构造方法的注意事项是什么?

答:构造方法的作用是初始化数据。特点是:名称和类名一致,并且没有返回值类型的修饰和返回值。

注意:如果我们没有给构造方法,系统将给出一个无参构造方法。如果我们给出了构造方法,系统将不再提供构造方法。

16. 给成员变量赋值有几种方式?

答:1,通过set/get方法。

2,通过带参构造。

17.方法重写和方法重载的区别?重载可以改变返回值类型吗? 注意事项是什么?

答:方法重写:

子类中出现和父类中一模一样的方法声明的方法。

方法重载:

同一个类中,出现方法名相同,参数列表不同的方法。

跟返回值无关。

重载可以改变返回值类型,因为他跟返回值无关。

重写注意事项:

(1)父类中的私有方法不可以被重写

(2)子类方法访问权限一定要大于父类的访问权限

(3)静态的方法只能被静态的方法重写,这个其实不能算对象的关系。

18.static关键字是什么?有什么特点?什么时候用呢?

答:static关键字:是静态的意思,可以修饰类中成员变量和成员方法。

静态的特点:随着类的加载而加载、优先与对象而存在、被所有对象所共享、可以通过类名.静态的内容调用。

19.this和super的区别,以及应用场景?

答:this:当前类的引用对象。谁调用代表谁。

super:父类的存储空间标识。可以理解为父类对象,谁调用代表谁父亲。

应用场景:

A:成员变量

this.成员变量本类的成员变量

super.成员变量父类的成员变量

B:构造方法

this(...) 本类的构造方法

super(...) 父类的构造方法

C:成员方法

this.成员方法() 本类的成员方法

super.成员方法() 父类的成员方法

20.代码块是什么?代码块的分类有哪些及每种代码块的作用是什么?

答:用{}括起来的代码,就叫代码快。

分为:

A:局部代码快:就是在方法中用{}括起来的代码。作用是限定变量的生命周期,提高效率。

B:构造代码快:在类中,方法外。用{}括起来的代码。作用是把所有构造方法中相同的内容抽取出来,

定义到构造代码块中,将来在调用构造方法的时候,会去自动调用构造代码块。构造代码快优先于构造方法。

C:静态代码快:在类中、方法外。用{}括起来的代码。只不过加了staric修饰。

作用是:在整个系统中,只加载一次的代码。一般做整个系统的初始化。

21.一个类的实例化过程有哪些步骤?(*面试题)

Student s = new Student(); 在内存中到底执行了哪些步骤。答:1,加载Sutdent.class文件进内存(类加载器)

2,在栈内存为s 变量申请一个空间

3,在堆内存为Student对象申请空间

4,对类中的成员变量进行默认初始化

5,对类中的成员变量进行显示初始化

6,有构造代码块就先执行构造代码块,如果没有,则省略

7,执行构造方法,通过构造方法对对对象数据进行初始化

8,堆内存中的数据初始化完毕,把内存值复制给s 变量

22.子父类中构造方法的执行有什么特点?为什么要这样?

答:子类构造方法的执行,首先会去执行父类的构造方法。

因为子类中可能直接访问了父类的数据,父类的数据要优先于子类的数据进行初始化。

23.静态代码块,构造代码块,构造方法的执行顺序是什么?

答:静态代码块-- 构造代码块-- 构造方法。

24.多态是什么,前提是什么?

答:多态:对象在不同时刻表现出来的多种状态。是一种编译时期状态和运行时期状态不一致的现象。

成员变量:编译看左边,运行看左边。

成员方法:编译看左边,运行看右边。因为,普通成员方法可以重写,变量不可以。

静态方法:编译看左边,运行看左边。

前提:类与类之间要有继承关系。要有方法的重写。父类引用指向子类对象。

25.多态的好处及弊端?如何解决多态的弊端。

答:好处:提高了程序的可维护性(前提要有继承保证),和扩展性。弊端:不能使用子类的特有功能。

26.什么是抽象类?抽象类的特点和好处是什么?

答:相同的方法,有相同方法的声明,但是方法体不一样,只抽取方法声明的方法,叫做抽象方法,有抽象方法的类,叫做抽象类。

特点:

A:类或者方法必须用abstract修饰。

B:具体类在继承抽象类的时候,要么本身也是抽象类,要么实现抽象类中的所有抽象方法。

C:抽象类不能被实例化。要想使用,必须按照多态的方式使用。

D:成员特点:

a:成员变量

可以是变量,也可以是常量。

b:构造方法

有构造方法,但是不能实例化。

用于子类访问父类数据的初始化。

c:成员方法

可以有抽象方法也可以有非抽象方法。

好处:

A:限定子类必须实现某些功能。

B:提高代码的复用性。

抽象类的几个问题:

A:抽象类不能实例化,构造方法有什么用。

用于子类访问父类数据的初始化。

B:抽象类没有抽象方法,有什么意义?

限制创建对象。

C:abstract不能和哪些关键字共存?

final: 冲突

private: 冲突

static: 无意义

27.什么是接口? 接口的特点?

答:如果一个抽象类中的方法全部是抽象方法,那么java就针对这种类型的抽象类,给出了一个更抽象的表达式:接口。

特点:

A:所有的方法,都是抽象方法。

B:类实现接口

要么本身是抽象类,要么重写接口中的抽象方法。

C:接口不能被实例化,要想使用,用多态。

D:成员特点

a:成员变量

只有常量,并且是静态常量。默认修饰符:publci static final

b:构造方法

没有构造方法,子类数据的初始化默认走的是Ojbect类的构造方法

c:成员方法

全部是抽象的,有默认修饰符:public abstract

28.抽象类和接口的区别?

答:A:成员区别

抽象类:

成员变量:可以是变量,也可以是常量。

构造方法:有。

成员方法:有,可以是抽象的,也可以是非抽象的。

接口:

成员变量:只能是常量。默认修饰符:publci static final

构造方法:没有,子类数据的初始化默认走的是Ojbect类的构造方法。

成员方法:只能是抽象的,默认修饰符是:public abstract

B:类与接口的关系区别

类与类:

继承关系,单继承。

类与接口:

实现关系,单实现、多实现。

接口与接口:

继承关系,单继承、多继承。

C:设计理念的区别

抽象类被继承体现的是:is a的关系。抽象类中一般定义的是整个继承结构的共性功能。

接口被实现体现的是:like a的关系。接口中一般定义的是整个继承结构的扩展功能。

29.什么是内部类?有什么特点?

答:把类定义在其他类的内部,就被称为内部类。

内部类的访问特点:

A:内部类可以直接访问外部类的成员,包括私有。

B:外部类要访问内部类的成员,必须创建对象。

30.为什么内部类访问局部变量必须加final修饰?

答:A: 防止在使用后数据发生改变。

B: 延长变量的生命周期。

31.什么是异常?异常有哪几种?各有什么特点?

答:程序出现了不正常的情况,就是异常。

异常的继承体系结构:

Throwable

|--Error 严重的问题,一般我们解决不了。

|--Exception

|--RuntimeException 运行时期异常,这种问题一般要修正代码。

|--非RuntimeException 编译时期异常,必须进行处理,否则代码不能够通过。

32.throws和throw的区别?

答:throws

位置:在方法()后面,跟的是类名。

如果后面根据的是RuntimeException及其子类,那么,该方法可以不用处理。

如果后面根据的是Exception及其子类,那么,必须要编写代码进行处理,或者调用的时候抛出。

throw

位置:在方法中,跟的对象名称。

如果方法中,有throw抛出RuntimeException及其子类,那么,声明上可以没有throws。

如果方法中,有throw抛出Exception及其子类,那么,声明上必须有throws。

33.面向对象的理解

答:面向对象是基于面向过程的。在开发过程中,要完成特定的功能就去找相应的对象,如果找不到就创建相应的对象,使用对象,维护完善对象。

黑马程序员训练营入学考试题

黑马程序员训练营入学考试题 1、写一个ArrayList类的代理,实现和ArrayList中完全相同的功能,并可以计算每个方法运行的时间。 2、ArrayList list = new ArrayList(); 在这个泛型为Integer的ArrayList 中存放一个String类型的对象。 3、定义一个交通灯枚举,包含红灯、绿灯、黄灯,需要有获得下一个灯的方法,例如:红灯获取下一个灯是绿灯,绿灯获取下一个灯是黄灯。 4、一个ArrayList对象aList中存有若干个字符串元素,现欲遍历该ArrayList对象,删除其中所有值为"abc"的字符串元素,请用代码实现。

5、编写一个类,增加一个实例方法用于打印一条字符串。并使用反射手段创建该类的对象,并调用该对象中的方法。 6、有一个类为ClassA,有一个类为ClassB,在ClassB中有一个方法b,此方法抛出异常,在ClassA类中有一个方法a,请在这个方法中调用b,然后抛出异常。在客户端有一个类为TestC,有一个方法为c ,请在这个方法中捕捉异常的信息。完成这个例子,请说出java中针对异常的处理机制。 7、存在一个JavaBean,它包含以下几种可能的属性: 1:boolean/Boolean 2:int/Integer 3:String 4:double/Double 属性名未知,现在要给这些属性设置默认值,以下是要求的默认值: String类型的默认值为字符串https://www.doczj.com/doc/229778111.html,

int/Integer类型的默认值为100 boolean/Boolean类型的默认值为true double/Double的默认值为0.01D. 只需要设置带有getXxx/isXxx/setXxx方法的属性,非JavaBean属性不设置,请用代码实现 8、定义一个文件输入流,调用read(byte[] b)方法将exercise.txt文件中的所有内容打印出来(byte数组的大小限制为5,不考虑中文编码问题)。 9、编写一个程序,它先将键盘上输入的一个字符串转换成十进制整数,然后打印出这个十进制整数对应的二进制形式。这个程序要考虑输入的字符串不能转换成一个十进制整数的情况,并对转换失败的原因要区分出是数字太大,还是其中包含有非数字字符的情况。提示:十进制数转二进制数的方式是用这个数除以2,余数就是二进制数的最低位,接着再用得到的商作为被除数去除以2,这次得到的余数就是次低位,如此循环,直到被除数为0为止。其实,只要明白了打印出一个十进制数的每一位的方式(不断除以10,得到的余数就分别是个位,十位,百位),就很容易理解十进制数转二进制数的这种方式。

JAVA测试题(三套含答案)

<测试一> 1.在单一文件中import、class和package的正确出现顺序是:A A.package, import, class B.class, import, package C.import, package, class D.package, class, import 2.public static void main方法的参数描述是:A,D A.String args[] B.Strings args[] C.String args D.String []args 3.下面哪行代码会在编译的时候出现错误或警告:A,B,C,D A.float f=1.3; B.char c="a"; C.byte b=257; D.boolean b=null; E.int i=10; 4.编译,运行下列代码后的结果是:D public class Test { public static void main (String args []) { int age; age = age + 1; System.out.println("The age is " + age); } } A.编译,运行后没有输出 B.编译,运行后输出:The age is 1 C.能通过编译,但运行时产生错误 D.不能通过编译 4.下面那些关键字不是JAVA的关键字B A if B then C goto D while E case 5.下面那些不是合法的变量定义:A,F A.2variable B.variable2 C. _whatavariable

D. _3_ E. $anothervar F. #myvar 6.内部数据类型byte的取值范围是B A.0 - 65, 535 B.(–128) – 127 C.(–32,768) – 32,767 D.(–256) – 255 7.下列哪些表达式返回true AB A."john" == "john" B."john".equals("john") C."john" = "john" D."john".equals(new Button("john")) 8.声明公用的abstract方法的正确格式是A A.public abstract void add(); B.public abstract void add() {} C.public abstract add(); D.public virtual add(); 9.下面的代码能打印出的结果为:C int i=1; switch (i) { case 0: System.out.println("zero"); break; case 1: System.out.println("one"); case 2: System.out.println("two"); default: System.out.println("default"); } A.one B.one, default C.one, two, default D.default 10.下面的代码能打印出的结果为:B int i=9; switch (i) { default: System.out.println("default");

黑马Java_IO知识测试附答案

IO 部分测试题 考试宣言: 同学们, 考试考多少分不是我们的目的! 排在班级多少的名次也不是我们的初衷! 我们考试的目的是要通过考试中的题目,检查大家在这段时间的学习中,是否已经把需要掌握的知识掌握住了,如果哪道题目你不会做,又或者做错了, 那么不用怕, 考完试后, 导师讲解的时候你要注意听! 那时候学会了, 记住了, 也一样不影响你高薪就业! 本套题共40道不定项选择题,其中单选30道,多选10道。单选2分/题,多选4分/题。多选题不全对半分,全对满分。 1.下列叙述中,正确的是 ( ) A. Reader是一个读取文本文件的接口 B. Reader是读取二进制数据文件的抽象类 C. Reader是一个读取文本文件的抽象类 D. Reader是读取二进制数据文件的一般类 2.下面关于IO流的说法正确的是( ) A. IO流可以分为字节流和字符流 B. FileReader和FileWriter是专门用于读取和写入文本文件的 C. 顶层类有InputStream和OutputStream D. 顶层类有Reader和Writer,他们都是接口//抽象类 3.FileReader类描述正确的是( ) A. 字节输入流 B. 字符输入流//没什么说的,记住吧 C. 打印流 D. 序列化流 4.下列关键字能和try一起使用的有( )

A. final B. finalize C. finally D. catch 5.具有readLine()方法的类是( ) A. FileWriter B. InputStreamReader C. FileReader D. BufferedReader // readLine()方法是缓冲流BufferedReader的特有方法 6.关于newLine()方法描述错误的是( ) A. newLine()方法写入换行 B. newLine()方法会根据不同操作系统自动选择使用相应的换行符 C. newLine()方法是FileWiter类的方法 D. newLine()方法是BufferedWriter类的方法// 这个也是特有方法. 7.实现下列哪个接口,可以启用序列化功能( ) A. Runnable接口 B. Comparable接口 C. Serializable接口// 这个记住吧 D. Comparator接口 8.以下关于java异常说法不正确的是()。 A. Throwable 类是 Java 语言中Error类和Exception类的父类。 B. 当异常对象是Exception类(或其子类)的实例时,能通过 Java 虚拟机或者 throw 语句抛出该异常对象,并能通过try…catch…finally处理。 C. jdk6(包括jdk6)之前,如果只用一个catch块捕捉多个异常对象,则catch 子句中 的参数类型应是所有存在的异常对象的父类。 D. 以上说法都不对。 9.字节输出流的抽象基类是( ) A. OutputStream类 //记住吧,没什么说的. B. InputStream类 C. Writer类 D. Reader类 10.下面程序的运行结果是( )

传智播客-Java基础知识测试-初测(带答案)

传智播客-Java基础知识测试-初测(带答案)

答题格式: 1 - 30题为单选题, 31 - 40为多选题. 新建一个txt文件, 答案写在这个文件中. 答案必须保存为txt格式的文件。 答题的时候,可以在EditPlus上答题,会自动显示题目序号 文件名改为自己的名字, 每题一行. 多选题按abcd的顺序填答案, 比如某一题的答案acd, 就必须是acd, 不能是adc等等. 不能有空行, 不能有空格,不能有题目序号,一定不要某一题不会就空在那, 会导致后面的答案全都识别错了! 填完答案数一下, 不要填挪了!!! 共40道选择题,每题2.5分。多选题有错则全错,全对才满分.

单选题: 1. 下列哪个声明是错误的?() A. int i=10; B. byte b=127; C. float f=1.1; //1.1f D. double d=34.4; 2. 下面哪个不是java中的关键字?() A. public B. true C. class D. main 3. 下面哪个语句不会产生编译错误?() A. float a =2.0; //2.0f B. byte b =25; C. char c =”a”; D. boolean d=0; 4. 下面程序哪个语句是正确的()

A. byte a=0,b=3; byte c =a+b; B. short s =23; s=s+12; C. float f = 23+23.23; D. short s=23; s+=12; 5. byte类型的大小是() A. -228 ~128 B. -255 ~ 256 C. -128 ~ 127 D. -255 ~ 255 6. 下面程序执行的结果是?() int i = 100; while(true) { If ( i++ > 100 ) break; System.out.println(i); } A. 100 B. 101

黑马程序员java培训就业班笔记day05总结

黑马程序员java培训就业班笔记day05总结

Day05 上午: 1、数组的静态初始化 多种定义格式: Int[] arr=new int[]//标准格式,能够明确数组的数据类型,和数组名,可是不知道数组的长度Int arr[]=new int[] Int[] arr=new int[]{2,1,3,4,5,}//经过大括号能够标示出数组中的内容,此处最好别写长度,因为容易出错,因为即初始化实体,又初始化实体中的元素。 Int[] arr={2,1,3,4,5};//能够明确数组的数据类型,和数组名,也能够知道数组中的内容。 2、arr.length:方便获取数组中的元素个数的方式。 3、操作数组的最基础的思想以及核心思想: a)最基础的思想:就是遍历。什么是遍历。 Eg:int[] arr = new int[3]; int[] arr = {4,8,9,2,6,9};//明确了数组的类型和长度,并明确了数组中元素的内容。 // int[] arr1 = new int[]{4,8,9}; //方便获取数组中的元素个数的方式,

能够使用数组实体一个属性。length System.out.println("len:"+arr.length); for(int x=0; x

黑马Java基础入学测试题_

考试题目: 本试卷是JAVA基础班入学考试试卷,主要考察JAVA基础前五天大家在入学之前掌握的一个整体情况,本试卷共有40道题,其中有30道是单选,有10道题是多选题,希望大家认真对待 1.Sun公司对Java语言的宣传口号为“一次编程,到处执行”,体现了Java的什么特性B A:编程的简单性 B:与平台无关性 C:Java的面向对象特性 D:Java程序的鲁棒性 2.Java平台有三个版本,分别是javaSE、JavaME、javaEE,下列说法不正确的是B A.javaSE是指Java语言的标准版 B.javaME是指Java语言的标准版 C.javaEE是指企业级的Java开发语言,是为企业提供服务的 D. javaME是为机顶盒、移动电话和PDA之类嵌入式消费电子设备提供的Java语言平台,包括虚拟机和一系列标准化的Java API. 3.想要运行Java程序,必须得先通过______Java源文件,然后再通过______java程序C A. javaw工具编译 javac工具运行 B. java工具编译 javac工具运行 C. javac工具编译 java工具运行 D. java工具编译 java工具编译 4.Java语言中的int及char数据类型的长度分别为C A:16位和8 位 B:8位和16位 C:32位和16位 D:32位和8位 5.请问byte数据的取值范围是?C A:0-128

B:负127-128 C:负128-127 D:以上都不对 6.java语言的源程序经编译后所生成的程序类型为D A:.exe 型的可执行程序 B:.obj 型二进制的程序 C:.lib 型二进制的库程序 D:.class 型类代码的程序 7.某java程序的类定义如下: B class MyClass { } 则java源文件编译后生成的类文件名称为: A:myclass.class B:MyClass.class C:MYCLASS.class D:MyClass.java 8.下列那种标识符在java程序中是错误的D A:MyClass_Base12 B:_MyClass$Base12 C:$MyClass_12 D:76MyClass$12 9.下列那种标识符不能作为java程序中的变量名B A:INT B:boolean C:character D:Java_Float 10.请问,以下哪些语句不是合法的赋值语句?D A:boolean b = true; B:int a = (int)1.23; C:double x = 1.1; D:char c = '10';

黑马Java IO知识测试附答案

精品文档 IO 部分测试题 考试宣言: 同学们, 考试考多少分不是我们的目的! 排在班级多少的名次也不是我们的初衷! 我们考试的目的是要通过考试中的题目,检查大家在这段时间的学习中,是否已经把需要掌握的知识掌握住了,如果哪道题目你不会做,又或者做错了, 那么不用怕, 考完试后, 导师讲解的时候你要注意听! 那时候学会了, 记住了, 也一样不影响你高薪就业! 本套题共40道不定项选择题,其中单选30道,多选10道。单选2分/题,多选4分/题。多选题不全对半分,全对满分。 ( )下列叙述中,正确的是1. A. Reader是一个读取文本文件的接口 B. Reader是读取二进制数据文件的抽象类 C. Reader是一个读取文本文件的抽象类 D. Reader是读取二进制数据文件的一般类 2.下面关于IO流的说法正确的是( ) A. IO流可以分为字节流和字符流 B. FileReader和FileWriter是专门用于读取和写入文本文件的 C. 顶层类有InputStream和OutputStream D. 顶层类有Reader和Writer,他们都是接口//抽象类 3.FileReader类描述正确的是( ) A. 字节输入流 B. 字符输入流//没什么说的,记住吧 C. 打印流 D. 序列化流 4.下列关键字能和try一起使用的有( )

A. final 精品文档. 精品文档 B. finalize C. finally D. catch 5.具有readLine()方法的类是( ) A. FileWriter B. InputStreamReader C. FileReader D. BufferedReader // readLine()方法是缓冲流BufferedReader的特有方法 6.关于newLine()方法描述错误的是( ) A. newLine()方法写入换行 B. newLine()方法会根据不同操作系统自动选择使用相应的换行符 C. newLine()方法是FileWiter类的方法 D. newLine()方法是BufferedWriter类的方法// 这个也是特有方法. 7.实现下列哪个接口,可以启用序列化功能( ) A. Runnable接口 B. Comparable接口 C. Serializable接口// 这个记住吧 D. Comparator接口 8.以下关于java异常说法不正确的是()。 A. Throwable 类是 Java 语言中Error类和Exception类的父类。 B. 当异常对象是Exception类(或其子类)的实例时,能通过 Java 虚拟机或者 throw 语句抛出该异常对象,并能通过try…catch…finally处理。 C. jdk6(包括jdk6)之前,如果只用一个catch块捕捉多个异常对象,则catch 子句中的参数类型应是所有存在的异常对象的父类。 D. 以上说法都不对。 9.字节输出流的抽象基类是( ) A. OutputStream类 //记住吧,没什么说的. B. InputStream类 C. Writer类 D. Reader类

黑马程序员基础测试题

黑马程序员基础测试题 1、已知一个int数组, 编程从数组中获取最大数. 2、编写一个方法(名字自定,但要符合Java编码规范),方法内打印一字符串,并在main()方法内调用它。 3、环境变量path和classpath的作用是什么? 系统环境 path 为了更方便应用java 开发工具将要执行命令的所在路径给系统、让系统去寻找方便执行、必须是可执行文件先找当前路径再找path 路径临时配置方式通过set 命令完成、设置查看环境变量的值在path环境变量的基础上添加新的目录在任意目录下执行java 执行程序专门给类文件设置路 径将class 文件所在目录告诉系统,让系统去寻找虚拟机先从classpath 寻找 4、 UDP协议与TCP协议有什么不同? 5、编写一个类Person,为Person类定义年龄、姓名两个属性,并且定义一个SayHello方法,方法执行时输出“我是***我的年龄是***”;定义一个Chinese 类从Person类继承。 6、创建一个包含有private的属性和private方法的类。然后创建一个内部类,它有一个方法可用来修改外部类的属性,并调用外部类的方法。在外部类的另一个方法中,创建此内部类的对象,并且调用它的方法。 7、用控制台程序输出九九乘法表;输出结果按下图所示: 1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 ......... 8、编写程序拷贝一个文件, 尽量使用效率高的方式. 9、编写HTML注册表单, 需要字段: 用户名, 密码, 确认密码, 性别(单选), 城市(下拉列表), 兴趣爱好(多选), 个人简介(文本域). 10、定义一个学生类, 需要有姓名, 年龄, 考试成绩三个成员属性,创建5个对象, 属性可为任意值. 编程对这5个对象按成绩排序,并将结果输出。(提示,用TreeSet和Comparator实现)

【黑马基础班考试题】1.Java基础知识测试_答案

考试宣言: 同学们, 考试考多少分不是我们的目的! 排在班级多少的名次也不是我们的初衷! 我的考试的目的是要通过考试中的题目,检查大家在这段时间的学习中,是否已经把需要掌握的知识掌握住了,如果哪道题目你不会做,又或者做错了, 那么不用怕, 考完试后, 导师讲解的时候你要注意听! 那时候学会了, 记住了, 也一样不影响你高薪就业! 本套题共40道不定项选择题,其中单选30道,多选10道。单选2分/题,多选4分/题。多选题不全对半分,全对满分。 1.下面说法正确的是() A. JVM就是Java虚拟机,包含java核心类库// JRE: JVM+Java library。 B. JRE就是java运行环境,包含java程序编译运行的工具环境// JDK:JRE+Tools C. JDK就是java开发环境,javac是其中的一个工具 D. 功能范围:JDK > JVM > JRE 2.下面的说法正确的是( ) A. Java 语言是面向对象的、解释执行的网络编程语言。 B. Java 语言具有可移植性,是与平台无关的编程语言。 C. Java 语言可对内存垃圾自动收集。 D. Java 语言编写的程序虽然是“一次编译,到处运行”,但必须要java的运行环境。 3.给定java代码,如下: public byte count(byte b1, byte b2){ return ____; } 要使这段代码能够编译成功,横线处可以填入 A. (byte)(b1-b2) //返回值类型为byte,要求选项结果为byte B. b1-b2 C. (byte)b1+b2

D. (byte)b1/b2 4.关于类的命名,正确说法是() A. 可以由数字和英文拉丁字母组成,且可以任意排序//数字不能开头 B. 命名要做到见名知意 C. 如果是由多个单词组成,每个单词首字母大写 D. 可以是Java已经定义过的关键字//囧 5.关于main方法说法错误的是() A.main方法是java程序执行的入口 B.main方法的方法体至少要有一行代码//可以没有代码 C.main必须定义在一个类中 D. main方法的定义格式为:public static void main(String[] args){} 6.类中某方法定义如下: double fun(int a,int b){ return a*1.0/b; } 同一类内其它方法调用该方法的正确方式是: A. double a = fun(1,2); B. double a = fun(1.0,2.0); C. int x = fun(1,2); D. int x = fun(1.0,2.0); 7.给定java代码,如下,编译运行,结果是() public static void main(String[] args){ boolean flag; System.out.println(“flag”+flag);//局部变量需要先初始化再使用 } A. 编译错误 B. 编译通过,单出现运行时错误 C. 正常运行,输出flag=false D. 正常运行,输出flag= 8.下面哪个关键字可以定义一个类() A. interface B. class //查看下面解释 C. extends D. implements 在Oracle官网java英文原版教程,链接地址: https://https://www.doczj.com/doc/229778111.html,/javase/tutorial/java/IandI/createinterface.html上有如下解释:In the Java programming language, an interface is a reference type,similar to a class, that can contain only constants,

【黑马程序员】Java笔试中常见的问题及经典答案

【黑马程序员】Java笔试中常见的问题及经典答案1、java中实现多态的机制是什么? 答:方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。 2、垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收 答:对于GC来说,当程序员创建对象时,GC就开始监控这个对象的地址、大小以及使用情况。通常,GC采用有向图的方式记录和管理堆(heap)中的所有对象。通过这种方式确定哪些对象是"可达的",哪些对象是"不可达的"。当GC确定一些对象为"不可达"时,GC就有责任回收这些内存空间。可以。程序员可以手动执行System.gc(),通知GC运行,但是Java语言规范并不保证GC一定会执行。 3、静态变量和实例变量的区别? 答:static i = 10; //常量class A a; a.i =10;//可变 4、什么是java序列化,如何实现java序列化?

答:序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题。 序列化的实现:将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法,implements Serializable只是为了标注该对象是可被序列化的,然后使用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流。 5、是否可以从一个static方法内部发出对非static方法的调用?答:不可以,如果其中包含对象的method();不能保证对象初始化. 6、写clone()方法时,通常都有一行代码,是什么? 答:Clone 有缺省行为,super.clone();他负责产生正确大小的空间,并逐位复制。 7、在JAVA中,如何跳出当前的多重嵌套循环? 答:用break; return 方法。

【黑马程序员】面试中常见Java面试题

【黑马程序员】面试中常见Java面试题 Java 面试中常见面试问题: 1. JDK 和JRE 有什么区别? 2. == 和equals 的区别是什么? 3. 两个对象的hashCode() 相同,则equals() 也一定为true,对吗? 4. final 在Java 中有什么作用? 5. Java 中的Math. round(-1. 5) 等于多少? 6. String 属于基础的数据类型吗? 7. Java 中操作字符串都有哪些类?它们之间有什么区别? 8. String str="i"与String str=new String("i")一样吗? 9. 如何将字符串反转? 10. String 类的常用方法都有那些? Java 面试中常见面试题答案: 1. JDK 和JRE 有什么区别? JDK:Java Development Kit 的简称,Java 开发工具包,提供了Java 的开发环境和运行环境。 JRE:Java Runtime Environment 的简称,Java 运行环境,为Java 的运行提供了所需环境。 具体来说JDK 其实包含了JRE,同时还包含了编译Java 源码的编译器Javac,还包含了很多Java 程序调试和分析的工具。简单来说:如果你需要运行Java 程序,只需安装JRE 就可以了,如果你需要编写Java 程序,需要安装JDK。 2. == 和equals 的区别是什么? == 解读 对于基本类型和引用类型== 的作用效果是不同的,如下所示:

基本类型:比较的是值是否相同; 引用类型:比较的是引用是否相同; 代码示例: String x = "string"; String y = "string"; String z = new String("string"); System.out.println(x==y); // true System.out.println(x==z); // false System.out.println(x.equals(y)); // true System.out.println(x.equals(z)); // true 代码解读:因为x 和y 指向的是同一个引用,所以== 也是true,而new String()方法则重写开辟了内存空间,所以== 结果为false,而equals 比较的一直是值,所以结果都为true。 equals 解读 equals 本质上就是==,只不过String 和Integer 等重写了equals 方法,把它变成了值比较。看下面的代码就明白了。 首先来看默认情况下equals 比较一个有相同值的对象,代码如下: class Cat { public Cat(String name) { https://www.doczj.com/doc/229778111.html, = name; } private String name; public String getName() { return name;

【黑马程序员】Java面试种常见的编程代码笔试题

【黑马程序员】Java面试种常见的编程代码笔试题《java基础教程(编程就像打字一样简单)》 完整视频:https://www.doczj.com/doc/229778111.html,/course/375.html?1912sxkqq 课程资料:https://https://www.doczj.com/doc/229778111.html,/s/1OSl2X8SgQue67KCg-ZZ5Gg 提取码:78lv 1、可能会让你写一段Jdbc连Oracle的程序,并实现数据查询. 答:程序如下: package hello.ant; import java.sql.*; public class jdbc { String dbUrl="jdbc:oracle:thin:@127.0.0.1:1521:orcl"; String theUser="admin"; String thePw="manager"; Connection c=null; Statement conn; ResultSet rs=null; public jdbc() { try{

Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); c = DriverManager.getConnection(dbUrl,theUser,thePw); conn=c.createStatement(); }catch(Exception e){ e.printStackTrace(); } } public boolean executeUpdate(String sql) { try { conn.executeUpdate(sql); return true; } catch (SQLException e) { e.printStackTrace(); return false; } } public ResultSet executeQuery(String sql) {

黑马就业班java测试题

传智播客java就业班入学测试题 共50道题,每道题2分,总分100分,80分为合格。 注意,题目有多选,也有单选。请认真作答。 1.在JAVA中,下列哪些说法是正确的(ac ) A.java源文件的扩展名为.java B.写好的java源程序可以直接运行 C.编写的源程序必须先编译后才能运行 D.程序员可以读懂扩展名为.class的文件 2.下列标识符哪个是合法的(bd ) A.class B.$abc C.1234 D._name 3.下面哪些赋值语句是正确的?(abd ) A. long test = 012; //八进制0,二进制0b,十六禁止0x B. float f = -412; C. int other = (int) true; //不可以转换 D. double d = 0x12345678; E. byte b = 128; //损失精度 4.在Java中,下列语句不能通过编译的有( ac) A. String s= “join”+ 3; B. int a= “join”+3; C. int a= …a?+5; D. float f=5+5.5; 5.设 a = 3,则表达式 (--a )<

if(x++>4 & ++y>5) { x++; } System.out.println("x=" + x + ",y=" + y); } A. x=4,y=5 B. x=4,y=6 C. x=5,y=6 D. x=6,y=6 7.尝试运行下面的代码会发生什么?( b) public class Test { public static void main(String[] args) { boolean m = true; if (m = false) { System.out.println("true"); } else { System.out.println("false"); } } } A. 输出字符串”true” B. 输出字符串”false” C. 编译时错误 D. 运行时错误 8.编译并运行以下代码将发生什么?( d) public static void main(String args[]){ char digit = 'a'; for (int i = 0; i < 10; i++){ switch (digit) { case 'x' : { int j = 0; System.out.println(j); } default : { int j = 100; System.out.println(j); } }

黑马程序员Java教程:String类-练习(一)

String类 --练习(一) 1、给定一个字符串数组,按照字典顺序进行从小到大的排序。{"nba","abc","cba","zz","qq","haha"} 思路: ①对数组排序,可以用选择,冒泡都行。 ②for嵌套、比较以及换位。 ③使用String类中提供的用于字符串比较的功能进行比较。 代码: 1.public class StringTest{ 2. public static void main(String[] args){ 3. String[] arr = { "nba","abc" ,"cba" ,"zz" ,"qq" ,"haha" }; 4. 5. printArray(arr); 6. sortString(arr); 7. printArray(arr); 8. } 9. 10. public static void printArray(String[] arr){ 11. System.out.print( "["); 12. for(int i = 0; i < arr.length; i++){ 13. if(i != arr.length -1) 14. System.out.print(arr[i] + ","); 15. else 16. System.out.println(arr[i] + "]"); 17. } 18. } 19. 20. public static void sortString(String[] arr){

21. for(int i = 0; i < arr.length - 1; i++){ 22. for(int j = i + 1; j < arr.length; j++){ 23. if(arr[i].compareTo(arr[j])>0){ 24. swap(arr,i,j); 25. } 26. } 27. } 28. } 29. 30. private static void swap(String arr[],int i, int j){ 31. String temp = arr[i]; 32. arr[i] = arr[j]; 33. arr[j] = temp; 34. } 35.} 36. 运行结果: 2、一个子串在整串中出现的次数"nbaernbatynbauinbaopnba" 思路: ①要找的子串是否存在,如果存在获取其出现的位置,这个可以使用indexOf 完成。

Java就业班第二阶段测试题

Java就业班第二阶段测试题2005-7-20 姓名:分数: 一、选择题 1.给定下列代码,哪一种请求方法将被调用?

输入想上传的文件:
A. PUT B. POST C. GET D. HEAD 2.下列标记中,哪一个是用来创建一个下拉列表的? A. B. C. 3. 给定下列请求URI,哪一个是最好的关于上下文路径的描述? /cars/sportsCars/index.html A. /cars B. /cars/sportsCars C. /sportsCars D. 缺乏足够的信息来确定答案 4 . ServletContext对象可以从下边哪一个对象直接访问到? A. HttpServlet B. ServletRequest C. ServletConfig D. ServletResponse 5. 下列哪个XML标记应用于整个应用程序而不是某个Servlet? A.mime-mapping B.init-param C.context-param D.session-config

2020年Java面试题50道Java面试题

2020年Java面试题50道Java面试题 黑马程序员免费视频库:https://www.doczj.com/doc/229778111.html,?2020sxkyk 以下的内容是对原有的和最近Java面试题集及答案进行了全面修订之后给出的负责任的题目和答案,相对来说比较经典,相信对准备入职的Java程序员一定有所裨益。 21、描述一下JVM 加载class文件的原理机制? 答:JVM 中类的装载是由类加载器(ClassLoader)和它的子类来实现的,Java 中的类加载器是一个重要的Java 运行时系统组件,它负责在运行时查找和装入类文件中的类。 补充: 1.由于Java的跨平台性,经过编译的Java源程序并不是一个可执行程序,而是一个或多个类文件。当Java程序需要使用某个类时,JVM会确保这个类已经被加载、连接(验证、准备和解析)和初始化。类的加载是指把类的.class文件中的数据读入到内存中,通常是创建一个字节数组读入.class文件,然后产生与所加载类对应的Class对象。加载完成后,Class对象还不完整,所以此时的类还不可用。当类被加载后就进入连接阶段,这一阶段包括验证、准备(为静态变量分配内存并设置默认的初始值)和解析(将符号引用替换为直接引用)三个步骤。最后JVM对类进行初始化,包括:1如果类存在直接的父类并且这个类还没有被初始化,那么就先初始化父类;2如果类中存在初始化语句,就依次执行这些初始化语句。

2.类的加载是由类加载器完成的,类加载器包括:根加载器(BootStrap)、扩展加载器(Extension)、系统加载器(System)和用户自定义类加载器(https://www.doczj.com/doc/229778111.html,ng.ClassLoader的子类)。从JDK 1.2开始,类加载过程采取了父亲委托机制(PDM)。PDM更好的保证了Java平台的安全性,在该机制中,JVM 自带的Bootstrap是根加载器,其他的加载器都有且仅有一个父类加载器。类的加载首先请求父类加载器加载,父类加载器无能为力时才由其子类加载器自行加载。JVM不会向Java程序提供对Bootstrap的引用。下面是关于几个类加载器的说明: a)Bootstrap:一般用本地代码实现,负责加载JVM基础核心类库(rt.jar); b)Extension:从java.ext.dirs系统属性所指定的目录中加载类库,它的父加载器是Bootstrap; c)System:又叫应用类加载器,其父类是Extension。它是应用最广泛的类加载器。它从环境变量classpath或者系统属性java.class.path所指定的目录中记载类,是用户自定义加载器的默认父加载器。 黑马程序员视频库网址:https://www.doczj.com/doc/229778111.html,(海量热门编程视频、资料免费学习) 学习路线图、学习大纲、各阶段知识点、资料网盘免费领取+QQ 3285264708 / 3549664195 22、char 型变量中能不能存贮一个中文汉字?为什么? 答:char类型可以存储一个中文汉字,因为Java中使用的编码是Unicode(不选择任何特定的编码,直接使用字符在字符集中的编号,这是统一的唯一方法),一个char类型占2个字节(16bit),所以放一个中文是没问题的。

相关主题
文本预览
相关文档 最新文档