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
}
-
interface
-
子类通过implements来实现接口中的规范
-
接口不能创建实例,但是可以用于声明引用变量类型
-
一个类实现了接口,必须实现接口中的多有方法,并且这些方法只能是public的
-
接口支持多继承