栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【Java基础】Java基础

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Java基础】Java基础

目录
  • 一、java中的编译器和解释器
  • 二、多态的实现
  • 三、Overload和Override的区别
  • 四、什么是值传递和引用传递
  • 五、引用拷贝、浅拷贝与深拷贝
  • 六、a==b与a.equals(b)有什么区别
  • 七、为什么要有 hashCode
  • 八、Java集合类
  • 九、HashTable 和concurrentHashMap 区别
  • 十、 什么是CAS

一、java中的编译器和解释器

编译器:将java源程序编译成字节码,字节码由虚拟机解释执行。
解释器:解释器将字节码翻译成特定机器上的机器码,然后在特定的机器上运行。

Java源代码 --> 编译器 --> Jvm可执行的Java字节码(即虚拟指令) --> Jvm传输字节码 --> Jvm中解释器 --> 机器可执行的二进制机器码 --> 程序运行。

二、多态的实现

Java实现多态有三个必要条件:继承、重写、向上转型。

  • 继承:在多态中必须存在有继承关系的子类和父类。
  • 重写:子类对父类中某些方法进行重新定义,在调用这些方法时就会调用子类的方法。
  • 向上转型:在多态中需要将子类的引用赋给父类对象,只有这样该引用才能够具备技能调用父类的方法和子类的方法
三、Overload和Override的区别

Overriding :子类中重写父类的方法;
Overloaded:同一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载

四、什么是值传递和引用传递
  • 值传递:是对基本型变量而言的,传递的是该变量的一个副本,改变副本不影响原变量。
  • 引用传递:一般是对于对象型变量而言的,传递的是该对象地址的一个副本,并不是原对象本身。

一般认为,Java 基本变量的传递都是值传递,Java 中实例对象的传递是引用传递。

五、引用拷贝、浅拷贝与深拷贝

当我们把一个对象赋值给另外一个对象时,是引用拷贝。

  • 引用拷贝:创建一个指向对象的引用变量的拷贝。

当调用clone方法时,我们实现的是对象拷贝。对象拷贝分为浅拷贝、深拷贝:

  • 浅拷贝:是会将对象的每个属性进行依次拷贝,但属性值是引用类型时,实质复制的是其引用,修改其里面引用的对象,会影响原对象。
  • 深拷贝:复制变量值,对于引用数据,则递归至基本类型后,再复制。深拷贝后的对象与原来的对象是完全隔离的,互不影响,对一个对象的修改并不会影响另一个对象。

实现深拷贝的方法:

  1. 重写clone方法,对引用的对象,重新克隆一份。
  2. 利用序列化、反序列化实现深度拷贝。
六、a==b与a.equals(b)有什么区别

== : 它的作用是判断两个对象的地址是不是相等。即,判断两个对象是不是同一个对象。

基本数据类型 == 比较的是值
引用数据类型 == 比较的是内存地址

equals() : 它的作用也是判断两个对象是否相等。但它一般有两种使用情况:

  1. 情况1:类没有覆盖 equals() 方法。则通过 equals() 比较该类的两个对象时,等价于通过“==”比较这两个对象。
  2. 情况2:类覆盖了 equals() 方法。一般,我们都覆盖 equals() 方法来两个对象的内容相等;若它们的内容相等,则返回 true (即,认为这两个对象相等)。
七、为什么要有 hashCode

以HashSet为例,当把对象加入HashSet时,会先用hashcode做快速判断,只有hashcode相等时,才作equals判断,这样能提高执行效率!

八、Java集合类

Map接口和Collection接口是所有集合框架的父接口

  • List接口的实现类主要有:ArrayList、LinkedList、Stack以及Vector等
  • Map接口的实现类主要有:HashMap、TreeMap、Hashtable、ConcurrentHashMap以及Properties等。
  • Set接口的实现类主要有:HashSet、TreeSet、LinkedHashSet等
九、HashTable 和concurrentHashMap 区别
  • HashTable属于同步集合,一个对象只有一把锁;
  • ConcurrentHashMap属于并发集合,一个对象有多把锁;

concurrentHashMap在1.7版本和1.8版本的区别
1.7版本: 基于Segment+HashEntry数组实现的
1.8版本: synchronized+CAS+红黑树

使用CAS的方式,可以在特定场景进行无锁并发操作,使性能得以提升!

十、 什么是CAS

CAS可以简单理解为带原值更新,是一种无锁解决并发的操作。
CAS存在一个典型问题,就是ABA问题。一般这种情况概率较低,且产生的影响较小,我们只能减少发生的概率。

ABA常见的场景是
线程1 将对象值更新为A
线程2 将对象值更新为B
线程3 将对象值更新为A
则,线程1在更新时,会误以为对象没有被修改过,从而继续更新。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/852376.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号