首页 > 编程语言 >1.Java基础

1.Java基础

时间:2023-02-05 19:55:23浏览次数:39  
标签:Java 对象 基础 equals 泛型 序列化 方法

Java基础

Java接口和抽象类有什么区别?

共同点 :
都不能被实例化。
都可以包含抽象方法。
都可以有默认实现的方法(Java 8可以用 default 关键字在接口中定义默认方法)。
区别 :
接口主要用于对类的行为进行约束,你实现了某个接口就具有了对应的行为。抽象类主要用于代码复用,强调的是所属关系。
一个类只能继承一个类,但是可以实现多个接口。
接口中的成员变量只能是 public static final 类型的,不能被修改且必须有初始值,而抽象类的成员变量默认 default,可在子类中被重新定义,也可被重新赋值

String,StringBuilder和StringBuffer的区别?

String是只读字符串,它并不是基本数据类型,而是一个对象。从底层源码来看是一个final类型的字符数组,所引用的字符串不能被改变,一经定义,无法再增删改。每次对String的操作都会生成新的String对象
StringBuffer和StringBuilder他们两都继承了AbstractStringBuilder抽象类,他们的底层都是可变的字符数组,所以在进行频繁的字符串操作时,建议使用StringBuffer和StringBuilder来进行操作。 另外StringBuffer 对方法加了同步锁或者对调用的方法加了同步锁,所以是线程安全的。StringBuilder 并没有对方法进行加同步锁,所以是非线程安全的

==和equals的区别?

== 比较的是变量(栈)内存中存放的对象的(堆)内存地址,用来判断两个对象的地址是否相同,即是否是指相同一个对象。比较的是真正意义上的指针操作
equals用来比较的是两个对象的内容是否相等,由于所有的类都是继承自java.lang.Object类的,所以适用于所有对象
所有比较是否相等时,都是用equals 并且在对常量相比较时,把常量写在前面,因为使用object的equals object可能为null 则空指针
在阿里的代码规范中只使用equals ,阿里插件默认会识别,并可以快速修改,推荐安装阿里插件来排查老代码使用“==”,替换成equals

Java基本数据类型有几种,每一种的区别是什么?

Java 中有 8 种基本数据类型,分别为:
6 种数字类型:
4 种整数型:byte、short、int、long
2 种浮点型:float、double
1 种字符类型:char
1 种布尔型:boolean
另外,Java 的每种基本类型所占存储空间的大小不会像其他大多数语言那样随机器硬件架构的变化而变化
值传递和引用传递的区别?
程序设计语言将实参传递给方法(或函数)的方式分为两种:
值传递 :方法接收的是实参值的拷贝,会创建副本。
引用传递 :方法接收的直接是实参所引用的对象在堆中的地址,不会创建副本,对形参的修改将影响到实参。
很多程序设计语言(比如 C++、 Pascal )提供了两种参数传递的方式,不过,在 Java 中只有值传递

Java的异常体系?受检查和非受检查异常区别?

在 Java 中,所有的异常都有一个共同的祖先 java.lang 包中的 Throwable 类。Throwable 类有两个重要的子类:
Exception :程序本身可以处理的异常,可以通过 catch 来进行捕获。Exception 又可以分为 Checked Exception (受检查异常,必须处理) 和 Unchecked Exception (不受检查异常,可以不处理)。
Error :Error 属于程序无法处理的错误
Checked Exception即受检查异常,Java 代码在编译过程中,如果受检查异常没有被 catch或者throws关键字处理的话,就没办法通过编译
Unchecked Exception即不受检查异常,Java 代码在编译过程中 ,我们即使不处理不受检查异常也可以正常通过编译

序列化和反序列化

如果我们需要持久化 Java 对象比如将 Java 对象保存在文件中,或者在网络传输 Java 对象,这些场景都需要用到序列化。
简单来说:
序列化: 将数据结构或对象转换成二进制字节流的过程
反序列化:将在序列化过程中所生成的二进制字节流转换成数据结构或者对象的过程

反射和泛型

反射之所以被称为框架的灵魂,主要是因为它赋予了我们在运行时分析类以及执行类中方法的能力。通过反射你可以获取任意一个类的所有属性和方法,你还可以调用这些方法和属性反射可以让我们的代码更加灵活、为各种框架提供开箱即用的功能提供了便利
Java 泛型(Generics) 是 JDK 5 中引入的一个新特性。使用泛型参数,可以增强代码的可读性以及稳定性,泛型一般有三种使用方式:泛型类、泛型接口、泛型方法

自动装箱与拆箱了解吗?原理是什么?什么是自动拆装箱?

装箱就是自动将基本数据类型转换为包装器类型(int-->Integer);调用方法:Integer的 valueOf(int) 方法
拆箱就是自动将包装器类型转换为基本数据类型(Integer-->int)。调用方法:Integer的intValue方法

标签:Java,对象,基础,equals,泛型,序列化,方法
From: https://www.cnblogs.com/song-hua/p/17093858.html

相关文章

  • Docker基础知识 (25) - Docker 容器资源限制和监控
    在默认情况下,Docker是不对运行的容器进行资源限制的。在生产环境中,如果不对单一容器进行资源限制,宿主(主机)的资源用完后会导致系统出错甚至系统崩溃。因为在生产环境通常会......
  • 基础算法二
    树与图的存储树是一种特殊的图,与图的存储方式相同。对于无向图中的边ab,存储两条有向边a->b,b->a。因此我们可以只考虑有向图的存储。(1)邻接矩阵:g[a][b]存储边a->b......
  • docker基础
    一.Docker概述1.1Docker是什么Docker是一种开源的应用容器引擎,基于go语言开发并遵循了apache2.0协议开源,可以轻松的为任何应用创建一个轻量级、可移植的、自给自足的容......
  • Matlab基础学习
       还是跟着清风老师浅浅学一下这个大计算器       1.Matlab中注释为%(快捷键ctrl+r,取消ctrl+t)    2.clear清除工作区变量,clc清除命令行窗口......
  • Java多线程并发06—CAS、AQS
    CAS(CompareAndSwap/Set)概念CAS函数,是比较并交换函数,它是原子操作函数。原理CAS是基于乐观锁的原理进行操作的。它总是认为自己可以成功完成操作。当多个线程同时使用CAS......
  • java——spring boot集成MongoDB——数据库安装和登录、简单使用
    参考文档,菜鸟教程:https://www.runoob.com/mongodb/mongodb-tutorial.html  参考文档、黑马教程:https://www.bilibili.com/video/BV1bJ411x7mq?p=1&vd_source=79bbd5b7......
  • Docker基础
    一、Docker概述1.1、Docker是什么?是一个开源的应用容器引擎,基于go语言开发并遵循了apache2.0协议开源是在Linux容器里运行应用的开源工具是一种轻量级的“虚拟机"Doc......
  • Java异常
    Java异常异常指程序运行中出现的不期而至的各种状况。Java把异常当做对象来处理,并定义了一个基类java.lang.Throwable作为所有异常的超类。通常分为Error和Exception两......
  • JAVA 双亲委派与类加载器
    JAVA双亲委派与类加载器双亲委派虚拟机在加载类的过程中需要使用类加载器进行加载,而在Java中,类加载器有很多,那么当JVM想要加载一个.class文件的时候,到底应该由哪个类加......
  • Java流程控制
    Java流程控制用户交互Scannerjava.util.Scanner是Java5的新特征,我们可以通过Scanner类来获取用户输入基本语法:Scanners=newScanner(System.in);通过Scann......