Java教程

java基础面试题

本文主要是介绍java基础面试题,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1.标识符的命名规则

1. 标识符的含义:是指在程序中,我们自己定义的内容,譬如,类的名字,方法名称以及变量名称等等,都是标识符。

2. 命名规则:(硬性要求)

标识符可以包含英文字母,0-9的数字,$以及_标识符不能以数字开头标识符不是关键字

3. 命名规范:(非硬性要求)

类名规范:首字符大写,后面每个单词首字母大写(大驼峰式)。

变量名规范:首字母小写,后面每个单词首字母大写(小驼峰式)。

方法名规范:同变量名。

2、instanceof关键字的作用
instanceof 严格来说是Java中的一个双目运算符,用来测试一个对象是否为一个类的实例,用法为:

boolean result =obj instanceof Class

其中 obj 为一个对象,Class 表示一个类或者一个接口,

当 obj 为 Class 的对象,或者是其直接或间接子类,或者是其接口的实现类,结果result 都返回 true,否则返回false。

注意:编译器会检查 obj 是否能转换成右边的class类型,如果不能转换则直接报错,

如果不能确定类型,则通过编译,具体看运行时定。

int i=0;
System.out.println(i instanceof Integer);//编译不通过i必须是引用类型,不能是基本类型
System.out.println(i instanceof Object);//编译不通过
Integer integer=newInteger(1);
System.out.println(integer instanceof Integer);//true

System.out.println(null instanceof Object);//false,在JavaSE规范中对instanceof运算符的规定就是:如果obj为null,那么将返回false。

3、什么是隐式转换,什么是显式转换
 
显示转换就是类型强转,把一个大类型的数据强制赋值给小类型的数据;

隐式转换就是大范围的变量能够接受小范围的数据;

隐式转换和显式转换其实就是自动类型转换和强制类型转换。

 4、Char类型能不能转成int类型?能不能转化成string类型,能不能转成double类型
 
  Char在java中也是比较特殊的类型,它的int值从1开始,一共有2的16次方个数据;
  Char<int<long<float<double;Char类型可以隐式转成int,double类型,但是不能隐式转换成string;

如果char类型转成byte,short类型的时候,需要强转。


   5、什么是拆装箱?
 
1. 装箱就是自动将基本数据类型转换为包装器类型(int-->Integer);

调用方法:Integer的valueOf(int) 方法拆箱就是自动将包装器类型转换为基本数据类型(Integer-->int)。

调用方法:Integer的intValue方 法在Java SE5之前,如果要生成一个数值为10的Integer对象,必须这样进行:

Integer i=new Integer(10);
而在从Java SE5开始就提供了自动装箱的特性,如果要生成一个数值为10的Integer对象,只需要这样就可以了:

Integer i=10;

面试题1: 以下代码会输出什么?

public class Main { 
    public static void main(String[] args) { 
        Integer i1 = 100; 
        Integer i2 = 100; 
        Integer i3 = 200; 
        Integer i4 = 200; 
        System.out.println(i1==i2); 
        System.out.println(i3==i4); 
    }

}


结果:

true

false

 6、Java中的包装类都是那些?
 
  byte:Byte,short:Short,int:Integer,long:Long,float:Float,double:Double,char:Character ,boolean:Boolean

 7、一个java类中包含那些内容?
 
  属性、方法、内部类、构造方法、代码块。

 

 8、那针对浮点型数据运算出现的误差的问题,你怎么解决?
 
  使用Bigdecimal类进行浮点型数据的运算

 

 9、面向对象的特征有哪些方面?
 
抽象:
抽象是将一类对象的共同特征总结出来构造类的过程, 包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。

继承:
继承是从已有类得到继承信息创建新类的过程.提供继承信息的类被称为父类(超类、基类) ;得到继承信息的类被称为子类(派生类)。
继承让变化中的软件系统有了一定的延续性 ,同时继承也是封装程序中可变因素的重要手段(如果不能理解请阅读阎宏博土的《Java 与模式》或《设计模式精解》中.关于桥梁模式的部分)。
封装:
通常认为封装是把数据和操作数据的方法绑定起来,对数据的访问 只能通过已定义的接口。面向对象的本质就是将现实世界描绘成一系列完全自 治、封闭的对象。我们在类中编写的方法就是对实现细节的一种封装;我们编写 一个类就是对数据和数据操作的封装。
可以说,封装就是隐藏一切可隐藏的东西, 只向外界提供最简单的编程接口(可以想想普通洗衣机和全自动洗衣机的差别, 明显全自动洗衣机封装更好因此操作起来更简单;我们现在使用的智能手机也是 封装得足够好的,因为几个按键就搞定了所有的事情)。
多态性:
多态性是指允许不同子类型的对象对同一消息作出不同的响应。 
简单的说就是用同样的对象引用调用同样的方法但是做了不同的事情。多态性分 为编译时的多态性和运行时的多态性。如果将对象的方法视为对象向外界提供的 服务,那么运行时的多态性可以解释为:当 A 系统访问 B 系统提供的服务时,B 系统有多种提供服务的方式,但一切对 A 系统来说都是透明的(就像电动剃须 刀是 A 系统,它的供电系统是 B 系统,B 系统可以使用电池供电或者用交流电, 
甚至还有可能是太阳能,A 系统只会通过 B 类对象调用供电的方法,但并不知道 供电系统的底层实现是什么,究竟通过何种方式获得了动力)。
方法重载 (overload)实现的是编译时的多态性(也称为前绑定),

而方法重写(override) 实现的是运行时的多态性(也称为后绑定)。运行时的多态是面向对象最精髓的 东西,要实现多态需要做两件事:

1).方法重写(子类继承父类并重写父类中已 有的或抽象的方法);

2). 对象造型(用父类型引用引用子类型对象,这样同样 的引用调用同样的方法就会根据子类对象的不同而表现出不同的行为)。
10、访问修饰符 public,private,protected,以及不写(默认) 时的区别

类的成员不写访问修饰时默认为 default。默认对于同一个包中的其他类相当于公 开(public),对于不是同一个包中的其他类相当于私有(private)。受保护 (protected)对子类相当于公开,对不是同一包中的没有父子关系的类相当于私 有。Java 中,外部类的修饰符只能是 public 或默认,类的成员(包括内部类)的 修饰符可以是以上四种。

 

这篇关于java基础面试题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!