java基础1

本文深入探讨Java中的多态机制,解析重载与重写区别,阐述抽象类与接口特性,对比不同访问修饰符的作用范围,并讲解静态变量、实例变量等关键概念。

1.Java 中的多态的机制

父类或接口定义的引用变量,可以指向子类的实例对象;而程序调用的方法,在运行期才动态绑定。

public、private、protected, default

修饰符

当前类

同 包

子 类

其他包

public

protected

×

default

×

×

private

×

×

×

 

2.重载(overload),重写(override)

重载:在一个类中同名的方法如果有不同的参数列表(忽略返回值异常等信息),在编译时确定。

重写:子类重写了父类方法名、参数,返回值均相同的方法(访问权限子类小于等于父类)。

其中声明为 final 的方法不能被重写,声明为 static 的方法不能被重写

 

3.为什么函数不能根据返回类型来区分重载?

重载是发生在编译期间的,对于调用端在调用方法时可以不获取对应的返回值;这样在程序运行时,编译器不知道具体调用哪一个方法。

 

4.抽象类(abstract class)和接口(interface)

抽象类

可有构造器,成员变量,抽象方法,具体方法,静态方法

有抽象方法的类必须被声明为抽象类,而抽象类未必要有抽象方法

一个类只能继承一个抽象类

成员可以是 private、默认、protected、public

 

相同点

均不能够实例化

一个非抽象类如果继承了抽象类或者实现了接口,需要对其中的抽象方法全部进行实现

接口

只能有抽象方法

成员全都是 public ,且其成员变量实际上都是常量

一个类可以实现多个接口

 

5.抽象方法,静态方法,本地方法,synchronized修饰

抽象方法需要子类重写;静态的方法是无法被重写的;本地方法是由本地代码(如 C 代码)实现的方法;synchronized 和方法的实现细节有关。

 

6.& 和 && 的区别

& :(1)按位与;(2)逻辑与,当false & 右边时,右边参与运算。

&& :短路与,&&左边的表达式的值是 false,右边的表达式会被直接短路掉,不会进行运算。

 

7.如何跳出当前的多重嵌套循环

在最外层循环前加一个标记如 A,然后用 break A;可以跳出多重循环。

 

8.值传递,引用传递

Java 语言的方法调用只支持参数的值传递。当一个对象实例Person p作为一个参数被传递到方法中时,对p的修改,即使方法返回值为void,仍会修改p的属性项。

 

9.char型变量中能不能存贮一个中文汉字

在Java中,char类型占2个字节,而且Java默认采用Unicode编码,一个Unicode码是16位即2个字节。故char类型变量可以存储一个中文汉字。

数据在JVM外部不一定是Unicode编码,故在文件读入读出过程中需要进行编码转换。如 InputStreamReader 和 OutputStreamReader承担了编码转换的任务。

 

10.静态变量,实例变量

静态变量: 即static变量,它属于类,在内存中有且仅有一个拷贝;可实现多个对象的内存共享。

实例变量: 必须依存于某一实例,需要先创建对象然后通过对象才能访问到它。

 

11.==和 equals 

== :运算符,如果比较的对象是基本数据类型,则比较的是数值是否相等;如果比较的是引用数据类型,则比较的是对象的地址值是否相等。

equals():用来比较方法两个对象的内容是否相等,不能用于基本数据类型的变量;如果没重写,则默认比较的是变量所指向的对象的地址。

 

12.break 和 continue 

break 用于完全结束一个循环,跳出循环体执行循环后面的语句。

continue 用于跳过本次循环,执行下次循环。

 

13.内部类

静态内部类,非静态内部类

静态内部类:可以不依赖于当前外部类对象而实例化;

非静态内部类:必须依赖于当前外部类对象才能实例化

实例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值