java基础篇笔记<二>

来源:互联网 发布:金蝶软件经销商 编辑:程序博客网 时间:2024/04/30 13:54

JDK(java development kit),java的开发和运行环境,java的开发工具和jre
JRE(java runtime enviroment),java程序的运行环境,有java的运行时需要的类库+jvm

java 分为5片内存
1.寄存器 2.本地方法区 3.方法区 4.栈 5.堆
栈:储存的都是局部变量(函数中定义的变量,函数上的三叔,语句中的变量)
只要该数据运算完成所在的区域结束,该数据就会被释放。
堆:用于储存数组合对象,也就是实体(用于封装多个数据的)。
1.每一各实体都有内存的首地址值。
2.堆内存的变量都有默认的初始值,因为数据类型不同,职业不同。
3.垃圾回收机制。

类中有主方法
主方法的存在,仅为该类是否需要独立运行,如果不需要,主要方法是不用的。
(主方法的解释:保证所在类是独立运行,是程序的入口,首先被JVM调用)

成员变量和局部变量的区别
1.成员变量直接定义在类中。
局部变量定义在方法中,参数上,语句中。
2.成员变量在这个类中有效。
局部变量只在这个所属的大括号中有效,大括号结束,局部变量失去作用。
3.成员变量是存储在堆内存中的,随着对象的产生或者
局部变量是存在与栈内存中,随着所属的区域的运行而存在,结束而释放。

创建一个对象都在内存中做了什么事?
Person p = new Person();
1.先将硬盘上指定位置的Person.class文件加载到内存上去。
2.在执行main方法时,在栈内存中开辟一块main内存的空间(压栈-进栈),在栈区分配一个变脸P
  3.在对内存中开辟一个实体空间,分配了一个内存首地址。new
4.堆空间进行空间分配,并进行初始化。
5.对空间的属性进行初始化。
6.进行实体的构造块的代码初始化。
7.调用实体对应的构造函数,进行构造函数的初始化。
8.将首地址赋给p,p变量就引用了该实体。

<<1 是乘2 >>1是除2 移位的效率高

this的两种用法:
1.代表对象,所在函数的对象的引用,如果该功能内部使用到了该功能的对象,这时就用this来表示这个对象。
2.用于构造函数见得调用,调用格式:this(实际参数);调用的是本类中的对应的参数的构造函数
(注意:用this调用构造函数,必须定义在构造函数的第一行,因为构造函数是用于初始化的,不执行没有内存空间等)

this()与super()
1.子类中所有的构造函数都会默认访问父类的空参数的构造函数,因为每一个子类的构造函数第一行都默认有super();。
2.如果父类中没有空的构造函数,那么子类的构造函数内,必须通过super语句指定要访问的父类中的构造函数。
3.如果子类的构造函数中用this来指定调用子类自己的构造函数,那么被调用的构造函数也一样会访问父类的构造函数。

static :是一个修饰符,用于修饰成员(成员变量和成员函数)
特点:
1.实现对象中的公共属性的共享,可以就这个属性进行静态修饰
2.被静态修饰的成员,可以直接被类名调用。也就是说,静态成员多了一种调用方式。如:类名.静态方式。
3.静态随着类的加载而加载,而且是优先于对象的存在。
弊端: 1.有些数据是对象特有的不能被对象共享,也就是说不能被静态修饰,否则会特有的数据会变成共享的数据。
2.静态方法只能访问静态的成员,不可以访问非静态成员,因为静态的方法加载时会早于对象的存在,所以没有办法权访问对象的成员。
3.静态方法中不能使用this,super关键字。因外this和super是代表了对象,静态时不一定有对象,所以无法使用。

什么时候定义静态化成员变量?
1.成员变量(数据共享时静态化)。
2.成员函数(方法中没有调用特有的数据,就定义成静态)。

静态变量和成员变量的区别
1.成员变量属于对象,所以也称为实例变量。
静态变量属于类,所以也称为类变量。
2.成员变量属于堆内存。
静态变量存在于方法块中。
3.成员变量随着对象创建而存在,随着对象回收而消失。
静态变量随着类的加载而存在,随着类的消失而消失。
4.成员变量只能被对象所调用。
静态变量可以被类加载,也可以被类名调用。
(所以,成员变量可以称为对象的特有数据,静态变量可以称为对象的共享数据)

静态的注意:静态的生命周期很长。
静态代码块:就是一个有静态关键字标示的代码块区域,定义在类中。
作用:可以完成类的初始化。静态代码块随着类的加载而执行,而且只执行一次(new 多个对象只执行一次)
如果和主函数在同一类中,优先于在主函数。

静态代码块>>构造代码块>>构造函数>>普通代码块
java有4种代码块:
1.普通代码块:直接在一个方法中出现的{}就称为普通代码块
2.构造代码块:直接在类中定义的代码块{}称为构造代码块,构造代码块优先构造方法执行
3.静态代码块:使用static关键字声明的代码块称为静态代码块,静态块的主要目的是用来为静态属性初始化
4.同步代码块:主要出现在多线程中

接口

抽象类和接口
抽象类:一般用于描述一个体系单元,将一组共性内容进行抽取,特点:可以在类中定义抽象内容让子类实现。
接 口:一般用于定义对象的扩展功能,是在继承之外还需要这份对象具备一些功能。

(注笔记内容来源于豆丁)
http://www.docin.com/p-568716788.html&s=2758B018A28835A5E7177293252E49E6?qq-pf-to=pcqq.group

0 0
原创粉丝点击