Day1 java面试11小题

1.String是最基本的数据类型吗?
答:String不是最基本的数据类型,基本的数据类型只有8个:byte、short、int、long、char、float、double、boolean; 除了基本的数据类型,其他的都是引用类型。

2.面向对象的特征有哪些方面?
抽象:抽象就是忽略一个主题中与当前目标无关的的那些方面,以便更充分的注意与当前目标有关的方面。抽象包括两个方面,一是过程抽象,二是数据抽象。抽象就是抽取,抽取共有的属性和功能。(例如,看到一只蚂蚁和大象,你能够想象出他们的相同之处,这就是抽象。)
封装:封装的目的在于保护数据,将设计者与使用者分开,将数据私有化,通过private关键字实现。面向对象的封装就是把描述一个对象的属性和行为的代码封装在一个“模块”中,也就是一个类中,属性用变量定义,行为用方法进行定义,方法可以直接访问同一个对象中的属性。
(可以想想普通洗衣机和全自动洗衣机的差别,明显全自动洗衣机封装更好因此操作起来更简单;我们现在使用的智能手机也是封装得足够好的,因为几个按键就搞定了所有的事情)。
继承:一个类继承另一个类,继承的类称为子类、派生类,被继承的类称为父类、基类、超类。继承是子类自动共享父类的数据和方法的机制,这是类之间的一种关系,提高了代码的可重用性和可扩展性。
多态:一种声明多种表现形式;一个接口多种方法。Java包含了两种多态性:
1.编译时多态:通过方法重载实现。
2.运行时多态:通过方法重写实现。(就像电动剃须刀是A系统,它的供电系统是B系统,B系统可以使用电池供电或者用交流电,甚至还有可能是太阳能,A系统只会通过B类对象调用供电的方法,但并不知道供电系统的底层实现是什么,究竟通过何种方式获得了动力)。

参考博客:https://www.cnblogs.com/guweiwei/p/6599289.html

3.访问修饰符public,private,protected,以及不写(默认default)的可访问性。
修饰符 当前类 同包 子类 其他包
Public 可以 可以 可以 可以
Protected 可以 可以 可以 不可以
Default(friendly) 可以 可以 不可以 不可以
Private 可以 不可以 不可以 不可以
访问修饰符的可访问性:public>protected>default>private
public:public 是公共的,被public所修饰的成员可以在任何类中都能被访问到。
Protected:protected 是受保护的,受到该类所在的包的保护。
Friendly:friendly是友好的,即在成员的前面不写任何的访问修饰符的时候,默认就是友好的。所谓友好的,是对同一package的类友好。
Private:private是私有的,即只能在当前类中被访问到,它的作用域最小。

4.float f=3.4;是否正确?
答:不正确,3.4是双精度,将双精度(double)赋值给浮点型(float)属于向下转型会造成精度失损,因此需要强制类型转换float f = (float) 3.4;或者float f = 3.4F;。

5.short s1 = 1;s1=s1+1;有错吗?Shorts s1 = 1; s1 +=1;有错吗?
答:对于short s1 = 1;s1 = s1+1;由于1是Int类型,因此s1+1转化为int类型,需要强制转换类型才能赋值给short类型。而short s1 = 1;s1 +=1;可以正确编译,因为s1+=1相当于s1 = (short)(s1+1);其中有隐含的强制类型转换。

6.Java中有没有goto?
答:goto是java中的保留字,在目前版本的java种没有使用。

7.Int和Integer有什么区别?
java提供了两种不同的类型:引用类型和原始类型(或内置类型)。
原始类型封装类:Byte、Short、Integer、Long、Float、Double、Character、Boolean
(1) int是java的原始数据类型,Integer是为int 提供的封装类。
(2) Integer变量必须实例化后才能使用,而int变量不需要。
(3)Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象;而int则直接存储数据值。
(4) Integer的默认值是null,而int的默认值是0。
参考网址:https://www.cnblogs.com/guodongdidi/p/6953217.html

8.&和&&的区别?
(1)&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。
(2)&&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式。(很多时候我们可能都需要用&&而不是&,例如在验证用户登录时判定用户名不是null而且不是空字符串,应当写为:username != null &&!username.equals(""),二者的顺序不能交换,更不能用&运算符,因为第一个条件如果不成立,根本不能进行字符串的equals比较,否则会产生NullPointerException异常。注意:逻辑或运算符(|)和短路或运算符(||)的差别也是如此。)
(3)&还可以用作位运算符,当&操作符两边的表达式不是boolean类型时,&表示按位与操作。
Int x = 64; //x等于二进制数的01000000
int y = 70; //y等于二进制数的01000110
int z = x&y //z等于二进制数的01000000

9.Math.round(11.5)等于多少?Math.round(-11.5)等于多少?
答:Math.round(11.5)的返回值是12,Math.round(-11.5)的返回值是-11。四舍五入的原理是在参数上加0.5然后进行下取整。
先说下怎么理解:
round()方法可以这样理解:
将括号内的数+0.5之后,向下取值,
比如:round(3.4)就是3.4+0.5=3.9,向下取值是3,所以round(3.4)=3;
round(-10.5)就是-10.5+0.5=-10,向下取值就是-10,所以round(-10.5)=-10
参考网址:https://blog.csdn.net/singit/article/details/47721323

10.Switch能否作用在byte上,是否能作用在long上,是否能作用在String上?
答:在Java 5以前,switch(expr)中,expr只能是byte、short、char、int。从Java 5开始,Java中引入了枚举类型,expr也可以是enum类型,从Java 7开始,expr还可以是字符串(String),但是长整型(long)在目前所有的版本中都是不可以的。
综上:从java7开始switch可以作用在byte、short、int、char、string。

用最有效率的方法计算2乘以8?
答:2<<3(左移3位相当于乘以2的3次方,右移3位相当于除以2的3次方)

全部评论

相关推荐

看网上风评也太差了
投递万得信息等公司8个岗位 >
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务