部分;方法在 code 代码区域内
1、栈区(stack)— 由编译器自动分配释放 ,存放 函数的参数值,局部变量的值等。其操作方式类似于 数据结构中的栈
。 2、堆区(heap) — 一般由程序员分配释放, 若程
序员不释放,程序结束时可能由 OS 回收 。注意它与 数据结构中的堆是两回事, 分配方式倒是类似于链表, 呵呵。 3、全局区(静态区) (static)—,全局变量和静态变 量的存储是放在一块的,初始化的全局变量和静态变 量在一块区域, 未初始化的全局变量和未初始化的静 态变量在相邻的另一块区域。 - 程序结束后有
系统释 放 4、 文字常量区 —常量字符串就是放在这里的。 程序 结束后由系统释放 字符串和静态变量在 datesegement 5、程序代码区—存放函数体的二进制代码。
Static 静态变量存放在数据区,它属于全局的,只有一个, 不管 new 了多少个对象 ,也只有一个,要访问这个静态变 量,用类名加点再加变量名,cat.sid=100 cat 是类,sid 是全 局变量。
对象的比较
对象比较有两种方法,一种是用“==”另外一种是用"eqauls" 方法。等号运算符比较的是两个变量的值是否相等,用于基
本的数据类型变量 Eqauls 是用来比较 两个对象内容的是否一样
在继承关系中, 创建一个子类对象的时候, 会新建一个父类对象, 如何引用这个父类对象,要使用 super 关键字。而且必须放在子 类的构造方法的第一行、
This 关键字
This 经常出现在方法中,在未调用这个方法的时候,this 不 知道指向谁。用 new 关键字创建一个对象后,this 就指向这 个对象。 当又创建一个对象后, 对象里边有个 this 指向这个。 哪个对象调用这个方法,this 就指向该对象
不允许在 main 函数中, 不允许访问成员变量, 访问成 员变量必须用对象调用来访问; 包 package 1 如果你要把一个类放在包里边,一定要写 package
方法重写注意事项
重写就是把原来的方法复制下
来,改一下里边的程序代码罢了。
Annimal a =new annimal(); A=new dog(dog 是一个类) 上面是这句话的内存的分析 那个引用看到的只是父类的东西,父类引用只能访问 父类的方法 属性。 是不能访问子类拥有的东西。 还是 把子类对象看成了父类对象 当一个子类对象被作为一个父类对象传到某个方法的 参数中,在方法体中调用父类的父类方法,实际上会 调用子类的方法 父类引用指向子类对象
构造函数 构造函数是用来初始化 各个对象的成员变量的初始 值的 System.gc(); 这是 java 中 调用垃圾回收机制的函数。 启用这个函数后 垃圾回收机制会把内存中的垃圾清 楚掉。 (对象在消除之前 会调用 finalaze 方法)
Java中进行赋值操作或函数调用中传 递参数时,遵循值传递的原则:
基本类型数据传
递的是该数据 的值本身 引用类型数据传递的是对对象的 引用(句柄) ,
而非对象本身
静态代码块
内部类
我们经常需要在一个类中,创建另 外一个类的对象,并使用另外一个 类中的方法,但是那个方法又要调 用这个类的成员变量。这个时候如 果去编译程序,会提示出错 如下 图
这是因为
在内部类中 如果 形参 和 内部 类的成员变量 和 外部类 的成员 变量一样 就用上边的方法
Final 关键字 使用 final 关键字修饰的类 是最终类 继承的。也就是说 它不能有子类。 使用 final 关键字修饰的变量相当于常量。是不能再去修改 的 (他只有一次赋值的机会, 可以在变量初始化的时候赋值, 另外一种是在构造函数中 给他赋值。。 ) 使用 final 修饰的方法也是最终方法, 只能继承不能覆盖(就 是 重 写 ) 。 是不能被其他类所
抽象类
继承用关键字
extendeds
实现接口用 implements
接口
多线程
Java 程序中,只要有一个前台线程在运行,整个进程就不结 束,在 java