一、类
1、类的定义
把相似的对象划分了一个类。
类指的就是一种模板,定义了一种特定类型的所有对象的属性和行为
在一个.java的问题件中,可以有多个class,但是智能有一个class是用public的class。被声明的public的class,必须和文件名相同。
[访问修饰符] class 类名{
成员变量-属性
成员方法-行为
内部类
代码块
}
public class Car {
String color;
String brand;
int door_num;
public void start(){
//启动
System.out.println(color+"颜色"+door_num+"门"+brand+"车正在启动......");
}
public void speed(){
//加速
System.out.println(color+"颜色"+door_num+"门"+brand+"车正在加速......");
}
public void stop(){
//停止
System.out.println(color+"颜色"+door_num+"门"+brand+"车正在停止......");
}
}
2、成员变量
java类的成员变量,都有默认值。
整数:0
浮点数:0.0
布尔:false
字符:'\u0000'
引用:null
java类的成员变量,在下面所有的方法中,都可以访问到。
3、局部变量
但是局部变量是没有默认值的。
原因:
JVM通过CLassLoader类加载器及进行类加载,过程设计到 加载,准备、解析和初始化,类的成员变量初始化,是在JVM类加载的阶段完成。
区别:
成员变量:静态(static)成员变量、非静态成员变量(初始化阶段赋值,根据代码中的赋值情况,如果没有赋值,则使用默认值,有赋值,则使用代码中的赋值;当当对象实例化后,成员变量会随着对象分配到Java堆内存中)。
局部变量:存储在栈内存中
4、对象
4.1对象的定义
类是模板,通过模板创建出具体的实例,就是模板。
对象就是实际存在的某类事务的个体,也叫实例。
类和对象的关系,就是抽象和具体的关系。
创建对象的属性和方法:
类名 对象名=new 类名
4.2对象的使用
public class test1 {
public static void main(String[] args) {
Car car1 = new Car();
car1.color="red";
car1.brand="baoma";
car1.door_num=4;
car1.start();
car1.speed();
car1.stop();
}
}
4.3对象创建的原理
①JVM运行时包括:程序计数器、Java栈、堆、本地方法栈、方法区
②当我门创建 一个对象时候,同时操作了栈和堆内存
③在栈内存保存了这个对象的引用
④对象的属性保存在对内存中。
⑤操作对象都是通过引用来完成,一旦引用出栈,没有被引用的对象就变成了垃圾,被回收。
在编写类文件的时候,类是存储在硬盘上的,没有被加载到内存中。
在主方法中创建了这个类的对象后,它才会被加载到内存中进行处理。
案例:
public class Clock {
int hour;
int mintue;
int second;
String timeZone;
public void showTime(){
System.out.println("现在是"+timeZone+"时间"+hour+"时"+mintue+"分"+second+"秒");
}
}
public class TestColck {
public static void main(String[] args) {
Clock clock1 = new Clock();
clock1.hour=11;
clock1.second=12;
clock1.mintue=22;
clock1.timeZone="beijing";
clock1.showTime();
Clock clock2 = new Clock();
clock2.hour=12;
clock2.second=12;
clock2.mintue=22;
clock2.timeZone="dongjing";
clock2.showTime();
}
}
4.4匿名对象
new Car().speed();
就调用一次。
5、封装(属性的私有访问)
Java的封装就是信息隐藏技术。从属性的角度来说,有选择的提供数据。
封装也涉及到了软件的耦合性:高内聚,低耦合。