Day65 Java 基础知识点(1)

1. JDK 和 JRE 有什么区别?

  • JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境。
    • 其中的开发工具:编译工具(javac.exe)  打包工具(jar.exe)等
  • JRE:Java Runtime Environment 的简称,java 运行环境,为 java 的运行提供了所需环境。
    • 包括Java虚拟机(JVM Java Virtual Machine)(跨平台性)和Java程序所需的核心类库
  • 具体来说 JDK 其实包含了 JRE,同时还包含了 java 程序编译、打包、调试和分析的工具。
    简单来说:如果你需要运行 java 程序,只需安装 JRE 就可以了,如果你需要编写 java 程序,需要安装 JDK。

2. == 和 equals 的区别是什么?

  • “==”:基本数据类型:比较的是值
              引用数据类型:比较的是两个对象的地址值
  • equals方法:
          Object类的equals方法,默认比较的是两个对象的地址值,没有意义
          通常要重写equals方法,比较两个对象的属性
        (比如 String、基本类型包装类,等重写变成了值比较)
// Object.equals源代码
public boolean equals(Object obj) {
    return (this == obj);
}

代码示例: 

String x = "string";
String y = "string";
String z = new String("string");
System.out.println(x==y); // true
System.out.println(x==z); // false
System.out.println(x.equals(y)); // true
System.out.println(x.equals(z)); // true

Person p1 = new Person("小明");
Person p2 = new Person("小明");
System.out.println(p1.equals(p2)); // false

3. 两个对象的 hashCode()相同,则 equals()也一定为 true,对吗?

不对,两个对象的 hashCode()相同,equals()不一定 true。

代码示例:

String str1 = "通话";
String str2 = "重地";
System.out.println(String.format("str1:%d | str2:%d", 
                     str1.hashCode(),str2.hashCode())); //str1:1179395 | str2:1179395
System.out.println(str1.equals(str2)); //false

代码解读:很显然“通话”和“重地”的 hashCode() 相同,然而 equals() 则为 false,因为在散列表中,hashCode()相等即两个键值对的哈希值相等,然而哈希值相等,并不一定能得出键值对相等。

4. final 在 java 中有什么作用?

  • 关键字代表最终、不可改变的。

  • final 修饰的类叫最终类(太监类),该类不能被继承。

  • final 修饰的方法不能被重写。

  • final 修饰的变量叫常量,常量必须初始化,初始化之后值就不能被修改。

    • (普通变量数据不可变,引用变量地址值不可变)

5. java 中的 Math.round(-1.5) 等于多少?

  • public static double ceil(double num):向上取整。
  • public static double floor(double num):向下取整。
  • public static long round(double num):四舍五入。

Math.round(1.5)的返回值是2,Math.round(-1.5)的返回值是-1。四舍五入的原理是在参数上加0.5然后做向下取整。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值