类,它是引用数据类型。
java代码映射成现实事物的过程就是定义类的过程。拿一部手机进行分析,它可以打电话,上网,聊QQ等,这是手机所的功能,也就是方法;手机也有它的Feature,如颜色、尺寸大小、品牌型号等,这些就是手机的特征,也就是属性。
先定义一个类(先看属性)
/*
定义类:
使用类的形式,对现实事物进行描述
事物:方法,属性
方法:这个事物具备的功能
属性:变量
格式:
public class 类名{
属性定义
修饰符 数据类型 变量名 = 值
方法定义
修饰符 返回值类型 方法名(参数列表){
int steps = 5;
}
}
注意:1 属性里面的变量与方法中的变量有界限,假如走路(功能=方法)中
有变量走的步数,若没有此方法,步数也就没有了,所以他属于方法,
而属性不一样,年龄、身高(特征=属性)不会变,他属于类。
2 类名必须与文件名相同
例子:使用Java中的类,描述生活中的手机
事物:手机
功能 = 方法:
特征 = 属性: 颜色、品牌、大小(什么数据类型)
*/
public class Phone{
/*
定义手机属性
*/
String color ;
String brand ;
double size ;
}
定义好类之后,如何使用?
/*
测试,刚才定义好的Phone类
创建引用数据类型的格式
数据类型 变量名 = new 数据类型();
实现引用数据类型的步骤
1 导入包,若类在同一个文件夹,不用导
2 创建引用类型变量
3 变量.类型中的功能(属性)。属性就是变量,可以赋值和获取
*/
public class TestPhone{
public static void main(String[] args){
//创建引用类型变量
Phone p = new Phone();
//System.out.println(p); 输出内存的地址
//变量.类型中的属性(功能)
//变量 p. 的方式,调用类中的属性
//属性就是变量,可以赋值和获取
p.color = "公主粉";
p.brand = "Apple" ;
p.size = 5.5 ;
//获取属性值
System.out.println(p.color+" "+p.brand+" "+p.size);
}
}
只编译要运行的文件就可以,类的文件在调用的时候回自动编译
过程如下:
1 TestPhone.class进入数据共享区,
2 main压栈进入方法栈
3 main中先有phone(),此时pnone.class进入数据共享区
4 实例化一个对象p,此时对象p也就是new phone()进入堆,创建了一个对象
5 属性color brand size 随对象创建而进入堆,并进行默认赋值 null null 0.0
6 将对象的首地址赋给p,此时p指向0x00aa内存地址
7 赋值 土豪金 爱立信 5.0,内存中也做相应变化
8 取值
9 main方法运行完毕。出栈。
当创建两个变量的时候:
/*
测试手机类
创建2个手机类的变量
*/
public class TestPhone_1{
public static void main(String[] args){
//创建手机类型变量
Phone p1 = new Phone();
//再次创建手机类型变量
Phone p2 = new Phone();
p1.color = "白色";
p1.brand = "apple";
p1.size = 4.5;
p2.brand = "华为";
System.out.println(p1.brand);
System.out.println(p1.color);
System.out.println(p2.brand);
}
}
内存图为: