Java基础
Java基础面试题
strange421
这个作者很懒,什么都没留下…
展开
-
mvn install 将本地jar包注册到本地仓库中
做项目时要对接第三方,他们给了一个对接jar包,由于该包在外网maven仓库中不存在,需要将其放到本地仓库中引用;但在pom文件中写好引用标签,目录及文件都对应上了,保存后maven还是会从外网的远程公共仓库中下载,然后就报错;搜索了一下,发现只需要用mvn install 命令将该jar包注册到本地仓库中就行了;具体命令:mvn install:install-file -DgroupId=com.openapio -DartifactId=sdk -Dversion=6.0 -Dpackag原创 2021-05-24 11:34:05 · 375 阅读 · 1 评论 -
重载和重写的区别?
重载 发生在同一个类中,方法名必须相同,参数类型不同、个数不同、顺序不同,方法返回值和访问修饰符可以不同。重写 重写是子类对父类的允许访问的方法的实现过程进行重新编写,发生在子类中,方法名、参数列表必须相同,返回值范围小于等于父类,抛出的异常范围小于等于父类,访问修饰符范围大于等于父类。另外,如果父类方法访问修饰符为 private 则子类就不能重写该方法。也就是说方...原创 2020-02-10 10:26:50 · 65 阅读 · 0 评论 -
Java面向对象编程的三大特性:封装、继承、多态
封装 封装把一个对象的属性私有化,同时提供一些可以被外界访问的属性的方法,如果属性不想被外界访问,我们大可不必提供方法给外界访问。但是如果一个类没有提供给外界访问的方法,那么这个类也没有什么意义了。继承 继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。通过使用继承我们能够非常方便地复...原创 2020-02-10 10:28:12 · 172 阅读 · 0 评论 -
String、StringBuffer、StringBuilder的区别?
可从三个方面去分析:可变性 简单的来说:String 类中使用 final 关键字修饰字符数组来保存字符串,private final char value[],所以 String 对象是不可变的。而StringBuilder 与 StringBuffer 都继承自 AbstractStringBuilder 类,在 AbstractStringBuilder 中也是使用字符数组...原创 2020-02-10 10:31:14 · 170 阅读 · 0 评论 -
final关键字的总结
final关键字主要用在三个地方:变量、方法、类。对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。 当用final修饰一个类时,表明这个类不能被继承。final类中的所有成员方法都会被隐式地指定为final方法。 使用final方法的原因有两个。第一个原因是把方法锁定,以防任何继承类修...原创 2020-02-10 10:35:20 · 81 阅读 · 0 评论 -
Java中的异常处理
Java异常类层次结构图: 在 Java 中,所有的异常都有一个共同的祖先java.lang包中的Throwable类。Throwable: 有两个重要的子类:Exception(异常)和Error(错误),二者都是 Java 异常处理的重要子类,各自都包含大量子类。Error(错误):是程序无法处理的错误,表示运行应用程序中较严重问题。大多数错误与代码编写者执行的...原创 2020-02-10 10:43:00 · 96 阅读 · 0 评论 -
Java序列化如果有些字段不想被序列化(transient)
对于不想进行序列化的变量,使用transient关键字修饰。transient关键字的作用是:阻止实例中那些用此关键字修饰的的变量序列化;当对象被反序列化时,被transient修饰的变量值不会被持久化和恢复。transient只能修饰变量,不能修饰类和方法。...原创 2020-02-10 10:43:50 · 6097 阅读 · 0 评论 -
String和常量池
1、String 对象的两种创建方式:String str1 = "abcd";//先检查字符串常量池中有没有"abcd",如果字符串常量池中没有,则创建一个,然后 str1 指向字符串常量池中的对象,如果有,则直接将 str1 指向"abcd"";String str2 = new String("abcd");//堆中创建一个新的对象String str3 = new Strin...原创 2020-02-12 11:04:09 · 101 阅读 · 0 评论 -
==和equals的区别?
==: 它的作用是判断两个对象的地址是不是相等。即,判断两个对象是不是同一个对象。(基本数据类型==比较的是值,引用数据类型==比较的是内存地址)equals(): 它的作用也是判断两个对象是否相等。但它一般有两种使用情况: 情况 1:类没有覆盖 equals()方法。则通过 equals()比较该类的两个对象时,等价于通过“==”比较这两个对象。 情况 2:类覆盖...原创 2020-02-10 10:25:14 · 58 阅读 · 0 评论 -
Object类中有哪些方法?
Object 类是一个特殊的类,是所有类的父类。它主要提供了以下 11 个方法:public final native Class<?> getClass()//native方法,用于返回当前运行时对象的Class对象,使用了final关键字修饰,故不允许子类重写。public native int hashCode() //native方法,用于返回对象的哈希码,主要使用在哈...原创 2020-02-10 10:23:39 · 490 阅读 · 0 评论 -
JVM、JDK、JRE的区别?
JVM: Java虚拟机(JVM)是运行 Java 字节码的虚拟机。JVM有针对不同系统的特定实现(Windows,Linux,macOS),目的是使用相同的字节码,它们都会给出相同的结果。字节码和不同系统的 JVM 实现是 Java 语言“一次编译,随处可以运行”的关键所在。JDK: JDK是Java Development Kit,它是功能齐全的Java SD...原创 2020-02-10 10:19:01 · 141 阅读 · 0 评论 -
面向对象和面向过程的区别?
面向过程:面向过程性能比面向对象高。因为类调用时需要实例化,开销比较大,比较消耗资源,所以当性能是最重要的考量因素的时候,比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发。但是,面向过程没有面向对象易维护、易复用、易扩展。 面向对象:面向对象易维护、易复用、易扩展。因为面向对象有封装、继承、多态性的特性,所以可以设计出低耦合的系统,使系统更加...原创 2020-02-10 10:17:13 · 210 阅读 · 0 评论