【JavaSE】Java(五十):核心要点

简介: 1. JDK 和 JRE 有什么区别JDK(Java Development Kit)和 JRE(Java Runtime Environment)是两个不同的软件包。它们共同提供了 Java 开发和运行时环境,但在功能和用途上存在一些区别。JRE 包含 Java 运行时环境,它只用于执行 Java 应用程序,而没有提供任何开发工具。JRE 包括 JVM(Java 虚拟机)、Java 标准类库、Java 插件等组件,用户可以利用 JRE 去运行已经编写好的 Java 应用程序。JDK 则是 Java 开发工具包,它除了包括 JRE 中的组件外,还提供了一系列的开发工具,例如编译器 j

1. JDK 和 JRE 有什么区别

JDK(Java Development Kit)和 JRE(Java Runtime Environment)是两个不同的软件包。它们共同提供了 Java 开发和运行时环境,但在功能和用途上存在一些区别。


JRE 包含 Java 运行时环境,它只用于执行 Java 应用程序,而没有提供任何开发工具。JRE 包括 JVM(Java 虚拟机)、Java 标准类库、Java 插件等组件,用户可以利用 JRE 去运行已经编写好的 Java 应用程序。


JDK 则是 Java 开发工具包,它除了包括 JRE 中的组件外,还提供了一系列的开发工具,例如编译器 javac、调试器 jdb、工具库 jdeps 等等。因此,JDK 可以被用来开发、测试和部署 Java 应用程序。


简单地说,JRE 是 Java 应用程序的运行时环境,而 JDK 是 Java 应用程序的开发环境。如果你只想运行 Java 应用程序,则只需要安装 JRE;如果你需要开发和调试 Java 应用程序,需要安装 JDK。

2. ==和 equals 的区别

在 Java 中,"=="和 “equals()” 都是比较对象的方法,但它们的功能和用法有所不同。


"==“是一个运算符,用于比较两个变量或表达式的值是否相等,如果相等则返回 true,否则返回 false。当使用”==“比较两个对象时,实际上比较的是这两个对象的内存地址是否相同。也就是说,”=="比较的是两个对象是否是同一个对象。


而 “equals()” 是 Object 类定义的方法,用于比较两个对象的内容是否相等。如果两个对象的内容一样,则返回 true,否则返回 false。默认情况下,Object 类中的 equals() 方法使用的是"=="比较两个对象的地址是否相同,因此如果你在自定义类中想要对 equals() 进行内容比较的话,就需要重写该方法,以比较对象的内容。


“==” 比较的是两个对象是否指向同一个内存地址,"equals()"比较的是两个对象的内容是否相等。


在大多数情况下,我们需要使用 equals() 方法来比较两个对象的内容,而不是使用“==”比较它们的内存地址。

3. final 在java中有什么作用

在 Java 中,关键字 final 用于表示一个不可变的对象、变量或方法。它可以被用来修饰类、方法和字段。


final 关键字修饰类:表示该类是一个最终类(或者称之为不可扩展类),即不能被其他类所继承。例如 String 类就是一个被 final 修饰的类。


final 关键字修饰方法:表示该方法不能被子类继承和重写。如果一个类被声明为 final,其中的所有方法都自动成为 final 方法(因为无法从这个类派生出子类来覆盖这些方法)。


final 关键字修饰变量:表示该变量只能赋值一次,然后就不能再改变。如果使用 final 关键字修饰了一个引用类型的变量,那么该变量的指向(即内存地址)不能改变,但是该变量中存储的对象本身是可以更改的。


除了以上作用以外,final 在多线程编程中也有重要的应用。当一个变量被声明为 final,意味着该变量对于所有的线程都是同步的,因此我们可以避免对其进行加锁等操作。


final 关键字用于表示一些不可变的概念,可以增强代码的安全性和可靠性。

4. Java中的Math() 类有哪些常用方法

在 Java 中,Math 类是一个系统提供的用于进行数学计算的类。它包含了许多数学运算的静态方法,例如:

abs():返回一个数的绝对值。
ceil():返回大于或等于指定 double 值的最小整数。
floor():返回小于或等于指定 double 值的最大整数。
round():返回最接近指定 double 值的 long 或 int,四舍五入。
max():返回两个数中的较大值。
min():返回两个数中的较小值。
pow(x,y):返回 x 的 y 次幂。
random():返回一个随机数,该随机数大于等于 0.0 且小于 1.0。

除了以上方法,Math 还包括了处理三角函数、指数、对数等高级运算的方法。


需要注意的是,由于 Math 中的所有方法都是静态方法,因此我们可以直接使用类名来调用这些方法,而不需要创建一个 Math 对象。


Math 类提供了一系列用于数学计算的静态方法,可以方便地完成各种数学计算操作。

5. String 属于基础数据类型吗?

String 不属于 Java 基础数据类型,而是 Java 中的一个类。Java 中的基础数据类型包括:整型(byte、short、int、long)、浮点型(float、double)、字符型(char)以及布尔型(boolean)这四种。


String 类是用来处理字符串的,它只是 Java 类库中提供的一个类,用来存储和操作字符串。在 Java 中,我们可以通过直接赋值或者调用构造函数创建字符串对象,例如:


String str1 = "Hello World"; // 直接赋值方式创建 String 对象

String str2 = new String("Hello World"); // 通过 String 类的构造函数创建对象

1

2

需要注意的是,String 类是被 final 修饰的,即该类不能被继承。同时,由于 String 类是一个非基础数据类型的类,因此在进行字符串比较时,应该使用 equals() 方法来比较内容是否相等,而不是使用 == 运算符。


String 不是 Java 中的基础数据类型,而是一个用来处理字符串的类。它可以方便地实现对字符串的各种操作。

相关文章
|
2天前
|
存储 Java 测试技术
滚雪球学Java(18):解密JavaSE中的堆栈:你真的了解Java内存吗?
【4月更文挑战第7天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
43 1
滚雪球学Java(18):解密JavaSE中的堆栈:你真的了解Java内存吗?
|
2天前
|
安全 Java 调度
【Java】JavaSE实现多线程
【Java】JavaSE实现多线程
61 1
|
2天前
|
Java C++ 索引
【Java】JavaSE基础知识
【Java】JavaSE基础知识
112 0
|
2天前
|
Java
滚雪球学Java(17):探索循环控制:JavaSE中的break与continue秘技
【4月更文挑战第6天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
35 1
滚雪球学Java(17):探索循环控制:JavaSE中的break与continue秘技
|
2天前
|
Java 程序员 编译器
JavaSE&Java8 Lambda 表达式
JavaSE&Java8 Lambda 表达式
|
2天前
|
存储 Java 程序员
JavaSE&Java的异常
JavaSE&Java的异常
26 0
|
2天前
|
存储 安全 Java
滚雪球学Java(19):JavaSE中的内存管理:你所不知道的秘密
【4月更文挑战第8天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
40 4
滚雪球学Java(19):JavaSE中的内存管理:你所不知道的秘密
|
2天前
|
存储 Java 测试技术
滚雪球学Java(11):高效编程之道:精通JavaSE顺序结构的关键技巧
【2月更文挑战第23天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,助你一臂之力,带你早日登顶🚀,欢迎大家关注&&收藏!持续更新中,up!up!up!!
43 2
|
2天前
|
存储 编解码 移动开发
【Java】JavaSE的IO流操作
【Java】JavaSE的IO流操作
59 0
|
2天前
|
Java 大数据
Java大数据面试复习30天冲刺 - 日积月累,每日五题【Day04】——JavaSE
Java大数据面试复习30天冲刺 - 日积月累,每日五题【Day04】——JavaSE
39 0