Java基础知识整理

2018/03/05 Java

Java基础知识整理

标识符(给类、方法、变量起名))

1.以字母(采用Unicode字符集)、下划线、$ 开头

2.其余部分可以是:字母(采用Unicode字符集)、下划线、$、数字

3.不能为关键字

命名规则

变量、方法名:首字母小写和驼峰原则。如:run(),runRun(),age ageNew

常量:大写字母和下划线:MAX_VALUE

类名:首字母大写和驼峰原则:Man,GoodMan

变量

1.局部变量

定义在方法内或语句块内。 从属于方法或语句块。

使用之前,必须要手动初始化!

2.成员变量(实例变量 field)

定义在类里面、方法外面。 从属于对象!

如果我们没有手动初始化成员变量,系统会自动初始化。初始化的规则如下:

数字:0,0.0 布尔:false char:\u0000 引用类型:null

3.静态变量(类变量)

定义在类里面、方法外面、使用static修饰。 从属于类!

如果我们没有手动初始化静态变量,系统会自动初始化。初始化规则同成员变量。

数据类型

1.基本数据类型

a) 数字

i. 整数:byte(1个字节) short(2个字节) int(4个字节,整型常量默认该类型) long(8个字节)

ii. 浮点数:float(4个字节) double(8个字节,浮点常量默认为该类型)

b) 字符 char(2个字节)

c) 布尔 boolean(1位)

2.引用类型(4个字节)(引用堆里面的一个地址,固定用4个字节表示)

a) 数组

b) 对象

c) 接口(不可以new )

3.自动类型转换:容量小的数据类型可以自动转换为容量大的数据类型,如:

int i=3; 

double d=i;

float f=i;

double d2=f;

特例:可以将整形常量直接赋值给byte,short,char等类型变量,而不需要进行强制类型转换,只要不超出其范围

short b=12;        //合法

short b=1234567;   //非法

运算符

1.赋值运算符(=)

if(b=true) ; if(c=3) //错误写法 if(b) ; if(3==c) //正确写法 2.算术运算符(+, -, *, /)

3.关系运算符(> == <)

常见错误写法 1<a<3;  1<a&&a<3;

4.逻辑运算符(&&, ||, ! )

5.位运算符

按位与&, 按位或 , «(左移一位相当于乘以2),»>(右移一位相当于除以2)

6.扩展运算符:+=,-=,*=,/=,%=

7.三目运算符

(布尔表达式)?语句1:语句2

控制语句

1.顺序结构

2.选择结构

a) If

b) If else

c) If else if … else

d) switch 多值选择 表达式:int或char/short/byte, 枚举

break问题

3.循环结构

a) while 先判断后执行

b) for

c) do while 先执行后判断 break: 强制终止整个循环

continue:结束本次循环,继续下一次!

面向对象基础

对象和类:

对象是具体的事物,类是对象的抽象。

定义类:

public  class  类名 {      //类名(建议首字母大写)要跟文件名相同

    //属性

    private  数据类型  属性名;   //建议增加相应的getter、setter方法

    //方法

    //构造方法

}

构造方法(construct):用于构造类的实例

[修饰符]   类名形参列表{

    //n条语句

}

1.方法名必须跟类名保持一致

2.有返回值,但不能定义返回类型,不能再构造方法里调用return

3.通过new关键字来调用

4.无参构造器问题:

a) 如果我们没有手动定义构造器,系统会自动为我们添加一个无参的构造器

b) 如果我们自己定义了构造器,系统就不会为我们添加无参构造器

5.构造方法的第一句总是:super,即调用直接父类的构造方法。

a) 有继承关系的构造方法调用的顺序

方法的重载(Overload):

两同(同一个类、同一个方法名)三不同(参数列表不同:;类型、个数、顺序)

只有返回值不同不构成方法的重载

只有形参名称不同,不构成方法的重载 this:

普通方法中,调用本方法的对象。

构造方法中,正要初始化的对象。

不能用于static方法。

super:

是直接父类对象的引用。可以通过super来访问父类中被子类覆盖的方法或属性。

普通方法:没有顺序限制,可以随便调用。

构造函数中:任何类的构造函数中,若是构造函数的第一行代码没有显式的调用super(…),那么Java默认都会调用super()作为父类的初始化函数。

static:

用它修饰的变量和方法,就变成了静态变量和静态方法,从属于类,通过类名即可调用,实际存储于方法区中。

package:

package必须位于非注释行第一句。 包名:域名倒着写

import:

引入外部的类

Import static :导入类的静态属性

final:

修饰变量:常量(命名规范:全部大写,多个单词之间通过下划线隔开)

修饰方法:不能被子类重写,但可以被重载

修饰类:不能有子类,不能被继承。比如:Math、String。

面向对象的三大特征

封装

通过private、default 、protected、public关键字实现属性或方法的封装。

“高内聚,低耦合”

继承

利用extends关键字继承,子类继承父类,可以得到父类的全部属性和方法(除了父类发构造方法)

Java中类只有单继承(即一个类只能有一个直接父类),没有像C++那样的多继承

不同的叫法:超类、父类、基类;子类、派生类

方法重写(Override)的要点:

方法名保持一致

子类权限修饰符可以大于等于父类的。

子类的返回值类型小于等于父类的类型, 子类声明异常类型不能超过父类的类型。

Object类:

1.Object类是所有Java类的根基类 2.如果在类的声明中未使用extends关键字指明其基类,则默认基类为Object类 3.重写:toString方法 默认返回:包名+类名+@+哈希码 可以重写 4.equals、hashcode 5.wait、notify、notifyAll

多态(polymorphism)

三个必要条件:继承、方法的重写、父类引用指向子类对象 动态绑定(慢)、静态绑定:

抽象类:

1.有抽象方法的类只能定义抽象类 2.抽象类不能实例化,即不能用new类实例化抽象类

3.抽象类可以不包含属性、方法、构造方法,但是构造方法不能用来new实例,只能用来被子类调用 4.抽象类只能用来继承

5.抽象方法必须被子类实现

接口:

定义格式:

[访问修饰符]interface 接口名  [extends  父接口1父接口2...]{

       常量定义    //总是:public staticfinal

       方法定义    //总是:publicabstract

}
  1. interface

  2. 子类通过implements来实现接口中的规范

  3. 接口不能创建实例,但是可以用于声明引用变量类型

  4. 一个类实现了接口,必须实现接口中的多有方法,并且这些方法只能是public的

  5. 接口支持多继承

Search

    Table of Contents