java基础面试题1
2023-12-26 23:36:45
    		 
 1 
 、面向对象的特征有哪些方面?  
 
 
 继承:继承是从已有类得到继承信息创建新类的过程。提供继承信息的类被称为父类(超  
 
 
 类、基类);得到继承信息的类被称为子类(派生类)。继承让变化中的软件系统有了一定  
 
 
 的延续性。  
 
 
 封装:通常认为封装是把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义的  
 
 
 接口。可以说,封装就是隐藏一切可隐藏的东西,只向外界提供最简单的编程接口  
 
 
 多态性:多态性是指允许不同子类型的对象对同一消息作出不同的响应。简单的说就是用同  
 
 
 样的对象引用调用同样的方法但是做了不同的事情。多态存在的条件有三个:继承或者实现  
 
 
 关系,方法重写,子类对象指向父类引用。  
 
 
 2 
 、访问修饰符  
 public,private,protected, 
 以及不写(默认)时的区别?  
 
 
 private 
 修饰符:可用来修饰内部类、属性、方法,即被 
 private 
 修饰的属性、方法、类只能  
 
 
 被该类的对象访问,其子类不能访问, 
 private 
 可以修饰内部类,不可以修饰外部类。  
 
 
 default 
 修饰符:当定义变量、方法以及类时,没有写访问修饰符,则代表默认的修饰符  
 
 
 default 
 , 
 default 
 修饰的属性、方法、类,只能被本类或者同一个包中的其他类访问到,针  
 
 
 对本包访问而设计,任何处于本包下的属性、方法、类、接口等,都可以相互访问。在接口  
 
 
 中,方法默认的访问修饰符是 
 public  
 
 
 protected 
 修饰符:表示受保护的,它主要的作用是保护子类,子类可以用它修饰的成员,  
 
 
 其他的不可以  
 
 
 public 
 修饰符:表示公开的,公共的。不同类、不同包下都可以访问  
 
 
 3 
 、 
 String  
 是最基本的数据类型吗?  
 
 
 不是。 
 Java  
 中的基本数据类型只有  
 8  
 个: 
 byte 
 、 
 short 
 、 
 int 
 、 
 long 
 、 
 float 
 、 
 double 
 、 
 char 
 、  
 
 
 boolean 
 ;除了基本类型( 
 primitive type 
 ),剩下的都是引用类型( 
 referencetype 
 )。  
 
 
 4  
 是否可以继承  
 String  
 类?  
 
 
 String  
 类是  
 final  
 类,不可以被继承 
 5 final 
 、 
 finally 
 、 
 finalize 
 的区别  
 
 
 final 
 的用法:  
 
 
 被 
 final 
 修饰的类不可以被继承  
 
 
 被 
 final 
 修饰的方法不可以被重写  
 
 
 被 
 final 
 修饰的变量不可以被改变 
 , 
 如果修饰引用 
 , 
 那么表示引用不可变 
 , 
 引用指向的内  
 
 
 容可变 
 .  
 
 
 finally 
 的用法:  
 
 
 finally 
 是在异常处理中的使用的  
 
 
 不管有没有出现异常 
 ,finally 
 块中的代码都会执行 
 ;  
 
 
 当 
 try 
 和 
 catch 
 中有 
 return 
 时 
 ,finally 
 仍然会执行 
 ;  
 
 
 6 String  
 和  
 StringBuilder 
 、 
 StringBuffer  
 的区别?  
 
 
 1 
 、 
 String 
 类的内容是不可改变的。能改变的只是其内存指向。  
 
 
 2 
 、 
 String 
 对象不可修改指的是对象本身不可修改,而不是引用不可修改。  
 
 
 3 
 、 
 StringBuffer 
 类的对象内容是可以修改的。  
 
 
 4 
 、 
 String 
 可以直接通过赋值的方式实现对象实例化,而 
 StringBuffer 
 只能通过构造方法的方  
 
 
 式对象实例化。  
 
 
 5 
 、 
 StringBuffer 
 在处理字符串的时候,不会生成新的对象。从内存这个角度来说,  
 
 
 StringBuffer 
 要比 
 String 
 更好。  
 
 
 6 
 、 
 StringBuffer 
 是线程安全的,速度慢。  
 
 
 7 
 、 
 StringBuilder 
 是线程不安全的,不能同步访问,执行速度快。  
 
 
 7  
 重载和重写的区别  
 
 
 重载 
 (overloading)  
 是在一个类里面,方法名字相同,而参数不同。返回值类型可以相同也  
 
 
 可以不同  
 
 
 重写是子类对父类的允许访问的方法的实现过程进行重新编写 
 ,  
 返回值和形参都不能改变。  
 
 
 8  
 抽象类( 
 abstract class 
 )和接口( 
 interface 
 )有什么异同? 
 抽象类和接口都不能够实例化,但可以定义抽象类和接口类型的引用。一个类如果继承了某  
 
 
 个抽象类或者实现了某个接口都需要对其中的抽象方法全部进行实现,否则该类仍然需要被  
 
 
 声明为抽象类。接口比抽象类更加抽象,因为抽象类中可以定义构造器,可以有抽象方法和  
 
 
 具体方法,而接口中不能定义构造器而且其中的方法全部都是抽象方法。抽象类中的成员可  
 
 
 以是  
 private 
 、默认、 
 protected 
 、 
 public  
 的,而接口中的成员全都是  
 public  
 的。抽象类中可  
 
 
 以定义成员变量,而接口中定义的成员变量实际上都是常量。有抽象方法的类必须被声明为  
 
 
 抽象类,而抽象类未必要有抽象方法。  
 
 
 9  
 静态变量和实例变量的区别。(被 
 static 
 修饰的变量和普通变量的区别)  
 
 
 静态变量是被  
 static  
 修饰符修饰的变量,也称为类变量,它属于类,不属于类的任何一个对  
 
 
 象,一个类不管创建多少个对象,静态变量在内存中有且仅有一个拷贝;实例变量必须依存  
 
 
 于某一实例,需要先创建对象然后通过对象才能访问到它。静态变量可以实现让多个对象共  
 
 
 享内存。  
 
 
 10 throw 
 和 
 throws 
 的作用  
 
 
 在  
 Java  
 中,当程序发生异常时,可以使用  
 throw  
 关键字来抛出异常对象。 
 throw  
 语句的格  
 
 
 式为: 
 throw new  
 异常类名称 
 ( 
 构造函数参数 
 );  
 
 
 Java  
 中的  
 throws  
 关键字用于声明可能会抛出哪些异常,它只是在方法签名中声明了方法可  
 
 
 能抛出的异常,而并未实际抛出异常。 
 throws  
 语句的格式为:  
 
 
 修饰符 返回类型 方法名 
 ( 
 参数列表 
 ) throws  
 异常列表  
 {  
 
 
 //  
 方法体  
 
 
 }  
 
 
 11  
 编译异常和运行异常  
 
 
 运行时异常: 都是 
 RuntimeException 
 类及其子类异常,这些异常是不检查异常,程序中可  
 
 
 以选择捕获处理,也可以不处理。这些异常一般是由程序逻辑错误引起的,程序应该从逻辑  
 
 
 角度尽可能避免这类异常的发生。  
 
 
 常见的运行异常:  
 
 
 NullPointerException( 
 空指针异常 
 )  
 
 
 IndexOutOfBoundsException( 
 下标越界异常 
 )  
 
 
 ClassNotFoundException  
 (指定的类不存在)  
 
 
 NoSuchMethodError ( 
 方法不存在错误 
 ) 
 NumberFormatException ( 
 数字格式异常 
 )  
 
 
 ArrithmeticException( 
 算数异常)  
 
 
 编译异常: 是 
 RuntimeException 
 以外的异常,类型上都属于 
 Exception 
 类及其子类。从程序  
 
 
 语法角度讲是必须进行处理的异常,如果不处理,程序就不能编译通过。  
 
 
 常见的编译异常:  
 
 
 IOException 
 (包括 
 FileNotFoundException 
 )  
 
 
 SQLException 
    		
    			文章来源:https://blog.csdn.net/weixin_64822448/article/details/135232012
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
    	本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!