java内存:
1.方法区
又称静态区,存放所有类和static变量(均为程序中永远的唯一元素)
2.栈
存放调用的方法和方法中的基本数据类型和对象的引用
3.堆 (包括运行时常量池)
存放所有对象(new出的东西)和成员变量
4.程序计数器(PC寄存器)
5.虚拟机栈
注:Java的基本数据类型都是存储在栈中是错误的:
方法中的基本数据类型(和对象的引用)在栈中,而类中的基本数据类型(成员变量)是在堆中的
一段程序运行时,
1.先把所有类和static变量放在方法区中,
2.找到包含main方法的类,开始运行main,即->将main入栈,对main语句逐句执行
3.执行过程中:
方法中的基本数据类型存放于栈本身
new出的对象存放于堆中,栈中保存该对象在堆中的地址(引用)
若调用方法,即将该方法入栈,方法执行结束后出栈
直至运行main方法结束后,main出栈
程序结束
字符集与编码:
字符集是一个系统支持的所有抽象字符的集合。
字符编码是把字符集中的字符编码为特定的二进制数,以便在计算机中存储。
字符集和字符编码一般都是成对出现的,如ASCII、IOS-8859-1、GB2312、GBK,既表示了字符集又表示了对应的字符编码。
特例:Unicode比较特殊,有多种字符编码(UTF-8,UTF-16等)。
1、ASCII码
共定义128个字符,主要用于显示现代英语。
2、ANSI
ANSI代表多种字符编码