java面试知识点

语法基础

什么是面向对象?

​ 面向对象就是将事务对象化、行为化、模块化,包括属性和行为。

优点:易维护、易复用、易扩展。

特性:封装、继承、多态、抽象

​ 封装:封装数据和操作,只对外暴露最简单的接口。

​ 继承:也是封装的手段,从已有的类得到继承信息并创建新类的过程

​ 多态:接口的多种不同的实现方式,包括方法重载(overload)–编译时多态、方法重写(override)–运行时多态

重载:在同一个类里,方法名相同,参数不同的情况。

重写:在继承的子类里,重写父类方法。

低耦合、高内聚。

在java中怎么跳出当前多重循环?

​ 在最外层循环前加一个标记,如outfor,然后用break outfor;可以跳出多重循环。

public class TestBreak {
    public static void main(String[] args) {
        outfor: for (int i = 0; i < 10; i++){
            for (int j = 0; j < 10; j++){
                if (j == 5){
                    break outfor;
                }
                System.out.println("j = " + j);
            }
        }
    }
}

JDK 和 JRE 有什么区别?

jre(java runtime enviroment ):java运行环境,是将要执行java程序的java虚拟机。

jdk(java development kit):java开发工具,包括jre,编译器和其他工具,可以开发、编译、执行java应用程序。

一般来说,如果只是运行java程序,安装jre完全就可以了,如果是代码的编写,编译则需要安装jdk。

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

不对,hashCode通过对象的内存地址(不止)计算出一个整数值,少数情况下,内存地址不同,这个整数值也有可能相同。

​ equels比较的是两个对象是否相同。

Aa和BB的hashCode相同,但是地址不同,反过来说就可以,equels相同,hashCode一定相同。

​ hashMap判断一个对象是否相等,首先判断hashCode是否相等,相同再比较equels,不相同,判定为相等。

final 在 java 中有什么作用?

是java中的关键字,可以用于三个地方。用于修饰类,类属性,类方法。

特性:凡是引用final关键字的地方皆不可修改!

  • 修饰类:该类不能被继承

  • 修饰方法:该方法不能被重写。

  • 修饰变量:该变量只能赋值一次,赋值一次不可修改。

    修饰基本数据类型,初始化后不可修改;修饰引用数据类型,指向的地址不发生变化,但是保存在内存地址的对象信息可以修改。

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

round()是Math类的四舍五入的方法。

不论正负,都是向数轴右侧入。

所以为-1。

Math类封装了很多与数学有关的属性和方法。

Math.sqrt(16);//平方根
Math.cbrt(8);//立方根
Math.hypot(3,4);//(x的平方+y的平方)的平方根

Math.pow(3,2);//计算a的b次方
Math.exp(3);//e^x的值

Math.max(2.3,4.5);
Math.min(2.3,4.5);

Math.ceil(-10.1);//-10.0返回大的值,不分正负,向数轴右侧取整。
Math.floor(-10.1);//-11.0返回小的值,不分正负,向数轴左侧取整。

Math.random();//	[0,-1)之间的随机数double

//四舍五入,向数轴右侧入。
Math.rint(10.1);//返回double
Math.round(-1.5);//float时返回int,double时返回long

String 属于基础的数据类型吗?

不是,String不是基本数据类型,是final修饰的java类,是引用数据类型。

java基本数据类型:byte,short,int,long,float,double,char,boolean。

引用数据类型:类,接口,数组,字符串,lambda。

== 和 equals 的区别是什么?

值类型是存储在内存中的栈中,引用类型的变量在栈中仅仅是存储引用变量的地址,本身存储在栈中。

==操作比较的是两个变量的值是否相同,对于引用变量表示存储在栈中的地址是否相同。

equels表示两个变量是否是同一个对象,即堆中的内容一致。

==比较的是两个对象的地址,equels比较的是两个对象的内容。

但是equals()可以被重写,所以我们在具体使用的时候需要关注equals()方法有没有被重写.

坑:

​ String的比较:String的值保存在字符串常量池中,当有相同的值的对象,就引用该对象(new一个的话,会重新创建),否则重新创建

​ 数据类型和封装类型(int和Integer):new两个Integer,为false,虽然会自动拆箱,但是比较的是两个对象的地址。equels比较的是两个对象,两边都不能是基本数据类型。

String str="i"与 String str=new String(“i”)一样吗?

不一样,因为内存的分配方式不一样。前者,java虚拟机回分配到常量池中(string时final修饰的累,即常量),后者则会被分配到堆内存中。

String x = “i” 的方式,Java 虚拟机会将其分配到常量池中,而常量池中没有重复的元素,比如当执行“i”时,java虚拟机会先在常量池中检索是否已经有“i”,如果有那么就将“i”的地址赋给变量,如果没有就创建一个,然后在赋给变量;而 String z = new String(“i”) 则会被分到堆内存中,即使内容一样还是会创建新的对象。

this() & super()在构造方法中的区别?

  • 调用super()必须写在子类构造方法的第一行, 否则编译不通过

  • super从子类调用父类构造, this在同一类中调用其他构造均需要放在第一行

  • 尽管可以用this调用一个构造器, 却不能调用2个

  • this和super不能出现在同一个构造器中, 否则编译不通过

  • this()、super()都指的对象,不可以在static环境中使用

    1. 访问属性或方法:

    this. 访问的是本类中的属性和方法,如果本类没有,向上访问父类的;

    super. 只能访问父类的属性和方法。

    1. 调用构造方法:

    调用本类的构造方法,this() 必须放在构造方法的首行;

    调用父类的构造方法,super() 必须放在子类构造方法的首行。

    1. 通常都知道 this指代当前对象,super指代父类对象。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
当然,我可以为您介绍一些Java面试中必备的知识点。以下是一些常见的Java面试题目及其答案: 1. 什么是JavaJava是一种面向对象的编程语言,具有跨平台性和可移植性。 2. Java的特点有哪些? - 简单易学:Java语法相对简单,与C++相比更易于学习和使用。 - 面向对象:Java支持面向对象的编程范式。 - 跨平台性:Java程序可以在不同的操作系统上运行。 - 安全性:Java提供了安全机制,如内存管理和异常处理。 - 多线程:Java支持多线程编程,可以实现并发操作。 3. 什么是面向对象编程? 面向对象编程(OOP)是一种编程范式,将数据和操作数据的方法封装在一起,形成对象。通过对象之间的交互和消息传递来实现程序的功能。 4. Java中的基本数据类型有哪些? Java中的基本数据类型包括:byte、short、int、long、float、double、char和boolean。 5. 什么是Java中的包(package)? 包是一种用于组织类和接口的机制,它将相关的类和接口放在一个命名空间下,以避免命名冲突。 6. Java中的访问修饰符有哪些? Java中的访问修饰符包括:public、protected、private和默认(即不写修饰符)。 7. 什么是Java中的多态性? 多态性是指同一类型的对象,在不同的情况下可以有不同的表现形式。在Java中,多态性通过继承和接口实现。 8. 什么是Java中的异常处理机制? 异常处理机制是一种用于处理程序运行时错误的机制。Java提供了try-catch-finally语句块来捕获和处理异常。 9. Java中的线程是什么?如何创建线程? 线程是程序执行的最小单位,可以同时执行多个线程来实现并发操作。在Java中,可以通过继承Thread类或实现Runnable接口来创建线程。 10. 什么是Java中的反射机制? 反射机制是指在运行时动态地获取类的信息并操作类的成员。通过反射,可以在运行时创建对象、调用方法和访问属性等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值