0
点赞
收藏
分享

微信扫一扫

面试官:上次我们的Java基础还没说完

悄然丝语 2022-03-24 阅读 22
java

面试官:上次我们的Java基础还没说完

文章目录

1、JDK、JRE、JVM有什么区别?

JDK(Java Development Kit):针对Java程序员的产品,Java程序开发包。(JDK面向开发人员,就是一个工具库)

JRE(Java Runtime Environment):是运行Java的环境集合,提供Java的

标准实现和基本类库。(JRE只看的懂字节码,看不懂.java的文件)

JVM:Java虚拟机用于运行Java字节码文件,跨平台的核心。

2、常用数字类型的区别?

image-20220322085528075

3、Float在JVM的表达方式?

image-20220322090426817

打印结果为:d1 == d2

float类型在内存中的存储形式为科学计数法,表达为:4.2343242E7

d2用科学计数法表示同样为4.2343242E7,因此d1 == d2

4、面向对象三大特性是什么

封装:把数据和操作数据的方法封装起来,对数据的访问只能通过已经定义的接口

封装的好处

  1. 实现专业的分工
  2. 减少代码耦合
  3. 可以自由修改类的内部结构

继承:继承是从已有类得到继承信息创建新类的过程。提供继承信息的类北城为父类(超类/基类),得到继承信息的被称为子类(派生类)。

接口与接口类有哪些异同?

相同点不同点
都是上层的抽象抽象类可包含方法的实现,接口则只能包含方法的声明
不能被实例化继承类只能继承一个抽象类实现类可以实现多个接口
都可以包含抽象方法抽象级别:接口>抽象类>实现类
作用不同:接口用于约束程序行为,继承则用于代码复用

多态:多态是同一个行为具有多个不同表现形式或形态的能力,多态是同一个接口,使用不同的实例而执行不同操作。

5、静态和实例变量(方法)的区别?

语法区别:静态变量前要加static关键字,实例则不用

隶属区别:实例变量属于某个对象的属性,而静态属于类

运行区别:静态变量在JVM加载类自己创建,实例变量在实例化对象时创建

存储位置:静态变量存储在方法区,不发生垃圾回收,实例变量存储在堆中,发生垃圾回收

6、说一下类的执行顺序

1、静态优先

2、父类优先

3、非静态块优先于构造函数

7、String与字符串常量池,做个题

	 String s1 = "abc";//指向常量池的abc,内存地址与s2相等
     String s2 = "abc";//指向常量池的abc,内存地址与s1相等
     String s3 = "abc" + "def";//指向常量池的abcdef,内存地址与s4相等
     String s4 = "abcdef";//指向常量池的abcdef,内存地址与s3相等
     String s5 = s2 + "def";//会产生新的内存地址
     String s6 = new String("abc");//创建的字符串对象,不在常量池
        System.out.println(s1 == s2);//true
        System.out.println(s3 == s4);//true
        System.out.println(s4 == s5);//false
        System.out.println(s4.equals(s5));//比较内容,返回true
        System.out.println(s1 == s6);//false

8、String、StringBuilder、StringBuffer的区别?

StringStringBufferStringBuilder
执行速度最差其次最高
线程安全线程安全线程安全线程不安全
使用场景少量字符串操作多线程环境下的大量操作单线程环境下的大量操作

9、Object类hashCode()和equals()的区别?

equals()方法用来判断两个对象是否“相同”

hashCode()返回一个int,代表“将该对象的内部地址”

序号描述
1两个对象如果equals()成立,hashcode()一定成立
2如果equals()不成立,hashcode()可能成立
3如果hashcode()成立,equals()不一定成立
4hashcode()不相等,equals()一定不成立

10、Java IO中有几种类型的流

输入流输出流
字节流InputStream、FileInputStream、BufferedInputStreamOutputStream、FileOutputStream、BufferedOutputStream
字符流Reader、FileReader、InputStreamReader、BufferedReaderWriter、FileWriter、OutputStreamWriter、BufferedWriter

11、利用IO实现文件复制

		File source = new File("d:/WinSCP.rar");
        File target = new File("d:/VUE/WinSCP.rar");
        InputStream input = null;
        OutputStream output = null;
        try {
            input = new FileInputStream(source);
            output = new FileOutputStream(target);
            byte[] buf = new byte[1024];
            int byteRead;
            while((byteRead = input.read(buf)) != -1){
                output.write(buf,0,byteRead);
            }
        }catch (FileNotFoundException e){
            e.printStackTrace();
        }catch (IOException e){
            e.printStackTrace();
        }
举报

相关推荐

0 条评论