object oriented program
面向对象编程。
class
基于过程的。
封装
继承
多态
oriented object analyze
oriented object design
main(){
...
}
class{
}
class:对现实事物软件抽象。
Object:切实存在的个体,实例。
new
c = null ;
c == null ?
null
new
成员变量:对象的成员变量在heap区。
成员函数.
局部变量在stack中,没有默认的初始化值。
runtime
Person p = new Person();
1.定义p
2.创建对象(heap,产生地址)
3.赋值
p = &p ;
NullPointerException.
没有显式的指针操作。
class ..{
//成员变量
String name ;
int age ;
//成员函数
void run(){
}
}
Person p = new Person();
p.name
p.age
class Dog{
name "大黄"
color "yellow"
watch(){
}
catchMouse(){
}
}
Dog d1 = new Dog();
new Dog();
1.只用一次。
2.做为参数传递给方法
1.封装
2.继承
3.多态
private:私有
public :公共
java -x //输出java的非标准选项
java -Xss<size> xxx //设置stack大小
java -Xss512k ... //stack默认大小是1m
java -Xss256k .. //1k
java -Xss256k .. //1k
java -Xss128k .. //1k
java -Xss64k .. //1k
java栈默认是1m,至少是108k,通过
java -Xss64k ...有错误提示。
默认是物理内存的1/8.
java -Xmx512m -Xmx512m ... //-Xmx设置堆最大值 , -Xms设置堆初始值。
java -Xmx4g -Xms4g HeapStackDemo
Construct
0.类有默认的构造函数.
public Xxx(){
}
一旦定义了有参数的构造函数,默认的构造函数就会被回收到。
1.函数和类同名
2.不需要定义返回类型
3.没有具体的返回值
4.作用是初始化对象
1.成员变量
2.成员函数
3.构造函数
4.构造代码块(对象创建的过程,就是要先走构造代码块,然后再走构造函数。)
5.静态代码块
在类加载过程中调用,而且只调用一次。
new Dog();
1.在内存中分配内存空间。
2.对成员变量赋默认值。
3.执行构造代码块或赋值语句,执行顺序从上到下。
4.构造函数。
static成员,跟对象无关,访问的方式是Class.XXX()
this:指向对象自身的引用。可以看做是类中内置的成员变量。
this():一个构造函数调用另外一个构造函数的时候(构造函数的重用),而且必须作为第一条语句。
class ConstructorDemo2 {
public static void main(String[] args) {
Dog d = new Dog("大黄","yellow");
System.out.println(d.name + "," + d.color);
}
}
class Dog{
public String name ;
public String color ;
public Dog(String name){
this.name = name;
}
public Dog(String name,String color){
this(name);
this.color = color;
this.name = name;
}
}
bean.
getter/setter
1.构造为什么没有返回值类型声明?
2.阐述对象创建的过程。
3.为什么构造代码块可以访问之后定义的成员变量?
4.静态成员和非静态成员的区别?
5.如何理解this,什么时候使用this?
6.构造函数调用其他构造函数的方式? ——> this()
7.绘制java stack + heap的运行机制,如何调整堆和栈的空间大小。