内存
Java虚拟机的内存可以分为三个区域:栈stack、堆heap、方法区method area。
栈描述的是方法执行的内存模型。每个方法被调用都会创建一个栈帧(存储局部变量、操作数、方法出口等)
堆用于存储创建好的对象和数组(数组也是对象)。
方法区实际也是堆,只是用于存储类、常量相关的信息!用来存放程序中永远是不变或唯一的内容。(类信息【Class对象】、静态变量、字符串常量等)。
********************************************************************
方法的调用:
[修饰符](有时可省略) 方法返回值类型 方法名(形参列表) {
// n条语句
}
类:我们叫做class。 对象:我们叫做Object,instance(实例)。以后我们说某个类的对象,某个类的实例。是一样的意思。
*创建对象:(public class DuiXiang(DuiXiang是类名))
类名 对象名 = new 类名();
*访问对象的成员:
对象名.方法名();
对象名.属性=值
构造器
[修饰符](可省略) 类名(形参列表){
//n条语句
}
1.通过new关键字调用
2.构造器虽然有返回值,但是不能定义返回值类型(返回值的类型肯定是本类),不能再构造器里面使用return返回某个值
3.如果我们没有定义构造器,则编译器会自动定义一个无参的构造函数。如果已定义则编译器不会自动添加。
4.构造器的方法名必须和类名一致
*********************************************************************************
构造方法(构造函数):创建对象时对成员变量进行初始化。
特点: 构造方法的方法名必须与类名相同,不能有返回值类型(void也是一种返回值类型)。
如果没有显式定义构造方法,JVM在编译时会自动添加一个无参的构造方法
如果显式定义有参构造方法,JVM在编译时不会添加无参的构造方法。
方法的重载:方法相同,参数列表不同。构造方法也可以发生重载。
方法的调用:
[修饰符](有时可省略) 方法返回值类型 方法名(形参列表) {
// n条语句
}
构造器
[修饰符](可省略) 类名(形参列表){
//n条语句
}
}
this 用于区分成员变量和局部变量
this
使用方法:this.属性名() this.方法名()------this可省略
this的本质就是“创建好的对象的地址”! 由于在构造方法调用前,对象已经创建。因此,在构造方法中也可以使用this代表“当前对象” 。
this最常的用法:
1. 在程序中产生二义性之处,应使用this来指明当前对象;普通方法中,this总是指向调用该方法的对象。构造方法中,this总是指向正要初始化的对象。
2. 使用this关键字调用重载的构造方法,避免相同的初始化代码。但只能在构造方法中用,并且必须位于构造方法的第一句。
如 this(a,b);
public This(int a, int b) {
this.a = a;//用this区分成员变量和局部变量
this.b = b;
}
public This(int a, int b, int c) {
this(a, b);//用this调用构造函数,必须出现在构造函数第一行
this.c = c;
}
3. this不能用于static方法中。
static
注意:
在非静态的方法中可以访问静态属性和静态方法
静态的属性和方法不能访问非静态的属性和方法
使用类名.属性名调用静态属性.
使用类名.方法名调用静态方法
static不能用this方法。
* static关键字:静态修饰的成员只能访问静态修饰的属性或调用静态修饰的方法
*.使用static关键字可以修饰变量(属性)---->静态变量(静态属性)
* 2.使用static关键字可以修饰方法--->静态方法
* 3.使用static关键字修饰代码块:在加载类信息时执行
* 执行顺序: static代码块 > 代码块 > 构造函数
传递
包
包类似文件夹,其作用分类管理和避免命名冲突。
命名规则:
- 域名反写: 域名反写 www.zzt.cn------>cn.zzt;
- 包名小写
- 声明包:package 包名:必须放在第一行非注释的语句。
Java常用的包:
Java.lang:java核心包,该包下的类可以直接使用,不需要导包。String/System…
Java.util:工具包。
Java.io:输入输出流相关。
Java.text:格式化
Java.awt/javax.swing:图像化界面
Java.net:网络编程
快捷键:ctrl+shift+o