Java学习笔记
基础语法
变量
成员变量:定义在类之内,方法体外的变量
局部变量:定义在方法内的变量
Java中不存在全局变量,因为java是纯面向对象语言
变量在使用时需要先声明,再赋值,之后才能使用。
变量其实是内存中的一块区域
成员变量定义后没有赋值,使用时会默认赋值
局部变量定以后没有赋值,使用时会报错
变量作用域
在大括号中定义的变量,出了大括号就没人认识。
数据类型
整数类型-- byte short int long+L
浮点类型--float+f double
- 整型 int
- 单精度浮点型 float 值后面要加f
- 双精度浮点型 double
- 字符 char ''
- 字符串 String ""
- 常量 final 变量名字大写
基本数据类型转换
- 容量小的类型自动转换为容量大的数据类型 byte,short,char,->lnt->long->float->double 前三个不会互相转换,计算时会转换程int类型
- 容量大的数据类型转换为容量晓得数据类型时,需要强制转换,但可能造成精度降低或溢出。
switch语句
switch(这里只能放可以转换成int类型的内容){
case 0:
..........
}
内存

基本数据类型在内存中占一块区域
引用数据类型占两块区域
面向对象
面相对象编程的思考方式
- 这段程序应该有几个类几个对象
- 每个类每个对象应给有什么属性和方法
- 类之间对象之间的关系
命名规则
类名首字母大写
变量名首字母小写
驼峰命名法
类
类是具有共同特征的一类事物的一个抽象
成员变量(属性) 静态变量
方法 动态方法
类的具体某一个实例是对象
类可以看成一类对象的模板
实例==对象==object
对象
首先定义类才有对象
对象:
属性(成员变量、静态属性)
方法(动态属性)
成员变量的作用域在当前类中
类(对象)关系
- 关联关系:关系最弱
- 继承关系: xx是一种xx
- 聚合关系: xx是xx的一部分 整体和部分 聚集、组合
- 实现关系:。。。没太懂。。。
- 多态??
内存分析

重载(overload)
名字相同,参数不同(类型不同,个数不同)。
this

static关键字
在类中,用static声明的成员变量为静态成员变量,作为该类的公用变量。
package和import语句
package语句定义类所在的包,一般公司域名倒写,例如:com.sxd.xxxxxx
若没有该条语句,视为无名包。(裸体类)
如果把一个类放到包里,首先编写package,package后可以跟任意层包名,但是你编译出来的class文件,必须位于正确的目录下。和包的层次完全一致的包层次。
如果在另一个类中使用这个包中的类,必须要把包名写全,否则机器读不到你要找的类。
import 引入制定包中的类. 例如: import com.sxd.java.Cat.
访问相同包中的类不需要引入 import
类的继承和权限控制
Java中使用extends关键字实现类的继承机制。
继承后,子类自动拥有父类parentsclass(基类superclass)的所有成员(成员变量和方法)
一个子类只有一个基类,一个基类可以派生出多个子类
Java只支持单继承,不允许多继承
继承内存图解:

访问控制符(权限修饰符)
Java权限修饰符,用来限定其他对象对该类兑现成员的访问权限。

- private :
- default : 默认修饰符 什么都不写 包权限
- protected :
- public :
对于class的权限修饰只可以用public 的 default
- public类可以在任意地方被访问
- default类只可以被同一个包内部的类访问
重写(OverWrite)
- 在子类中可以根据需要对从基类中继承来的方法进行重写
- 重写方法必须和被重写方法具有想阿瞳方法名称、参数列表个返回类型 copy paste
- 重写方法不能使用比被重写方法更严格的访问权限
super关键字

继承中的构造方法
- 子类的构造的过程中必须调用其基类的构造方法
- 子类可以在自己的构造方法中使用 super(argumentt_list)调用激烈的构造方法
使用 this(argument_list)调用本类的另外的构造方法
如果调用 super 必须写在子类构造方法的第一行
- 如果子类构造方法中没有显示调用基类构造方法,则系统默认调用基类无参数的构造方法。
- 如果子类构造方法中既没有显示调用基类构造方法,而基类中又没有不带参数的构造方法,则编译出错。
Object类
- toString():
- equals();判断两个对象是否相等(不指向同一内存的对象是不相等的)
- instanceof运算符:判断对象是否是一个类的实例
用法:
result = object instanceof class
参数:
Result:布尔类型。
Object:必选项。任意对象表达式。
Class:必选项。任意已定义的对象类。
说明:
如果 object 是 class 的一个实例,则 instanceof 运算符返回 true。如果 object 不是指定类的一个实例,或者 object 是 null,则返回 false。
final关键字
final的变量的只不能够被改变
final的成员变量
final的局部变量
final的方法不能被重写
final的类不能被继
多态
动态绑定是指在执行期间(而非编译期)判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。
动态绑定将可扩展性达到极致。
多态的存在有三个必要条件:
1、要有继承
2、要有重写
3、父类引用指向子类对象
多态==动态绑定==chi绑定
new的是谁就找谁的方法
( 课时53)是不是可以理解为,在执行中cat的enjoy方法将animal的enjoy方法覆盖了,所以Cat c作参数传入执行的时候才打印的Cat 的enjoy
abstract 抽象类
用abstract关键字来修饰一个类时,这个类叫做抽象类;
用abstract来修饰一个方法时,该方法叫做抽象方法。
含有抽象方法的类必须被声明为抽象类,抽象类必须被继承,抽象方法必须被重写
抽象类不能被实例化
抽象方法只需声明,而不需实现。
View Code

浙公网安备 33010602011771号