Java学习
Java基础
java是强类型的语言:
- 所有的变量必须先声明再使用;
- 指定类型的变量,只能装对应类型的数据;
- 强类型的语言更安全/健壮;
Java类型:
基本数据类型:
整型:byte short int long;
浮点型:float double;
字符型:char;
boolean:boolean;
引用数据类型:数组 类 接口 枚举
基本数据类型和引用数据类型的区别:
- 基本数据类型的赋值:直接将该值存入变量所在内存;
- 引用数据类型的赋值:将该对象所在第一个内存单元的编码(内存地址)存入变量,引用类型变量所指的对象在堆里。
方法的传参机制:
- 值传递:传入的只是参数的副本,并不是参数本身;
- 如果传递的参数是引用类型,参数的副本与参数本身指向同一对象,因此方法通过参数副本修改对象时,会影响参数本身所指向的对象;
java程序的内存可分为:
- 堆(heap)内存:Java虚拟机启动时分配的一块永久的 很大的内存区,堆内存只有一个;(new出来的东西,都在堆内存)
- 栈内存:每次方法运行分配一块临时很小的内存区,每个方法都有自己对应的栈区;(在方法中定义的局部变量(不管是什么类型),都放在对应的方法栈,方法结束后,对应栈区就会被回收。)
数组声明:
java
//第一种
int[] iArr = new int[]{20,30,40,50};
//第二种
int[] iArr2 = new int[4];
遍历数组(foreach):只能访问数组元素的值,不能修改。
java
for(int it : iarr) {//it表示数组元素
System.out.println(it);
}
Java的3,4,5:
- 3:类 接口 枚举
- 4:4个修饰符–>(private | public | protected) final static abstract
- 5:5大成员:–>成员变量 方法 构造器 内部类 初始化块
面向对象
类:某一类对象的统称,相当于是一个概念性的(不具体存在的东西);
对象:现实中所能接触的各种“东西”。
类体:成员变量 方法 构造器 内部类 初始化块;
修饰符:public final | abstract
(1). 成员变量(field):
- [修饰符] 类型 变量名 [ = 初始值];
- 修饰符:(public | protected | private) final static transient(序列化)
- 类型:任意基本类型或引用数据类型
- 成员变量用于描述该类或对象的状态,因此通常建议用名词;项目中只定义感兴趣的状态。
- 变量:
- 成员变量(类里定义):可以不需要显式指定初始值,系统可以自动分配初始值;
- 类变量:类变量属于类本身,当系统初始化类时,就会为类分别分配空间,并执行初始化。每个类都只能有一个类变量;
- 实例变量:系统每次创建对象时,都需要为该对象的实例变量分配空间,并初始化,即程序中有几个对象,系统就会为这些对象的实例变量分配对应空间。
- 局部变量(方法中定义):必须显式指定初始值,否则编译会报错;
- 形参
- 普通的局部变量
- 代码块的局部变量
- 成员变量(类里定义):可以不需要显式指定初始值,系统可以自动分配初始值;
(2). 方法(method):
[修饰符] 返回值类型 方法名(形参列表) { //方法体; }
- 修饰符:(private | public | protected) (final| abstract) static;
- 方法:用于描述该类或对象的行为,因此通常为动词。项目中,只定义项目感兴趣的行为;
(3).构造器(constructor):
[修饰符] 构造器名 (形参列表) { }
- 作用:new调用构造器来创建对象(构造器必须用new调用,这样可以返回一个初始化完成的对象)不能用static修饰;如果你没有为类写构造器,系统会默认为该类提供一个无参的构造器;
- 构造器名一定要与类名相同;
面向对象的三大特征:封装 继承 多态
(1). 封装:(合理的隐藏,合理的暴露)隐藏内部实现细节,将一些操作界面暴露出来,如果通过暴露的界面来操作对象,该对象的内部状态不会被破坏。
包:不同公司或不同项目可能定义同名的类,为了解决类名冲突的问题,Java引入了“包”的机制;包的本质就是在类名添加一个前缀;(推荐用公司的域名倒写,再加项目名)
访问控制符:public private protected 不写
- private(私有):类访问权限,该修饰符修饰的成员只能在该类中被访问;
- 不写(包访问权限):该修饰符修饰的成员,只能在该类或者该类所在的包内被访问;
- protected(子类访问权限):该修饰符修饰的成员,只能在该类或该类所在的包以及该类的子类中被访问;
- public(公共):该修饰符修饰的成员,可以在任意地方被访问;
private | 不写 | protected | public |
---|---|---|---|
当前类 | 可 | 可 | 可 |
同一个包 | 不可 | 可 | 可 |
子类 | 不可 | 不可 | 可 |
任意 | 不可 | 不可 | 不可 |
(2). 继承:是一种类与类之间的关系,是一种由一般到特殊的关系,子类是一种特殊的父类(子类:小类;父类:大类);
[修饰符] class 类名 extends 父类 {
}
- 继承的作用:代码复用(站在巨人的肩膀上);
Java是单继承的,只能有一个直接父类;如果不显式的继承父类,Java默认是继承Object类
(3). 多态:同一类型的多个实例,在执行同一方法,呈现出多种的行为特征;