Java基础面试题(简单版):

1.java的8个基本数据类型?

        整型: byte(占用1个字节) short(占用2个字节) int(占用4个字节) long(占用8个字节)

        浮点型: float(占用4个字节)、double(占用8个字节) 字符型: char

        布尔型: boolean

2.ArrayList和LinkedList的区别?

        可以说ArrayList和LinkedList除了是同属于集合类,其他都是不同的,因为他们本身的实现是两种不同的实现方式,ArrayList 维护的是一个动态数组,LinkedList维护的是一个双向链表,而他们之间的不同是数组与链表的特性比较
往集合中间插入数据时ArrayList比linkedList慢,ArrayList正好扩容的时候添加数据要比LinkedList慢,查询数据ArrayList更快

3.HashMap是否是线程安全的? HashMap的底层原理?

    HashMap是线程不安全的,HashTable、ConcurrentHashMap是线程安全的 HashMap是基于哈希表的Map接口的非同步实现。 HashMap底层就是一个数组结构,数组中的每一项又是一个链表。数组+链表结构,新建一个HashMap的时候,就会初始化一个数组。Entry就是数组中的元素,每个Entry其实就是一个key-value的键值对,它持有一个指向下一个元素的引用,这就构成了链表,HashMap底层将key-value当成一个整体来处理,这个整体就是一个Entry对象。当需要存储一个Entry对象时,会根据hash算法来决定在其数组中的位置,在根据equals方法决定其在该数组位置上的链表中的存储位置;当需要取出一个Entry对象时,也会根据hash算法找到其在数组中的存储位置, 在根据equals方法从该位置上的链表中取出Entry。JDK1.8做出了改变,使用 数组 + 链表 + 红黑树 的结构。当节点数不大于8时,还是一个链表结构,只不过插入节点时变成了 尾插法 ,当节点数大于8后,将从链表结构转化成红黑树结构

4.成员变量和局部变量的区别?
   1)所在位置: 局部变量:在每个方法内部使用,出了方法不可用 成员变量:属于每个类,在方法的外部,描述类的属性
   2)作用范围: 局部变量:作用在方法内部 成员变量:作用于每个类
   3)默认值: 局部变量:声明之后系统不会赋予默认值,必须自己手动赋值,否则会报错 成员变量:系统会根据该变量的类型赋予其相应的特征值,不手动赋值,也不会报错
   4)所在内存位置不一样: 成员变量是在对象创建以后存在于堆中,对象回收时,成员变量消失 局部变量是在方法被调用时存在于栈中,方法调执行结束,从栈中清除
   5)生命周期不同: 成员变量:随对象的创建而创建,对象回收时,成员变量消失 局部变量:随着方法的调用被创建,方法执行结束后,从栈中清除

5.说说重载与重写的区别?

   【1】定义的位置不同:重载方法必须在同一个类中定义,而重写方法必须在子类中定义。

   【2】方法名和参数列表不同:重载方法的方法名相同但参数列表不同,而重写方法的方法名和参数列表必须与父类相同。

   【3】返回类型不同:重载方法的返回类型可以不同,而重写方法的返回类型必须相同或是其子类。

    【4】目的不同:重载的目的是为了提高代码的可读性和简洁性,而重写的目的是为了在子类中灵活地修改父类的行为。

6.java中String字符串类中的常用方法?

   charAt     根据下标获取对应位置字符、
   contains   判断一个字符串中是否包含某个字符串,返回值为boolean类型、
   equals     判断两个字符串内容是否相等、
   indexOf    根据字符串获取在字符串中的下标,如果不存在返回-1、
   length     获取字符串的长度
   replace    替换字符串、
   split      根据分隔符拆分字符串,返回值为数组、
   substring  根据下标截取字符串

7.面向对象的三大特征:封装,继承,多态
        1.封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。

                 1)将属性进行私有化(private)【不能直接修改属性】

                 2)提供公共的(public)set/get方法,对数据进行判断并赋值 a. 提供“set变量名(参数)”方法,用于设置成员变量的值,方法用public修饰 b. 提供“get变量名()”方法,用于获取成员变量的值,方法用public修饰

                3)提供相应的构造器/构造方法,与set/get方法结合

        2.继承:通过extends xxx实现,就是子类继承父类的属性行为,使得子类对象具有与父类相同的属性、相同的行为。子类可以直接访问父类中的非私有的属性和行为。
        3.多态:父类引用指向子类对象。
8.static关键字的使用

静态属性
        被static修饰的属性叫静态属性(类变量),static修饰的变量,不属于某一个类,是共享的。不需要new对象就能调用。

静态方法
        ①、静态方法中,只能调用静态的方法或属性。(在静态方法中,不能使用this关键字,super关键字)
        ②、静态方法随着类的加载而加载。可以通过“类.静态方法”的方式调用

静态代码块
        代码块的作用:用来初始化类、对象

静态内部类
        Java允许将类A声明在类B中,类A就是内部类,类B为外部类
        内部类作为外部类的成员,可以调用外部类的结构,可以用static修饰(外部类不能用static修饰)

9.Java中构造方法是什么,用途是什么?

在Java中,构造方法是一种特殊类型的方法,用于创建对象时初始化对象的实例变量。构造方法的作用如下:
        1. 创建对象:构造方法用于创建对象的实例。当使用new关键字创建一个对象时,会调用该对象对应的构造方法,并在构造方法中进行必要的初始化操作。
        2. 初始化实例变量:构造方法用于初始化对象的实例变量。通过在构造方法中为对象的实例变量赋初值,确保对象在创建时具备合法的初始状态。
        3. 处理对象的初始化逻辑:构造方法可以包含任意逻辑和代码,用于处理对象的初始化逻辑。例如,可以在构造方法中进行计算、调用其他方法等操作,以确保对象在创建后能够满足特定需求。
        4. 提供重载的构造方法:可以定义多个构造方法,通过不同的参数列表来实现方法的重载。这样可以在创建对象时根据不同的参数选择不同的构造方法,以满足不同的需求。

问题:什么是构造方法?
和类名相同,不写返回值的方法,在创建对象时会调用构造方法,用于给属性赋值/初始化一些配置信息等

问题:静态代码块和构造方法哪个先执行
静态代码块

问题:构造方法可以被继承吗
不能

10.java中的this关键字

        this用于引用当前对象的实例,调用本类中的成员变量,其他方法,和本类中的其他构造方法。

11.Java的多线程中的synchronized

synchronized中文意思是同步,也称之为“同步锁”。
synchronized的作用是保证在同一时刻, 被修饰的代码块或方法只会有一个线程执行,以达到保证并发安全的效果。
Synchronized修饰一个方法很简单,就是在方法的前面加synchronized,synchronized修饰方法和修饰一个代码块类似,只是作用范围不一样,修饰代码块是大括号括起来的范围,而修饰方法范围是整个函数。
方式1:同步方法
public synchronized void method()
{
   // todo
}
方式2: 同步代码块
public void method()
{
   synchronized(this) {
      // todo
   }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值