属性(成员变量):
类的成员变量可以先声明,有默认值不用初始化.
数值数据类型的默认值是0
char类型的默认值是空
引用类型的默认值是null
修饰符可以用来修饰变量,指明变量是一个公有还是私有,私有的类变量不能通过对象.属性的方式调用
修饰符private:该属性只能由该类的方法访问。
修饰符public:该属性可以被该类以外的方法访问
在方法体外,类体内声明的变量称为成员变量。
成员变量又分为:实例变量(实例化对象.属性)和类变量(以static修饰,直接通过类名.属性调用)
在方法体内部声明的变量称为局部变量。
形参,方法局部变量,代码块局部变量
{
//这就是代码块
int i = 0; //代码块局部变量
}
方法(函数):
方法的参数称为形参,可以有多个,之间用,分隔
驼峰命名法: 方法的名称如果是多个单词,首个的单词的首字母小写,其他的单词首字母大写
方法中不能再定义方法
同一个类中,普通方法可以直接互相调用(实际上是通过类名或this关键字调用),不用new去实例化对象。
但是static方法调用普通方法时,要用new去实例化对象
因为Java里的方法不能独立存在,它必须属于一个类或一个对象,
因此方法也不能直接像函数那样被独立执行,执行方法时必须使用类或对象作为调用者,
即所有的方法都必须使用“类.方法”或“对象.方法”的形式来调用。
这里可能产生一个问题:同一个类里不同方法之间相互调用时,不就可以直接调用吗?
这里需要指出的是:同一个类的一个方法调用另一个方法时,如果被调用方法是普通方法,则默认使用this作为调用者;
如果被调用方法是静态方法,则默认使用类作为调用者。也就是说表面上看起来某些方法可以被独立执行,但实际上还是使用this或类来作为调用者。
方法的重载: 多个相同名称的方法如果想在一个类中共存,那么这些同名方法一定是参数的个数或者参数的数据类型或者参数的顺序不一样
对于对象的使用无外乎就两个方面: 操作对象的属性,调用类方法
类只有一个,但是通过类实例化出来的对象可以有很多个,每个对象都是独立,互不干扰
可变参数传递:
1.用数组方式传递(如果没有参数,就要定义一个空数组或者是null)
2.用java特有的...方式传递(如果没有参数就可以不填)
这种...代表可以传递0到多个参数,这种参数在使用时与数组的使用方式相同
如果一个方法有多个的形参,可变的形参(...这种的参数)一定要放在所有的参数最后
JVM的内存模型:
栈Stack,堆Heap,方法区Method
栈保存基础数据类型和引用对象(实际对象的地址)
堆中保存所有对象(new出来的对象和字符串对象)
方法区保存class和static变量
基本数据类型, 值保存在栈中
引用对象储存在栈中(类比于指针),存的是实际对象在堆中的地址(new出来的实际对象储存在堆中)
Java的基础数据类型参数和对象参数传递只有一种方式:将实参栈中的值传递给形参
Package:
在Java中包package的概念与文件夹类似,专注于文件整理和解决重名问题
包名通常使用小写字母,类名首字母通常大写
多级包用.分隔,例如com包下的cn包下的net包 com.cn.net
import 包名(.子包名).类名(*) .*表示全部类
封装和隐藏:
Java中将类的成员变量修饰符设置为private,并且提供public的getXx和setXx方法实现对私有属性的查看与修改
这样可以隐藏一个类中不需要对外显示的实现细节以及限制对属性的不合理操作
四种访问权限修饰符:
private:类内部访问
缺省defalut(默认):类内部访问 + 同一包内访问
protected:类内部访问 + 同一包内访问 + 不同包内子类继承
public:任何地方
class仅可以被public和缺省defalut修饰
在一个java文件中可以写多个class,但只能有一个class是public,其它的class只能是缺省defalut
类的构造方法:
Person p = new Person();
Person() 是Person类下的一个默认存在的方法
new对象,实际上就是调用类的构造方法
类的默认构造方法的访问权限与类的修饰符一致: public & 缺省
如果显示定义了构造方法, 就不会使用默认的构造方法
显式定义的构造方法可以无参也可以带参
构造器重载: 由形参自动匹配构造方法, 提供了多个初始化对象的模板, 可以根据不同需求灵活地创建对象
this关键字:
1.当方法中形参与成员变量重名的时候, 在方法体内部用this.变量来表示成员变量
2.可用this.变量或this.方法增强代码的可读性
3.this()可用来调用类的构造方法(必须放在构造器的首行且不能出现递归)
JavaBean:
一种遵循特定写法的Java类:类的访问权限public;属性一般是private并且提供public的set和get方法;有一个无参的public构造器