作为初入开发的萌新,我根据黑马程序员的教学视频和课件整理总结,记录下自己的JAVA学习,方便巩固和交流。每篇笔记首先回顾知识点,然后贴上代码和执行结果,最后进行小结。若有不正之处或者有疑问,欢迎指出,望与各位共同进步。
1.类的定义
修饰符 class 类名{
成员变量
成员函数
}
2.对象的创建
1)直接创建
类名 变量名=new 构造函数名(形式参数列表)
2)先声明变量,再赋值引用
变量名=对象变量名
3.成员函数的定义格式:
修饰符 返回值类型 函数名(形式参数列表){
函数体(需要被封装起来的功能代码);
}
修饰符访问 本类 同包 子类 其他 private 允许 默认 允许 允许 protected 允许 允许 允许 public 允许 允许 允许 允许
4.对象成员的调用
1)成员变量
对象名.属性名
2)成员函数
对象名.方法名(参数列表)
5.局部变量和全局变量
成员变量: 定义在类中变量,在整个类内有效。
局部变量: 定义在方法中变量,只在其声明的方法内有效。
6.匿名对象
1)匿名对象:没有对应变量名引用的实体
2)应用:
- 对象对方法只调用一次时简化代码
- 匿名函数作为实参传入其他函数。
7.内存分析
1)栈
栈的本质是一张线性表。JAVA中栈分为两种,JVM运行使用的全局栈和运行代码的方法时生成的方法栈。当程序调用方法时,系统都会为该方法建立一个方法栈,其所在方法中声明的变量就存放于方法栈中,方法结束就释放栈。比堆存取速度更快,但栈中的数据大小和生存期必须确定,缺乏灵活性。
简单地说:用于存放局部变量名(对象地址)。
2)堆
堆的数据结构是一种数组对象,是一种棵完全二叉树,用于存放对象实体。
3)池
有静态常量池和运行时常量池
- 静态常量池:class文件中的常量池,不仅仅包含字符串(数字)字面量,还包含类、方法的信息。静态变量只保存一份,进行共享。
- 运行时常量池:jvm虚拟机在完成类装载操作后,将class文件中的常量池载入到内存中,并保存在方法区中,我们常说的常量池,就是指方法区中的运行时常量池。
8.代码
完成修理汽车的功能
package day5;
/*
需求分析:
汽车有轮子,有颜色,有名字,有运行的方法
修理厂有地址,有名字,有修理的方法
* */
class Car{
String name;
String color;
int state;
public Car(String name,String color){
this.name=name;
this.color=color;
state=3;
}
public void run(){
state--;
}
}
class CarFactory{
String name="大风修理厂";
public void repairing(Car car){
car.state=3;
System.out.println("修理成功!");
}
}
public class Repair {
public static void main(String[] args){
Car c=new Car("大黄蜂","yellow");
CarFactory factory=new CarFactory();
for (int i=0;i<10;i++){
if (c.state==0){
System.out.println("汽车坏了,请送往修理厂修理!");
factory.repairing(c);
}
else{
c.run();
}
}
}
}
运行结果
汽车坏了,请送往修理厂修理!
修理成功!
汽车坏了,请送往修理厂修理!
修理成功!
9.总结
对于堆栈池的理解还是不够清楚,在后面的学习中需要进行更深入的了解。