1、作用域public,private,protected,以及不写时的区别
答: 区别如下:
作用域 当前类 同一package 子孙类 其他package
public √ √ √ √
protected √ √ √ ×
friendly √ √ × ×
private √ × × ×
不写时默认为friendly
2、 &和&&的区别
答: &是位运算符,表示按位与运算, &&是逻辑运算符,表示逻辑与(and)
3.Collection 和 Collections的区别
答: Collection是集合类的上级接口,继承与他的接口主要有Set 和List.
Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作
4、什么时候用assert
答: assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制。在实现中, assertion就
是在程序中的一条语句,它对一个boolean表达式进行检查,一个正确程序必须保证这个boolean表达式的值为true;
如果该值为false,说明程序已经处于不正确的状态下,系统将给出警告或退出。一般来说, assertion用于保证程序最
基本、关键的正确性。 assertion检查通常在开发和测试时开启。为了提高性能,在软件发布后, assertion检查通常是
关闭的
5、 String s = new String("xyz");创建了几个String Object
答: 两个,一个字符对象(常量池),一个字符对象引用对象(内存)
准确来说在代码执行时只创建了一个对象,因为只new了一次
但在实际程序执行时多在常量池创建了一个“xyz”对象
拓展1:==和equals区别
==判断引用地址,equals判断值
拓展2:常量池部分知识
Java为了避免产生大量的string对象,设计了一个字符串常量池
工作原理:创建一个字符串时,jvm首先检查常量池中是否有值相等的字符串,如果有,不再创建,直接返回字符串引用地址,若没有,则创建,放在常量池中,返回新创建的字符串的引用地址。所以没有new新对象,两个值相等的字符串s1和s2引用地址相同。
6、 Math.round(11.5)等於多少? Math.round(-11.5)等於多少
答: Math.round(11.5)==12;Math.round(-11.5)==-11;
round方法返回与参数最接近的长整数,参数加1/2后求其floor
7、 short s1 = 1; s1 = s1 + 1;
有什么错? short s1 = 1; s1 += 1;有什么错答: short s1 = 1; s1 = s1 + 1; (s1+1运算结果是int型,需要强制转换类型) short s1 = 1; s1 += 1;(可以正确编译)
8、 Java有没有goto
答: java中的保留字,现在没有在java中使用
9 、 数组有没有length()这个方法?
答: 数组没有length()这个方法,有length的属性。 String有有length()
10.封装
封装给对象提供了隐藏内部特性和行为的能力。对象提供一些能被其他对象访问的方法来改变它内部的数据。在 Java 当中,有 4 种访问权限 对应着三个修饰符: public, private , protected。每一种修饰符给其他的位于同一个包或者不同包下面对象赋予了不同的访问权限。
下面列出了使用封装的一些好处:
①通过隐藏对象的属性来保护对象内部的状态。
②提高了代码的可用性和可维护性,因为对象的行为可以被单独的改变或者是扩展。
③禁止对象之间的不良交互提高模块化。
11.多态
多态是编程语言给不同的底层数据类型做相同的接口展示的一种能力。一个多态类型上的操作可以应用到其他类型的值上面。表现形式为overload和override
12.继承
继承给对象提供了从基类获取字段和方法的能力。继承提供了代码的重用行,也可以在不修 改类的情况下给现存的类添加新特性。
13.抽象
抽象是把想法从具体的实例中分离出来的步骤,因此,要根据他们的功能而不是实现细节来创建类。 Java 支持创建只暴漏接口而不包含方法实现的抽象的类。这种抽象技术的主要目的 是把类的行为和实现细节分离开。
抽象和封装是互补的概念。一方面,抽象关注对象的行为。另一方面,封装关注对象行为的 细节。一般是通过隐藏对象内部状态信息做到封装,因