JavaOOP面试题1
short s1 = 1; s1 = s1 + 1;有错吗? short s1 = 1; s1 += 1; 有错吗?
short s1=1;
s1=s1+1;
错误,因为1是int类型,
正确转换的方式是
s1=(short) (s1+1);
short s1=1;s1 +=1;
正确,因为+=计算时候其中有一个强制转换的过程
重载和重写的区别?
重载:重载指的是多个方法,方法名一致,但是参数不一致;重写:指的是子类重写父类的方法,但是参数必须和父类的参数一致
数组实例化有几种方式?
(1)添加数组项(使用push()将一个或者多个元素添加到数组的末尾,并返回该数组的新长度,unshift()方法将一个或者多个元素添加到数组的开头,并返回该数组的新长度,该方法修改原有数组,splice()方法通过删除或者替换现有的元素或者原地添加新元素来修改数组,并以数组形式返回被修改的内容,此方法会改变原数组);
(2)删除数组项(使用pop()方法从数组中删除最后一个元素,并返回该元素的值,此方法更改数组的长度, shift()方法从数组中删除第一个元素,并返回该元素的值,splice()从指定下标位置开始,删除指定数量);
(3)截取数组项(slice);
(4)indexOf()方法返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1;
(5)遍历相关的实例方法sort()方法,用原地算法对数组的元素进行排序,并且返回数组,默认排序顺序是在将元素转换为字符串,然后比较他们的utf-16代码单元值序列时构建的;fill()方法用一个固定值填充一个数组中从起始索引到终止索引内的全部元素,不包括终止索引;foreach()方法对数组的没个元素执行一次给定的函数;map()方法创建一个新数组,其结果时该数组中的每个元素是调用一次提供的函数后的返回值;filter()方法创建一个新的数组,其包含通过所提供函数实现的测试的所有元素。
Java中各种数据默认值?
Java中有八种数据类型,分别是byte默认值是0,short默认是0,int默认值是0,long默认值是0,float默认值是0.0,double默认值是0.0,boolean默认值是false,char默认值是\u0000
Object类常用方法有那些?
1)toString()方法当你打印一个对象的时候他回去直接调用这个对象的toString方法,当打印这个对象的时候,是得到一个类的名称+@把一个hashcode的值转成16进制的数字,如果重写了父类的toString 方法的话会调用重写的toString方法
(2)克隆方法clone()这个方法是不能直接调用的,直接调用不上clone方法,因为他是一个native的方法,是一个保护类型的方法,这个方法只能由子类对象去调用父类Object的clone
(3)finalize()保护类型的方法,经常会在这个方法里面做一些文件的操作,对象的拷贝,销毁
(4)equals方法,这个方法是比较两个对象内存地址是否相同,如果内容地址不相同,就会认为这两个对象不相同
java中是值传递引用传递?
这个问题首先我们要了解什么是值传递,什么是引用传递
值传递:在方法调用的时候,实参是将自己的一份拷贝赋值给形参,在方法内,对该参数值的修改不影响原来的实参
引用传递,指的是在方法调用的时候,将自己的地址传送给形参,此时,方法内对该参数值的改变是对实参的实际操作
在Java中,我们都是拷贝赋值给形参,所以Java中只有值传递
形参和实参的区别?
形参变量只有在被调用时才分配内存单元,在调用结束时,会释放所分配的内存单元,所以形参只能在函数内部才有效;实参是:常量,变量,表达式,函数邓,实参是何种类型的两,当开始在进行函数调用时,都必须有确定的值;实参和形参,在数量,类型上和顺序上必须严格的一致,不然就会发生类型不匹配;在一般传值调用的机制中,只能把实参传送给形参,因此,在函数调用过程中, 形参值发生改变,而实参的值不会发生变化
构造方法能不能重写?能不能重载?
构造方法不能被重写,但是可以被重载,因为重写是发生在父类被子类继承时候,要求方法名以及方法内的参数一致,而构造方法名称和类名相同的,而子类类名不会和父类类名相同,所以构造方法不能被重写
内部类与静态内部类的区别?
内部类:定义在一个类内部的类叫做内部类,包含内部类的类称为外部类,内部类可以声明public,protected,private等访问限制,可以声明为abstract的供气态内部类或外部类继承与扩张,或者声明static,final的,也可以实现特定接口,外部类按常规的类访问方式使用内部类,唯一的差别是外部类可以访问内部类所有的方法与属性,包括私有方法与属性
Static关键字有什么作用
static关键字主要有两种作用,第一,为了某个特定数据类型或者对象分配单一的存储空间,而与创建对象的个数无关,第二,实现某个方法或者属性与类而不是对象关联在一起,也就是说在不创建对象情况下,就可以通过类来直接调用方法或者使用类的属性,在Java语言中,static主要有四种使用情况:成员变量,成员方法,代码块以及内部类
final在Java中的作用有哪些?
final修饰类:被final修饰的类不能被其他类所继承,例如String类,System类,String Buffer类
final修饰方法:被final修饰的方法,不能被重写,比如object类中的getClass()
final修饰变量:此时的变量就被称为是一个常量,final修饰属性,可以考虑赋值的位置有:显示初始化,代码块中初始化,构造器中初始化,final修饰局部变量,尤其是使用final修饰形参,表明此形参是一个常量,我们调用此方法时,给常量形参赋值一个实参,一旦赋值以后,就只能在方法体内使用此形参,但是不能进行重新赋值
String str=“aaa”,与String str = new String(“aaa”)一样吗?
不一样,因为,两个的内存分配方式不一样,String str ="aaa"会被Java虚拟机分配到常量池中,而 new String(“aaa”)会被分配到一堆的内存中
java中的math类有哪些常用方法?
(1.abs()该方法用于计算绝对值
(2.sqrt()该方法用于计算方根
(3.ceil()该方法用于向上取整
(4.floor()该方法用于向下取整
(5.round()该方法用于计算小数进行四舍五入的结果
(6.max(),min()用于计算两个数的较大值(较小值)
(7.random()该方法用于生成一个大于0.0小于1.0的随机值
(8.pow()该方法用于计算指数函数的值
Char类型能不能转换成int类型?能不能转换成String类型,能不能转成double类型
char他的int值从1开始,一共有2的16次方个数据:char<int<long<float<double
char类型可以隐形式转成int,double类型,但是不能转换成string类型
如果char类型转成byte,short类型的时候,需要进行强转
什么是拆装箱
拆箱: 把包装类型转成基本数据类型
装箱:把基本数据类型转成包装类型
java中的包装类都是那些
Java中有八个包装类,对应八大基本类型:
byte的包装类是Byte,short的包装类是Short,int的包装类是Integer,long的包装类是Long,float的包装类是Float,double的包装类是Double,boolean的包装类是Boolean,char的包装类是Chararcter
Java类中包含那些内容
Java中类包含的内容可以有:属性,方法,内部类,构造方法,代码块
那些针对浮点型数据运算出现的误差的问题要怎么解决
使用Bigdecimal类进行浮点型数据的运算
面向对象的特征有哪些方面
面向对象的特征有:封装,继承,抽象,多态
访问修饰符public,private,protected,以及不写(默认)时的区别
public公有类,可以在当前类,同包,子类,其他包中进行调用;private私有类,只能被当前类中进行调用,不可以被其他类,子类进行调用;protected受保护类,可以在当前类,同包,以及子类进行调用,不能被其他包进行调用,不写的情况下,可以被当前类,以及同包类进行调用,不能被子类其他包的类进行调用