该【JAVA基础知识复习资料 】是由【知识徜徉土豆】上传分享,文档一共【43】页,该文档可以免费在线阅读,需要了解更多关于【JAVA基础知识复习资料 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。 : .
语言是强类型还是弱类型语言?为什么?
Java 是强类语言,在使用变量时有如下规则:
变量必须声明,并且初始化以后才能使用。
变量必须有明确的类型(type)。
变量不能重复定义。
javascript 是一种弱类型语言,即变量在声明时,不能明确声明其类型
变量的类型是在运行时确定的,并且可以随时改变
的数据类型有哪些?
⑴基本数据类型(八种):
整型: byte 1 字节, short 2 字节, int 4 字节, long 8 字节
浮点型: float 4 字节, double 8 字节
【float 类型共 32 位(不 int 相同),其中 1 位为符号位, 指数 8 位, 尾数 23 位。】
【double 类型能表示 64 位,其中 1 位符号位,11 位指数,52 位尾数】
【浮点数的字面量默认是 double】
字符型: char 2 字节【unicode 编码值】
boolean 型: boolean 1 字节 【值只有 true 和 false】
隐式类型转换:
正方向: char
byteshort intlongfloatdouble
负方向:
⑵引用类型(自定义类型):对象:比如 String
数组:int[]
接口:interface
中成员变量和局部变量的区别?
⑴成员变量:是在类范围内定义的(也叫成员属性)
类属性:使用 static 修饰的就是类属性。
作用域: 类属性的作用域与这个类的生存范围相同,它作为类的一个成员,
与类共存亡。只要类存在,程序就可以访问该类的类属性。
实例属性:不被 static 修饰的就是实例属性。
作用域: 实例属性则从这个类的实例(对象)被创建开始存在,直到系统完
全销毁这个实例,它作为实例(对象)的一个成员,与实例(对象)
共存亡。只要实例存在,程序就可以访问该实例的实例属性。
⑵局部变量:在一个方法内定义的变量。(包括方法的形式参数)
:作用域是整个方法体
:一个代码块中
:一个代码块中
注意:局部变量除了形式参数外,都必须显示初使化(必须显示指定初使值)。否则
不可以访问它们。
形式参数不须显示初使化,它在被调用时由系统完成。
++和后++的区别?
i++, 后++, 先将 i 的值作为整个表达的值, 然后将 i 增加 1。
++i, 先++, 先将 i 增加 1, 然后将 i 的值作为整个表达的值。 : .
5. 短路运算符和非短路运算符的区别?
短路运算符[条件 1 && 条件 2],如果条件 1 不成立,则条件 2 不执行;
非短路运算符[条件 1 & 条件 2],两个条件都会执行。
?
数组: 集合:() 字符串:()
7. 实现数组拷贝(复制)的 2 种方法?
(src , srcPos, dest , destPos , length) ;
src - 源数组。
srcPos - 源数组中的起始位置。
dest - 目标数组。
destPos - 目标数据中的起始位置。
length - 要复制的数组元素的数量。
(src , length):是 版本提供的方法,比起 ()
使用更简便.
(注:当然,可以用新建数组用 for 循环的方式进行复制)
中的 4 种访问制权限有哪些?分别作用范围是什么?
(1).public:最大访问控制权限,对所有的类都可见。
(2).protect:修饰的,在类内部、同一个包、子类中能访问
(3).default:包访问权限,即同一个包中的类可以可见。默认不显式指定访问控制权限
时就是 default 包访问控制权限。 : .
(4).private:最严格的访问控制权限,仅该类本身可见。
(注:访问控制修饰符可以修饰类,成员变量,方法,但是修饰类只用 public 和 default)
的新特性有哪些?
(1)循环(For-each 循环)
for (type variable : array){ body}
for (type variable : arrayList){body}
而 必须是:
for (int i = 0; i < ; i++){ type variable =
array[i]; body}
for (int i = 0; i < (); i++){type variable = (type)
(i); body}
(2)泛型
以 ArrayList 为例,包括创建一个容器对象和取得容器内对象操作:
ArrayList<Type> arrayList =new ArrayList<Type>(); (i)
ArrayList arrayList =new ArrayList(); (Type) (i)
(3) 自动装箱拆箱
在 以前,在原始类型与相应的包装类之间的转化是不能自动完成的。要完
成这种转化,需要手动调用包装类的构造函数,在 环境中,可以自动转化:
Integer wrapper = n; int n = wrapper;
Integer wrapper = new Integer(n); int n = ();
自动装包/拆包大大方便了基本类型数据和它们包装类地使用。
自动装包:基本类型自动转为包装类.(int >> Integer);
自动拆包:包装类自动转为基本类型.(Integer >> int);
(4)静态导入
静态导入功能对于 JDK 以前的版本是不支持的。
import static ;
import static ;
...
(sqrt(PI));
(());
(5) 可变参数(Varargs)
可变参数使程序员可以声明一个接受可变数目参数的方法。注意,可变参数必
须是函数声明中的最后一个参数。在 之前,可以用重载来实现,但是这
样就需要写很多的重载函数。
line1 public void write(Object... objs) {
line2 for (Object obj: objs)
line3 (obj);
line4 } : .
——is-a /has-a/use-a:
(1).is-a 组合:一个类继承具有相似功能的另一个类,根据需要在所继承的类基础上进
行扩展。
优点:具有共同属性和方法的类可以将共享信息抽象到父类中,增强代码复用性,
同时也是多态的基础。
缺点:子类中扩展的部分对父类不可见,另外如果共性比较少的时候使用继承会增
加冗余代码。
(2).has-a 组合:has-a 组合是在一个类中引用另一个类作为其成员变量。
优点:可扩展性和灵活性高。在对象组合关系中应优先考虑 has-a 组合关系。
缺点:具有共性的类之间看不到派生关系。
(3).use-a 组合:是一个类中使用到了另外一个类,依赖关系
(构造器)特点?
Java 中的构造器(构造方法)声明在类内部。
方法名与类名一致的方法叫构造方法
构造方法不能声明返回值类型。
构造方法可以包含参数,参数一般是创建对象实例必须依赖的条件(前提条件)。
子类默认调用父类的无参构造器,如果父类没有无参构造器,那么子类必需显示的去调
用父类的有参构造器
如果一个类没有提供无参构造器,那么编译器将会自动提供一个无参构造器。
中属性和方法的静态绑定和动态绑定?
静态绑定:Java 根据引用变量类型查找属性
动态绑定:java 根据实际的对象查找方法
13. JavaBean 规范?
1) 必须有包(package)
2) Java 类,具有无参数构造器
3) 有用 getXxx() 和 setXxx() 声明的 Bean 属性
如:getName() 和 setName(String n) 声明的 Bean 属性为:name, 不是否有实例变
量 name 无关
boolean 类型的 get 方法可以有两种形式:getMarried() 戒者 isMarried()
4) 必须实现序列化接口(注:在学习 IO 的时候具体学习)
关键字的特点?
static 静态关键字修饰:属性、方法、内部类、代码块
static 修饰的资源属于类级别,是全体对象实例共享的资源
static 变量在类加载期间初始化
静态代码块是在类加载期间运行的代码块,由于类只加载一次,所以静态代码块只执行
一次!
关键字的特点? : .
final 可以修饰类,方法,变量
final 修饰的类,不能再被继承
final 修饰的方法,不能覆盖 final 方法
final 修饰的变量
final 的局部变量,只能初始化不能改
final 的方法参数,不能改
final 的引用,引用指向不能改,但是对象的属性可以改
final 类有哪些?
Java 的 String 就是 final 类,不能被继承!
Math 是 final 类,不能被继承!
Integer 、Long、Character 等包装类是 final 类,不能被继承!
?
抽象类--不具体的类
1 抽象方法,只有行为的概念,没有具体的行为实现。
使用:abstract 关键字修饰,并且没有方法体。
2 包含抽象方法的类,就一定是抽象类。
使用: abstract 关键字修饰,包含抽象方法。
如:平面图形一定可以计算面积。
public abstract class CRMSystem{
public abstract Client addClient(
String name, String qq);
}
3 抽象方法和抽象类非常适合作为系统的分析和设计的工具。
4 抽象类不能直接创建实例。可以定义引用变量。
5 抽象类只能被继承,一个具体类继承一个抽象类,必须实
现所有抽象方法。
接口
1. 接口:全部的方法都是抽象方法,全部的属性都是常量。
接口用来表示纯抽象概念,没有任何具体的方法和属性。
2 .不能实例化,可以定义变量。
3 .接口变量可以引用具体实现类的实例。
4 .接口只能被实现,一个具体类实现接口,必须使用全部的
抽象方法。
5 .接口之间可以继承。
6 .一个具体类可以实现多个接口,实现多继承现象,表示:
一个概念即是 XXX 也是 XXX.
7 .接口中的属性,默认是常量 public static final
8 .接中的方法一定是:public abstract
9 .实现一个接口,使用关键字 implements, 实现实际上是
一种继承关系。接口和实现类是父子类型的关系
?
重载:方法名相同,参数不同(参数类型或者长度) : .
重载和修饰符和返回类型无关。
一是方法的参数列表必须改变,包括参数的类型,参数的个数多少,参数顺序。
二是重载对返回类型,访问修饰符,异常声明没有任何限制,可以作任意的修改。
实质上,重载只是创建了一个方法而已,特殊的地方在于方法的名字。
重写:两同两小一大(规则)
两同:方法名相同 参数类型 相同
两小:返回值类型(基本数据类型要一致,引用类型可以是其子类)
抛出的异常要小(也可以抛出父类型的异常的部分异常,或者不抛出异常)
一大:访问控制修饰符大
(1)重写方法必须和被重写方法具有相同的参数列表,返回类型必须和被重写方
法的返回类型相同或者是返回类型的子类型。
(2)重写方法的访问控制修饰符不能比被重写方法更严格(比如一个在父类中声
明为 public 的方法重写成一个 protected 的方法)。
(3)只有实例方法才
JAVA基础知识复习资料 来自淘豆网www.taodocs.com转载请标明出处.