1:什么是注释?注释分为几种?注释有什么作用?
注释就是对代码的解释说明性文字,分为三种:单行注释、多行注释、文档注释。注释可以对程序进行说明,给人看,还可以对程序进行排错。
2:什么是关键字?有什么特点?
关键字就是被java语言赋予了特殊含义的单词。特点就是所有的关键字都是小写。
3:什么是标识符?由哪些部分组成?常见的命名规则有哪些?
标识符就是给类、接口、方法、变量名起的名字。常见的规则有:有数字、字母、_以及$符号组成,不能以数字开头,不能是java中的关键字。
4:什么是常量?常量的分类?字面值常量表现形式有哪些?
在程序的运行过程中其值不发生改变的量。
字面值常量: 1 14
自定义常量: int MAX = 100;
5:什么是变量?变量的定义格式?要使用变量需要注意什么?
在程序运行过程中,其值是可以在某个范围内发生改变的量。
变量其实就是内存中一小块区域。
由3部分组成:
1,数据类型: 限定变量的取值
2,变量名:方便使用。
3,值: 如果没有值就没有意义。
6:Java中的数据类型分几类?基本数据类型有哪些?
基本类型:4类8种。基本数据类型有:
整数(byte,short,int,long)、浮点数(float,double)、字符(char)、布尔(boolean)。
7:算术运算有哪些,各自的作用?
有:+,-,*,/,%,++,--。
+:正号,加法,字符串连接符
%:取得余数
++,--:
单独使用:在操作数据的前后效果一致。
参与操作使用:
在操作数据的前面,是先++或者--,然后参与操作。
在操作数据的后面,是先参与操作,后++或者--。
8:+运算符需要注意的问题?
当把+号作为加法和字符串连接符一起使用的时候,注意把运算的地方()起来。
9:赋值运算符常见的有哪些,各自的作用?
=:把右边的内容赋值给左边
+=,-=,*=,/=,%=:把左边的和右边的操作后赋值给左边。
注意:
+=隐含了强制类型转换。
x+=y;等价与:x = (x的数据类型)(x + y);
10:逻辑运算符有哪些都有什么作用?
&:有false则false
|:有true则true
^:相同为false,不同为true。通过情侣关系来理解。
!:非false则true,非true则false。偶数次不改变以前的真假。
&&:和&的结果一样,但是具有短路效果。左边有false,右边不执行。
||:和|的结果一样,但是具有短路效果。左边有true,右边不执行。
11:位移运算符有什么不同?
要想操作,就必须把所有的数据转换为二进制。然后操作。
<<:把数据向左移动,后边补0。其实相当与乘以2的移动位数次幂。
>>:把数据向右移动,左边补是最高位的值。其实相当与除以2的移动位数次幂。
>>>:把数据向右移动,左边补0。其实相当于除以2的移动位数次幂。
12:什么是函数重载?
函数名相同,参数列表不同,跟返回值不关,就是函数重载。
13:类是什么?类的组成是哪些?
类是抽取了同类对象的共同属性和行为形成的对象或实体的"模版".
类是由成员变量,成员方法,构造函数组成
14:对象是什么?什么时候需要使用对象?
对象是现实世界中实体的描述,是其自身所具有的状态特征及可以对这些状态施加的操作结合在一起所
构成的独立实体.
需要描绘具体事物的时候要使用对象.
15:封装是什么?自己概述
隐藏对象的属性和具体的实现细节,仅对外提供公共的访问方式.
类、方法其实也是封装的体现。
16:继承是什么?自己概述
概念:把多个类中相同的内容抽取出来,单独定义到一个类(父类)中,再定义其他类(子类)的时候,继承父类即可.
好处:1.提高了代码的复用性,降低了代码的重复率.2.让类与类之间产生了关系,是多态的前提.
17:匿名对象是什么?应用场景是什么?
匿名对象就是没有名字的对象,由于没有指向,所以效率较高一些。
应用场景:A:调用方法。但是仅仅只限调用一次而已。B:匿名对象用作实际参数传递。
18:构造方法的作用是什么?构造方法的特点是什么?构造方法的注意事项是什么?
构造方法的作用是初始化数据。特点是:名称和类名一致,并且没有返回值类型的修饰和返回值。
注意:如果我们没有给构造方法,系统将给出一个无参构造方法。如果我们给出了构造方法,系统将不再提供构造方法。
19:给成员变量赋值有几种方式?
1,通过set/get方法。
2,通过带参构造。
20:方法重写和方法重载的区别?重载可以改变返回值类型吗?(*面试题)
方法重写:
子类中出现和父类中一模一样的方法声明的方法。
方法重载:
同一个类中,出现方法名相同,参数列表不同的方法。
跟返回值无关。
重载可以改变返回值类型,因为他跟返回值无关。
21:static关键字是什么?有什么特点?什么时候用呢?
static关键字:是静态的意思,可以修饰类中成员变量和成员方法。
静态的特点:随着类的加载而加载、优先与对象而存在、被所有对象所共享、可以通过类名.静态的内容调用。
22:this和super的区别,以及应用场景? (*面试题)
this:当前类的引用对象。谁调用代表谁。
super:父类的存储空间标识。可以理解为父类对象,谁调用代表谁父亲。
应用场景:
A:成员变量
this.成员变量 本类的成员变量
super.成员变量 父类的成员变量
B:构造方法
this(...) 本类的构造方法
super(...) 父类的构造方法
C:成员方法
this.成员方法() 本类的成员方法
super.成员方法() 父类的成员方法
23:代码块是什么?代码块的分类有哪些及每种代码块的作用是什么?
用{}括起来的代码,就叫代码快。
分为:
A:局部代码快: 就是在方法中用{}括起来的代码。作用是限定变量的生命周期,提高效率。
B:构造代码快:在类中,方法外。用{}括起来的代码。作用是把所有构造方法中相同的内容抽取出来,
定义到构造代码块中,将来在调用构造方法的时候,会去自动调用构造代码块。构造代码快优先于构造方法。
C:静态代码快:在类中、方法外。用{}括起来的代码。只不过加了staric修饰。
作用是:在整个系统中,只加载一次的代码。一般做整个系统的初始化。
24:一个类的实例化过程有哪些步骤?(*面试题)
Student s = new Student(); 在内存中到底执行了哪些步骤。
1,加载Sutdent.class文件进内存(类加载器)
2,在栈内存为 s 变量申请一个空间
3,在堆内存为Student对象申请空间
4,对类中的成员变量进行默认初始化
5,对类中的成员变量进行显示初始化
6,有构造代码块就先执行构造代码块,如果没有,则省略
7,执行构造方法,通过构造方法对对对象数据进行初始化
8,堆内存中的数据初始化完毕,把内存值复制给 s 变量
26:继承是什么?继承的好处是什么?Java中的继承特点是什么?
继承就是:把多个类中相同的内容提取出来,定义到一个类中。
然后让这多个类和这个类产生一个关系,这多个类就具备该类的数据了。
这种关系叫:继承。
继承的好处是:提高代码的复用性,让类与类之间产生了一个关系,是多态的前提。
继承的特点是:Java中类只能够单继承,但是可以多层继承。
27:方法重写和重载有什么区别?重载可以改变返回值类型吗?(*面试题)
方法重写:子类中出现和父类一模一样的方法声明的方法。
方法重载:同一个类中,出现的方法名相同,参数列表不同的方法。
重载可以改变返回值类性,因为跟返回值无关。
28:子父类中构造方法的执行有什么特点?为什么要这样?
子类构造方法的执行,首先会去执行父类的构造方法。
因为子类中可能直接访问了父类的数据,父类的数据要优先于子类的数据进行初始化。
29:静态代码块,构造代码块,构造方法的执行顺序是什么?
静态代码块 -- 构造代码块 -- 构造方法
30:final关键字是什么,可以修饰什么,有什么特点?
final关键字:是最终意思,可以修饰类、方法、变量。
修饰类:类不可以被继承。
修饰方法:方法不可别重写
修饰变量:变量为常量。
31:多态是什么,前提是什么?
多态:对象在不同时刻表现出来的多种状态。是一种编译时期状态和运行时期状态不一致的现象。
成员变量:编译看左边,运行看左边。
成员方法:编译看左边,运行看右边。因为,普通成员方法可以重写,变量不可以。
静态方法:编译看左边,运行看左边。
前提:类与类之间要有继承关系。要有方法的重写。父类引用指向子类对象。
32:多态的好处及弊端?如何解决多态的弊端。
好处:提高了程序的可维护性(前提要有继承保证),和扩展性。
弊端:不能使用子类的特有功能。
33:什么是抽象类?抽象类的特点和好处是什么?
相同的方法,有相同方法的声明,但是方法体不一样,只抽取方法声明的方法,叫做抽象方法,有抽象方法的类,叫做抽象类。
特点:
A:类或者方法必须用abstract修饰。
B:具体类在继承抽象类的时候,要么本身也是抽象类,要么实现抽象类中的所有抽象方法。
C:抽象类不能被实例化。要想使用,必须按照多态的方式使用。
D:成员特点:
a:成员变量
可以是变量,也可以是常量。
b:构造方法
有构造方法,但是不能实例化。
用于子类访问父类数据的初始化。
c:成员方法
可以有抽象方法也可以有非抽象方法。
好处:
A:限定子类必须实现某些功能。
B:提高代码的复用性。
抽象类的几个问题:
A:抽象类不能实例化,构造方法有什么用。
用于子类访问父类数据的初始化。
B:抽象类没有抽象方法,有什么意义?
限制创建对象。
C:abstract不能和哪些关键字共存?
final: 冲突
private: 冲突
static: 无意义
34:什么是接口? 接口的特点?
如果一个抽象类中的方法全部是抽象方法,那么java就针对这种类型的抽象类,给出了一个更抽象的表达式:接口。
特点:
A:所有的方法,都是抽象方法。
B:类实现接口
要么本身是抽象类,要么重写接口中的抽象方法。
C:接口不能被实例化,要想使用,用多态。
D:成员特点
a:成员变量
只有常量,并且是静态常量。默认修饰符:publci static final
b:构造方法
没有构造方法,子类数据的初始化默认走的是Ojbect类的构造方法
c:成员方法
全部是抽象的,有默认修饰符:public abstract
35:抽象类和接口的区别? (*面试题)
A:成员区别
抽象类:
成员变量:可以是变量,也可以是常量。
构造方法:有。
成员方法:有,可以是抽象的,也可以是非抽象的。
接口:
成员变量:只能是常量。默认修饰符:publci static final
构造方法:没有,子类数据的初始化默认走的是Ojbect类的构造方法。
成员方法:只能是抽象的,默认修饰符是:publci abstract
B:类与接口的关系区别
类与类:
继承关系,单继承。
类与接口:
实现关系,单实现、多实现。
接口与接口:
继承关系,单继承、多继承。
C:设计理念的区别
抽象类被继承体现的是:is a的关系。抽象类中一般定义的是整个继承结构的共性功能。
接口被实现体现的是:like a的关系。接口中一般定义的是整个继承结构的扩展功能。
36,什么是内部类?有什么特点?
把类定义在其他类的内部,就被称为内部类。
内部类的访问特点:
A:内部类可以直接访问外部类的成员,包括私有。
B:外部类要访问内部类的成员,必须创建对象。
37,为什么内部类访问局部变量必须加final修饰?(*面试题)
A: 防止在使用后数据发生改变。
B: 延长变量的生命周期。
38,什么是匿名内部类?本质是什么?
匿名内部类就是没有名字的内部类。
格式:
new 类名或者接口名() {
重写方法;
};
本质:是继承类或者实现接口的子类匿名对象。
39,==和equals()的区别? (*面试题)
A:==
a:基本类型 比较的是基本类型的值
b:引用类型 比较的是引用类型的地址值
B:equals()
只能比较引用类型。
默认比较地址值。
40,什么是字符串?字符串的特点是什么?
字符串:由多个字符组成的一串数据。
特点:一旦被赋值就不能被改变。(*面试题)
注意:这里指的是字符串的内容不能发生改变。而字符串的引用是可以再次赋值的。
41:String s1 = new String("hello");和String s2 = "hello";的区别?(*面试题)
有区别,区别是:前者创建了两个对象,后者创建了一个对象。
42:String、StringBuffer、StringBuilder的区别?(*面试题)
String:字符长度是固定的。
StringBuffer/StringBuilder:字符长度是可变的。
StringBuffer:安全的,但效率较低一些。
StringBuilder:不安全的,但效率较高一些。
StringBuffer和StringBuilder兼容。
43:什么是基本数据包装类?
为了对基本类型的数据进行更多的操作的,java就针对每种基本类型的数据提供了对应的包装类类型。
对应的类型
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean
44:什么是正则表达式?
正则表达式就是符合一定规则的字符串。
45:集合和数组有什么区别?(*面试题)
集合:
长度可以发生改变。
只能存储对象类型,引用类型。
可以存储任意类型的对象。
数组:
长度固定。
可以存储基本类 型,也可以存储对象类型。
只能存储同一种类型的元素。
46:集合有多少种? 各自的特点是什么?
Collection
|--List 有序(存入和取出的顺序一致),元素可重复
|--ArrayList
底层数据结构是数组,查询快,增删慢。
线程不安全,效率高。
|--Vector
底层数据结构是数组,查询快,增删慢。
线程安全,效率低。
|--LinkedList
底层数据结构是链表,查询慢,增删快。
线程不安全,效率高。
|--Set 无序的 元素唯一
|--HashSet
|--TreeSet
47:泛型是什么?有什么用?在哪里用?泛型有什么好处和弊端?
泛型是一种把明确数据类型的工作推迟到创建对象或者调用方法的时时候才去明确的特殊的数据类型。
能优化程序设计,解决了黄色警告线问题。
把运行时期的异常提前到了编译时间。
避免了强制类型转换。
好处:
优化了程序的设计,解决了黄色警告线的问题。
把运行时期的问题提前到了编译时期间解决了。
避免了强制类型转换。
弊端:让类型统一了,不能存储不同的数据类型了。
48:用迭代器遍历集合的时候,用集合修改集合有没有问题?如果有,怎么解决?(*面试题)
有问题,因为会出现并发修改异常。
解决方法有多种,比如,我们可以不通过集合来修改集合,而使用迭代器来修改集合。
像ListIterator迭代器就有添加方法。
49、HashSet如何保证元素唯一性的呢?
底层数据结构是哈希表(散列表)。具体的是由一个元素是单向链表的数组组成。
它依赖于两个方法:hashCode()和equals()方法。
执行顺序:
先判断hashCode()是否相同,
如果相同
继承执行equals()方法,看其返回值:
true:元素重复,不存储。
false:元素不重复,存储。
如果不同
存储。
记住:
看到HashXxx结构的集合,就要知道,被该集合存储的元素要重写hashCode()和equals()方法。
而且,是自动生成的。
50、TreeSet底层数据结构是什么?如何保证元素的唯一性的呢?
底层数据结构是二叉树。
根据比较的返回值是否是0来决定。
如何保证元素的排序的呢?
A:自然排序 元素具备比较性
让集合中被存储的元素所属的类实现Comparable接口。
B:比较器排序 集合具备比较性
在创建集合对象的时候,让构造方法接收一个Comparator接口的子类对象。
51、LinkedHashSet底层数据结构是什么?如何保证元素的唯一性的呢?
底层由链表和哈希表组成。
由链表保证有序。
由哈希表保证唯一。
52、什么是可变参数?
针对在写一个方法的时候,不知道具体要有多少个形式参数的时候。
java提供了可变参数的用法。
注意:
A:变量其实是该数据类型的一个数组。
B:形式参数如果有多个的话,可变参数只能是最后一个。
C:数据类型要一致。
53、Map和Collection集合的区别?(*面试题)
A:Map集合存储的是键值对形式的元素。
Collection集合存储的是单个的元素。
B:Map集合的键是唯一的。
Collection的儿子Set集合元素是唯一的。
C:Map集合的值是可以重复的。
Collection的儿子List集合的元素是可以重复的。
54、Hashtable和HashMap的区别?(面试题)
A:HashMap 线程不安全,效率高。允许null键和null值。
B:Hashtable 线程安全,效率低。不允许null键和null值。
55、Collection和Collections有什么区别?
Collection:是集合的顶层接口,定义了集合的通用方法。
Collections:是一个工具类,里面定义了对集合进行操作的一些常见方法。
56、什么是异常?异常有哪几种?各有什么特点?
程序出现了不正常的情况,就是异常。
异常的继承体系结构:
Throwable
|--Error 严重的问题,一般我们解决不了。
|--Exception
|--RuntimeException 运行时期异常,这种问题一般要修正代码。
|--非RuntimeException 编译时期异常,必须进行处理,否则代码不能够通过。
|
|