JavaSE面试题(01)

前言:本篇博客是很久之前写的,内容较为基础也不够全面,原本想删除整理,看有几个人收藏,就
放这不动了,更全面的高频问题在这篇博客里有总结java高频面试题总结

1、JDK包含了JRE,JRE里面又包含了JVM!(jdk是sdk的一种子集)
2、什么是跨平台性?原理是什么?
跨平台性指,用java语言编写的程序,一次编译后,可以在多个平台上运行。
实现原理:java程序是通过java虚拟机在平台上运行的,只要在该系统安装相应的java虚拟机,该系统就可以运行java程序(像之前就是在Linux上安装了jdk)
3、什么是字节码?采用字节码的好处是什么?
在java中供虚拟机理解的代码就叫做字节码,因为字节码并不专对一种特定的机器,因此,Java程序无须重新编译便可在多种不同的计算机上运行。(使用IDEA运行后,在target目录下生成的文件就是.class字节码文件,有时可能会因为依赖冲突以及缓存等问题导致报错,大胆删了.class文件重新运行,idea会重新生成新的字节码文件)
4、java和C++的区别?
都是面向对象的语言,都支持封装,继承,多态
Java不提供指针来直接访问内存,程序内存更安全
java的类是单继承,C++支持多重继承,java的接口可以多继承
java有自动内存管理机制,不需要程序员手动释放无用内存。
5、final有什么用?
用于修饰类,方法,变量
被final修饰的类不能被继承
被final修饰的方法不能被重写
被final修饰的变量不可以被改变
6、final、finally、finalize的区别
final修饰类、方法、变量
finally用于try-catch代码块,不论是否出现异常,最后都会执行,一般用来存放一些关闭资源的代码
finalize是Object类的一个方法,一般由垃圾回收器来调用,判断一个对象是否可回收的最后判断
7、this、super关键字的用法及两者间的区别
一)this是自身的一个对象(即类实体化),可以理解为指向对象本身的一个指针。最常用法3种:
1)普通的直接引用,this相当于指向当前对象本身,如this.name
2)形参和成员变量重名,用this区分:如
Public Person(String name){
this.name=name; //前面的this指的是成员变量,后面的name则是传入的形参 }
3)引用本类的构造方法----空参有参构造!如:
this();//调用本类中的无参构造
this(name);//调用本类中的有参构造

二)super:可以理解为指向自己父类对象的一个指针(离自己最近的一个父类),常用3种:
1)普通的引用,如super.xxx来引用父类成员
2)子类和父类的成员变量/方法同名时,用super进行区分
3)引用父类构造函数(构造方法中的第一条语句)

三)this和super的区别
1)从本质上讲,this是一个指向本对象的指针,super则是一个关键字
2)this和super不能出现在一个构造函数里面,因为this必然会调用其他的构造函数!
3)super()在子类中调用调用父类的构造方法,this()在本类调用本类的其他构造方法
8、static关键字
作用:用来形成静态代码块以优化程序性能,static块之所以可以优化性能,是因为它只会在类加载的时候执行一次!
独特之处:被static修饰的变量或方法随着类的加载而加载,优先于对象存在
常用场景:修饰成员变量、方法、静态代码、修饰类
注意事项:静态只能访问静态;非静态既可访问非静态,也可访问静态。静态方法中没有this关键字。
9、break、continue、return的区别和作用
break:结束当前循环,执行整个循环体后面的程序,如:

public static void main(String[] args) {
        for(int i=0; i<10; i++){
            if(i==5){
               break;
            }
            System.out.print(i+" ");       //0 1 2 3 4 
        }
    }

continue:跳出本次循环(本次循环后面的代码不执行),继续执行下次循环

public static void main(String[] args) {
        for(int i=0; i<10; i++){
            if(i==5){
            continue;
            }
            System.out.print(i+" ");       //0 1 2 3 4 6 7 8 9
        }
    }

return:程序返回,不再执行下面的代码

10、 ==和equals区别?
==:
基本类型(四类8种):对比它们的值是否相等
引用类型(非基本类型的都是):对比它们的内存地址是否相等
equals:
本质上就是 = =;equals 默认情况下是引用比较,只是很多类重写了 equals 方法,比如 String、Integer

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值