Java基础--经典问题--知识点

1.JDK 和 JRE 的区别

JDK包含JRE。JDK用于开发,JRE用于运行

JDK(Java Development Kit)是Java开发工具包,用于开发编译java程序。它包含了编译器调试器等开发工具,以及Java的类库

JRE(ava Runtime Environment)是Java运行时环境,用于运行已编译的Java程序。它包含Java虚拟机(JVM)运行时类库

2.“==”和equals()方法的区别和联系

"=="是运算符,而"equals()"是方法。

对于基本数据类型,"==“比较的是它们的值是否相等,而equals()不能用于基本数据类型的比较。

对于引用数据类型,”=="比较的是它们在内存中地址是否相等,而"equals()"方法比较的是对象的内容是否相等。

在类中,如果equals()方法没有重写默认情况下equals()方法与"=="运算符是相同的重写equals()方法可以实现自定义比较逻辑

Interger在常量池中的范围-128~127

3.hashcode()和 equals() 的关系

在Java中,hashCode()和equals()方法用于判断对象是否相等。

1.如果两个对象通过equals()比较相等,它们的hashCode()必须相同;但hashCode()相同,不保证对象一定相等(可能哈希冲突)。

2.hashCode()通常比equals()高效。

3.重写equals()时,也应重写hashCode()以保持一致性。

这两个方法的正确实现对集合操作很重要。

4.final 在java 中的作用

final关键字在java中,可以优化代码执行效率。

final关键字可以修饰变量、方法和类。

修饰变量时,该变量是只能被赋值一次常量

修饰方法时,该方法不能被子类重写

修饰类时,该类不能被继承

5.Math.round(-1.5)的结果是?

Math.round(-1.5)结果是-1,该方法对小数四舍五入,-1.5四舍五入之后是-1。

6.Sring属于基本数据类型吗?Java中数据类型有哪些?

String不属于基本数据类型,它是对象。

数据类型分为 基本数据类型和引用数据类型。

1.基本数据类型:分为四类八种

整型byte(1字节,-27 ~ 27-1)、short(2字节,-215 ~ 215-1)、

int(4字节,-231 ~ 231-1)、long(8字节,-263 ~ 263-1)

浮点型float(4字节,-2128 ~ 2128)、double(8字节,-21024 ~ 21024)

布尔型boolean(1字节)

字符型char(2字节)

2.引用数据类型:(数组接口枚举

7.Java 中操作字符串都有哪些类?它们之间有什么区别?

String\StringBuffer\StringBuilder 三者之间的区别 (必会)

操作字符串StringStringBuilderStringBuffer

String是不可变的,每次修改都会生成新的String对象(指针也会指向它),适合不经常修改的情况。

StringBuilder和StringBuffer是可变的,可以在原有对象的基础上操作。

StringBuffer 和 StringBuilder 最大的区别在于,StringBuffer 是线程安全的,而 StringBuilder 是非线程安全的,但 StringBuilder 的性能却高于 StringBuffer,所以StringBuilder适用于单线程环境,而StringBuffer适用于多线程环境

8. String str="i" 和 String str=new String("i") 一样吗?区别?

直接为String对象赋值和创建一个String对象的区别:

不一样,因为内存的分配方式不一样。

String str="i"的方式,Java 虚拟机会将其分配到常量池中;如果池中已存在则返回引用,否则创建新引用。

而 String str=new String("i") 则会被分到堆内存中。不论池中是否已存在相同字符串。

(首先在方法区加载这个类,然后再堆内存中创建对象,进行属性的初始化,不管池中是否存在相同的对象都会创建。)

对象创建流程:p对象(p引用指向的这个对象)

流程步骤:堆里放着的是对象

栈里的p就是对象的引用/对象名(好比一个人有多个名字,栈---代名词)

Person p = new Person("小倩",20);:

第一步:先在方法区加载Person类

第二步:new: 先在 堆 里面开辟带有地址的一个空间

第三步:先对属性默认初始化 看Person类里有几个属性(age 0,name null)

然后显示的初始化,Person类里有对age赋值(age 90,name null)引用数据类型不能直接存放在栈中,基本数据类型可以。

第四步:Person("小倩",20) 对构造器(对 对象的初始化,而不是创建对象)进行处理

①把构造器里的形参与实参对应,把小倩给n,最后给name属性。

此时,在方法区的常量池里开辟一个空间有一个地址,小倩就放在这里。

与此同时堆里面对应的 属性地址 里的name属性 的属性值 就有一个对应的地址,此时这个地址就指向它。

就把name的null 换成小倩了。

同比:

把20传给a,a赋给age,此时age就换成了20。

第五步:new Person("小倩",20)加载完成后

在栈里开辟空间时 空间里放着p

把堆里的地址返回给p,p就是对象的引用

p就指向了堆里的对应的空间

9.如何将字符串反转?

使用StringBuilder或者StringBufferreverse()方法。

10. string 常用的方法有哪些?(必会)

  1. indexOf():返回指定字符的索引。
  2. charAt():返回指定索引处的字符。
  3. replace():字符串替换。
  4. trim():去除字符串两端空白。
  5. split():分割字符串 ,返回一个分割后的字符串数组。左闭右开。
  6. getBytes():返回字符串的 byte 类型数组。
  7. length():返回字符串长度。
  8. toLowerCase():将字符串转成小写字母。
  9. toUpperCase():将字符串转成大写字母。
  10. substring():截取字符串。
  11. equals():字符串比较 。
  12. concat():连接字符串。

11.普通类和抽象类有哪些区别?

普通类可以(实例化)创建对象。而抽象类只能被继承

普通类不能包含抽象方法,抽象类有抽象和 非抽象的方法。

子类继承普通类时,可以不需要实现父类的方法。而继承抽象类时必须实现父类的抽象方法。

12.抽象类能使用 final 修饰吗?

final 不能修饰抽象类,定义抽象类就是让其他类继承的,如果定义为 final 该类就不能被继承,这样彼此就会产生矛盾,编辑器也会提示错误信息。

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

接口、抽象类 都是用来 实现多态 制定规范 的。

区别有:

一个类只能继承一个抽象类,但可以实现多个接口

抽象类可以有 构造方法、 抽象非抽象的方法,接口只能有抽象方法。

抽象类中的方法可以有任意修饰符,而接口中的方法默认使用public修饰。

14.java中IO流分为几种?

功能来分:输入流(input)、输出流(output)。

类型来分:字节流字符流

字节流和字符流的区别是:

字节流按 8 位传输以字节为单位输入输出数据,

字符流按 16 位传输以字符为单位输入输出数据。

15.BIO、NIO、AIO 有什么区别?

  • BIO:Block IO 同步阻塞式 IO,就是我们平常使用的传统 IO,

它的特点是模式简单 使用方便并发处理能力

  • NIO:Non IO 同步非阻塞 IO,是传统 IO 的升级,

客户端服务器端通过 Channel(通道通讯,实现了多路复用

  • AIO:Asynchronous IO 是 NIO 的升级,也叫 NIO2,

实现了异步非堵塞 IO ,

异步 IO 的操作基于事件回调机制

16.Files的常用方法有哪些?

Files类是java.nio.file包下用于操作文件目录工具类

  1. Files. exists():检测文件路径是否存在。
  2. Files. createFile():创建文件。
  3. Files. createDirectory():创建文件夹。
  4. Files. delete():删除一个文件或目录。
  5. Files. copy():复制文件。
  6. Files. move():移动文件。
  7. Files. size():查看文件个数。
  8. Files. read():读取文件
  9. Files.write():写入文件
  • 15
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值