这里就不概述关于对象类介绍一些东西了,默认已经了解了关于类对象的概念
- 类的声明
关于类的声明和Cpp差不多
class 类名{
类的内容,就是类体
}
类体就是关于变量的声明和方法的定义,这个也和Cpp一样
关于方法的定义也大象不差
关于局部变量和成员变量的区别一样的,就是局部变量和成员变量一样,想要在方法里面使用这种成员变量,只有this.
- 构造方法
如果没有编写构造方法,系统会生成一个默认的构造方法就是
类名称 ()
{
};
- 创建对象
和创建变量一样的是,必须new一下
而new了之后返回的就是一个引用,传递给类的名称,因此类的名称只是一个引用罢了
对象的引用回存放在栈中,对象的实体存放在堆中,
栈的优势是存取速度比对要快,缺点是存放在栈中的数据大小与生存期必须是确定的,缺乏灵活性
堆的优势是可以动态的分配内存大小,生存期也不必告诉编译器,
Java的垃圾收集器回自动收走这些不再使用的数据,缺点是由于要在运行时动态的分配内存,存取速度慢
Java会周期性的检测某个实体是否已不在被任何对象所拥有(引用),如果发现,就释放他的内存
- 引用
System.out.println()会打印出带前缀的类的引用
System.identityHashCode()会返回引用
System.gc()可以直接让虚拟机立即进行依次Java垃圾处理
- 类和程序的基本结构
类的基本结构就是,除了主类的其他的类都会在和主类在同一目录之下,然后需要修改的时候就直接修改那几个类就完了,不用重新编译所有,应为他们不具有关联性,这就是Java有利于系统维护的特点,而运行的时候就直接运行主类就可以了,
- 传值
一般的实参和形参的关系和C一样,不一样的是Java数组和对象存放的是引用,所以传入形参也传入的引用,所以对形参进行动作就会改变实参的实体,类似于传地址&
- 可变参数
这个比较牛b,主要是这样的声明
public void a(int...x);
首先,我们称x为参数代表,而我们可以用参数代表来无限添加我们的参数,比如x[0],x[1],x[2],x[3]
这样,一直用就完了是不是看出来了,尼玛这就一数组,对
public void a(int x[]);
- 对象的组合和复用
不过,这没有必要必须讨论,主要就是每一个类里可以声明其他类的变量,也可以当作形参,也可以局部变量,都一样,
A类中的成员变量是用B类声明的对象,那么AB就是关联关系,A关联与B,A类的对象组合了B类的对象
A中某个方法的参数是用B声明的对象或者某个方法返回的数据是B类的对象,A依赖于B
- 实例成员和类成员
成员变量分为实例成员和类成员,实例成员就是一般的成员变量,如果加了static修饰符就是static变量,静态变量,类变量
所有对象都拥有同一个类变量,这和C中的static差不多,
可以直接对象.类变量,也可以类.类变量
class A ()
{
static int i;
}
public class B()
{
public static void main(String[] args) {
A.i = 1;
A A1 = new A();
A1.i = 1;
}
}
都是可以的而且,不必创建对象就可以使用类变量,因为类变量是和类加载的,
- 方法重载
这个也一样,参数个数不同,或者参数个数相同参数类型不同,
- this
这个也一样,就this不能出现在类方法中,因为this代指的是对象,而类方法需要再没有创建对象的时候就要加载