java改变一个容器元素实体_JAVA面试题 (一)

java作用域public private protected 不写-friendly的区别?

public:可以被任何类引用。

protected:除了其他包不能使用,当前类,子孙类,同一包下的所有类都可

以使用。

friendly:不写时,子孙类和其他包不能使用,当前类,同一包下都可以使用。

private:只有当前类中可以使用。

& 和 && 的区别。

&是位运算符,而&&的逻辑运算符。二者没有可比性。

collection和collections的区别。

collection是java中容器框架的顶层接口。继承它的主要有list和set两个接口。

collections是针对容器类的一个帮助类。提供一系列的静态方法实现对容器的各种

搜索,排序,线程安全化的操作。

线程安全化:使用synchronized方法将集合变为线程同步的安全集合。

class model{

List list1 = Collections.synchronizedList(new ArrayList());

List list2 = Collections.synchronizedMap(new Map());

List list3 = Collections.synchronizedSet(new TreeSet<>());

}

String s=new String("asd")创建了多少个对象。

创建了两个。首先创建asd的字符串对象。然后new字符串对象将asd赋予它。

String s = "asd":这种方式变量存储在方法区中。

new String("asd"): 这种方式对象存储在堆中。

java中有没有goto关键字?

java中的保留字,现在没有在java中使用。goto语句常与条件语句配合使用。可用来实现

条件转移,构成循环,跳出循环体等功能。但是在结构化程序中,一般不使用goto语句,以免

造成程序流的混乱,使理解和调试程序困难。

5%3、-5%3、5%-3、-5%-3的结果是多少?

以右边的符号为准:2 -2 2 -2

Overload和Override的区别

重载:Overload在同一类中使用,只要方法名一致,参数个数,返回值都可以不用一致。访问类型也可以改。

重写:Override继承关系类使用,方法名,返回值,参数个数必须一致。访问类型必须必父类大。

set容器里的元素是不能重复的,那么使用什么方法实现的?

首先set集合的底层是map实现的,而map的key是不能重复的。map的key值不重复是因为put方法会先进行

hashcode的比较,如果值一致那么再进行equals方法比较。这样保证key值得唯一性。

error和exception的区别

error一般是指可以恢复但是非常困难的问题,如栈溢出,内存溢出。

exception指运行时异常,这是一种设计或者实现上的问题。

jdk8的新特性 主要的

Lambda表达式和函数式接口:

lambda表达式也称为闭包。是jdk8中的最大的改变,它允许我们将函数当成参数传递给某个方法,或者把代码

本身当做数据处理:函数式开发。

接口增加的默认方法和静态方法:

default和static

方法引用:

方法引用使得开发者可以引用现存的方法,java类的构造方法或者实例对象。一般和lambda表达式配合使用。

使得代码简介,紧凑。

构造器引用 Class::new///Class::new

静态方法引用 Class::static_method

某个类的成员方法引用 Class::method

实例对象的成员方法引用 instance::method

重复注解:

自从java5引进注解之后,注解使用的越来越多,尤其是在框架中,但是注解不能在一个地方多次使用,

java8打破了这个限制,可以在一个地方重复使用同一个注解,使用 @Repeatable定义重复的注解

更好的类型推断

编译器可以推导出某个参数的数据类型,使得代码更加的简洁

拓宽注解的应用场景

现在注解几乎可以使用在任何元素上。局部变量,接口,超类,实现类等

抽象类的接口的区别

相同点:都是不能被直接实例化的

不同点:

1. 抽象类是可以有方法体的,接口中没有,但是java8的新特性中接口可以写static和default关键字

的方法。

2. 抽象类中的成员变量可以随意修饰,接口中只能是public sttaic final类型

3. 接口中不能含有静态代码块,静态方法。抽象类可以有,新特性之后,接口可以写静态方法。

4. 一个类只能单继承,但是可以多实现。

5. 抽象类可以定义成员变量,接口中的变量都是常量。

抽象类是否可以继承实体类?

抽象类是可以继承实体类的,但是前提是实体类具有明确的构造函数。

constructor可以被override么?

不能,因为constructor是不能被继承的。但是可以被overload。

String类可以被继承么?

不能,该类是被final修饰的

在try-catch-final中,return在try语句里,那么执行顺序?

final中的code会在return之前执行。

静态变量和实例变量的区别

静态变量是被static修饰的变量,也叫作类变量,不属于类的任何一个对象,一个类不管创建多少个对象

静态变量在内存中有且仅有一个拷贝。

实例变量必须依托于某一个实例,需要先创建对象后通过对象才能访问,静态变量可以实现让多个对象共享

内存

ArrayList和Vector的区别,HashMap和Hashtable的区别。

ArrayList和Vector:

同步性:ArrayList是线程不安全的,也即是不同步的,Vector是线程安全的,也即是同步的。

数据增长:ArrayList在达到阈值的时候会增长原来集合的50%,Vector则会增长100%。

HashMap和Hashtable:

历史原因:Hashtable是基于Dictionary类的,HashMap是java1.2引进的Map接口的一个实现。

同步性:Hashtable是线程安全的,HaspMap是线程不安全的的。

值:只有HashMap可以有空值,key或value。

char变量可以存储一个汉字么?为什么?

可以,java中以unicode编码,一个char占16字符,所以放中文是没有问题的。

***

GC是什么?为什么要有GC?

GC就是垃圾收集器。java不像C定义一个变量需要手动释放内存。主要就是GC实现的,他可以自动检测对象

是否超过作用域从而达到自动回收的目的。

String和StringBuffer和StringBuilder的区别

String是长度不可变的,而Buffer和Builder是可变的。

buffer和builder最大的区别就是buffer是线程安全的,builder是线程不安全的。所以多线程推荐使用

buffer,单线程使用builder。

final,finally,finalize的区别

final:修饰符,修饰类:不可被继承,修饰变量:变为常量,修饰方法:不能重载

finally:在处理异常时finally块来执行任何清除操作。

finalize:方法名,java允许finalize方法在GC将对象从内存中清除之前做必要的清理工作。此方法是

GC确定该对象没有被使用的时候调用的,属于Object类,所以所有类都有该方法。

面向对象的特性

抽象

继承

封装

多态

基本数据类型

byte char int short long double float boolean

int和integer的区别

int是基本数据类型,integer是int的封装类型。

ArrayList和Vector和LinkedList的存储性能和特性

ArrayList和Vector都是基于数组实现的,所以查询快,但是ArrayList是线程不安全的,Vector是线程

安全的,其次,Vector的性能较差。

LinkedList是基于链表的,所以插入,删除,更改快。

heap和stack的区别

heap堆,stack栈。

栈:存取快,仅次于CPU中的寄存器,栈中的数据大小和生存区是确定的,缺乏灵活性。栈数据可以共享

堆:动态分配内存大小:堆中的GC可以周期的收取不再使用的对象。因为动态分配内存,存取慢。

原文:https://www.cnblogs.com/Ruoqian/p/ms102_1.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值