JAVA八股、JAVA面经

还有三天面一个JAVA软件开发岗,之前完全没学过JAVA,整理一些面经......

大佬整理的:Java面试必备八股文_-半度的博客-CSDN博客

另JAVA学习资料:Java | CS-Notes


目录

类,对象,方法的关系

构造方法

方法的重载

访问修饰符

继承

Java 与 C++ 的区别

JVM、JRE和JDK的关系

int和Integer的区别

包装类及其作用

HashMap

Java HashMap 常用方法如下表

HashMap为什么线程不安全?如何保障HashMap线程安全?

Key为什么不重复?哈希冲突...

JVM(Java虚拟机)运行时数据区怎么分?

JMM(Java内存模型)

1.什么是JMM?

2.JMM的三大特性:原子性、可见性、有序性

简述java中volatile关键字作用

3.关于同步的规定

4.解释说明

JMM中的八种操作

Java有哪些锁?syn底层是什么?

Synchronized 同步锁


类,对象,方法的关系

Java中类,对象,方法的关系_类对象方法之间的关系_螃蟹公@的博客-CSDN博客

Java中类和对象的关系_小白_小贺的博客-CSDN博客_java中类和对象的关系

  1. 类:类是一个模板,它描述一类对象的行为和状态。(比如一张汽车设计图纸)
  2. 对象:对象表示现实世界中一个具体的事物。对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。(比如根据汽车设计图纸设计出来的汽车)【类是对象的类型,对象是类的实例】
  3. 方法:方法就是一段用来完成特定功能的代码片段,类似于其它语言的函数。方法用于定义该类或该类的实例的行为特征和功能实现。方法是类和对象行为特征的抽象。方法很类似于面向过程中的函数。面向过程中,函数是最基本单位,整个程序由一个个函数调用组成。面向对象中,整个程序的基本单位是类,方法是从属于类和对象的。

构造方法

定义:构造方法作用就是对类进行初始化。每个类都有构造方法。如果没有显式地为类定义构造方法,Java编译器将会为该类提供一个默认不带任何参数的构造方法。

**创建一个人的类**
class Person{
	public String name;
	public int age;
    
    public Person(){
    }//无参构造函数
 
	public Person(String n,int a){
		this.name=n;
		this.age=a;
	}//有参构造函数(此时默认构造函数失效,想要调用无参,必须自己定义)
 
}

方法的重载

在Java程序中,如果同一个类中存在两个方法同名,方法的签名(参数个数、参数类型、类型排列次序)上也一样,将无法编译通过。
但在Java中多个方法重名是允许的,只要保证方法签名不同即可,这种特性称为方法重载(overload)
上述两个构造方法public Person(),public Person(String n,int a)也是方法的重载。

访问修饰符

  • default(friendly): 默认访问修饰符,在同一包内可见;
  • private(私有的):在同一类内可见,不能在类外看到,不能修饰类;
  • protected(受保护的):允许类本身、同一包中的所有类和不同包中的子类访问,不能修饰类;
  • public(公共的):对所有类可见。

继承

关键字:extends。运用继承,可以创建一个通用类定义一系列一般特性。
1、被继承的类称为父类
2、继承父类的类称为子类
3、执行继承时,子类将获得父类的属性,并具有自身特有的属性。

继承的特性:
1、子类拥有父类非 private 的属性、方法。
2、子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。
3、子类可以用自己的方式实现父类的方法。
4、Java 的继承是单继承,但是可以多重继承,单继承就是一个子类只能继承一个父类,这是 Java 继承区别于 C++ 继承的一个特性。(C++有多重继承,可以继承很多类,但是C++没有接口;Java没有多重继承,但是java有继承 + 接口)
5、提高了类之间的耦合性(继承的缺点,耦合度高就会造成代码之间的联系越紧密,代码独立性越差)。

为什么Java中不支持多重继承?

为什么Java中不支持多重继承?_java为什么不支持多继承_今昔在的博客-CSDN博客

Java 只能继承一个类,因为Java是面向对象语言,一个类可继承的属性不应该来自多个类,继承是类与类的关系,在Java中是对本身更高层次的抽象,而不是更多层次的抽象,不是人、猫、狗这样去抽象,而是人、动物这样的抽象方式。

所以Java的思想就不支持多重继承,但是支持对象的扩展,也就是接口。Java的面向对象思维把多重继承划分的更加对象化。
多重继承既可以实现更高层次的抽象又可以实现多次层次的扩展。

Java中不支持多重继承也是因为:

  • Java有单一继承这样的更高层次的抽象
  • 也有实现多个接口这样的更多层次的扩展方式

注意:
1、没有extends,默认父类为Object
2、只能有一个父类,即单继承;但是一个父类可以有多个子类
3、子类继承父类的全部成员,除了private成员
4、子类与父类不在同包,使用默认访问权限的成员不能被继承
5、构造方法不能被继承(但是子类可以调用父类构造方法)

Java 与 C++ 的区别

  • Java 是纯粹的面向对象语言,所有的对象都继承自 java.lang.Object,C++ 为了兼容 C 即支持面向对象也支持面向过程。
  • Java 通过虚拟机从而实现跨平台特性,但是 C++ 依赖于特定的平台。
  • Java 没有指针,它的引用可以理解为安全指针,而 C++ 具有和 C 一样的指针。
  • Java 支持自动垃圾回收,而 C++ 需要手动回收。
  • Java 不支持多重继承,只能通过实现多个接口来达到相同目的,而 C++ 支持多重继承。
  • Java 不支持操作符重载,虽然可以对两个 String 对象执行加法运算,但是这是语言内置支持的操作,不属于操作符重载,而 C++ 可以。
  • Java 的 goto 是保留字,但是不可用,C++ 可以使用 goto。

JVM、JRE和JDK的关系

  • JVM,Java虚拟机(Java V
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值