欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

【Java】Java基础(二),

来源: javaer 分享于  点击 20582 次 点评:152

【Java】Java基础(二),


一、面向对象

1. 抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关心这些行为的细节是什么。
2. 封装:通常认为封装是把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义的接口。面向对象的本质就是将现实世界描绘成一系列完全自治、封闭的对象。
我们在类中编写的方法就是对实现细节的一种封装;我们编写一个类就是对数据和数据操作的封装。可以说,封装就是隐藏一切可隐藏的东西,只向外界提供最简单的编程接口。
3. 继承:继承是从已有类得到继承信息创建新类的过程。提供继承信息的类被称为父类(超类、基类);得到继承信息的类称为父类(派生类)。继承让变化中的软件系统有了一定的延续性。
4. 多态性:是指允许不同子类型的对象对同一消息做出不同的响应。简单的说就是同样的对象引用,调用同样的方法,但是表现出不同的行为状态。**多态性分为编译时的多态和运行时的多态。**方法的重载实现的是编译时的多态(也称前绑定)
,而方法重写实现的是运行时的多态性(也称后绑定)。
注意:运行时多态是面向对象最精髓的东西,要实现多态需要的三个必要条件如下:
(1)要有类的继承。
(2)要有方法的重写(子类继承父类并重写父类中已有的或抽象的方法)。
(3)对象造诣(父类的引用指向子类的对象,这样同样的引用调用同样的方法会根据子类对象的不同而表现不同的行为)。

二、访问修饰符

修饰符当前类同包子类其他包
public
protected×
default××
private×××

三、short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗?

对于short s1 = 1; s1 = s1 + 1;由于1是int类型,因此s1+1运算结果也是int 型,需要强制转换类型才能赋值给short型。而short s1 = 1; s1 += 1;+=操作符会进行隐式自动类型转换,是 Java 语言规定的运算符;Java编译器会对它进行特殊处理,因此可以正确编译。因为s1+= 1;相当于s1 = (short)(s1 + 1)。

四、&和&&的区别

五、解释内存中的栈(stack)、堆(heap)和方法区(method area)的用法

栈空间:基本数据类型的变量,对象的引用(不是对象本身),以及函数调用的现场保存。

栈空间操作起来最快但是栈很小,通常大量的对象都是放在堆空间,堆和栈的大小都可以通过JVM的启动参数来进行调整。

堆空间(垃圾收集器管理的主要区域):通过new关键字和构造器创建的对象。
现在的垃圾回收器都采用分代收集算法,所以堆空间还可以细分为新生代和老生代。
方法区和栈都是各个线程共享的内存的区域,用于存储已经被JVM加载的类信息,常量,静态变量,JIT编译器变异后的代码等数据;程序中的字面量(Iiteral),例如直接书写的100、“hello”和常量都放在常量池中,常量池是方法区的一部分。

注意:栈空间用光了会引发StackOverflowError,而堆和常量池空间不足则会引发OutOfMemoryError。

六、Math.round(11.5) 等于多少?Math.round(-11.5)等于多少?

Math.round(11.5)的返回值是12,Math.round(-11.5)的返回值是-11。四舍五入的原理是在参数上加0.5然后进行下取整。

七、switch的作用范围

在Java5以前,switch(expr)中,expr只能是byte、short、int,char。
从Java5开始,Java中引入了枚举类型,expr也可以是enum类型,从Java7开始,expr还可以是字符串(String),但长整型(long)在目前所有的版本中都是不可以的。

八、以最有效率的方法计算2*8

2<<3(左移三位相当于乘以2的三次方,右移三位相当于除以二的三次方 )

九、数组和String中求长度的方法

十、Java中关于equals方法和hashCode方法的规定

十一、是否可以继承String类?

String类是final类,不可以被继承。继承String本身就是一个错误的行为,对String类型最好的重用方式是关联关系(Has-A)和依赖关系(Use-A)而不是继承关系(Is-A)。

十二、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?

是值传递。Java语言的方法调用只支持参数的值传递。当一个对象实例作为一个参数被传递到方法中,参数的值就是对该对象的引用。对象的属性可以在被调用过程中被改变,但对对象引用的改变是不会影响到调用者的。

相关文章

    暂无相关文章
相关栏目:

用户点评