JAVA特点
面向对象
简单性(自动内存管理机制、不易造成内存溢出;简化流程处理、语义清晰)
跨平台(操作系统、服务器、数据库)
计算机执行机制
编译执行:将源文件编译成平台相关的机器码文件,后执行
执行效率高、不可跨平台
解释执行:将源文件交给不同的平台独有的解释器
执行效率低,可以跨平台
JAVA执行机制
先编译,后解释
将源文件编译成字节码文件(平台中立文件),再将字节码文件进行解释执行。
JAVA的设计理念:Write Once Run Anywhere
JVM:Java virtual machine(在不同的硬件系统中模拟出相同的环境)
int和boolean不相容,例:while(1)是错误的
面向对象
类与对象
认识变量
primitive主数据类型和引用
实际上并没有对象变量这样的东西,只有引用到对象的变量。对象引用变量保存的是存取对象的方法,他并不是对象的容器,而是类似指向对象的指针。在JAVA中我们不会也不该知道引用变量中实际装载的是什么,它只是用来代表单一的变量。只有JAVA虚拟机才会知道如何使用引用来取得该对象。
所有的对象引用都具有相同的大小,而不管它实际上所引用的对象大小。
数组也是对象
对象的数组:Dog[] pets = new Dog[7];
JAVA注重类型,一旦数组被声明出来,你就只能装入所声明类型的元素。
你不能将Cat类型的对象转入Dog数组中,但你可以将byte类型放进int类型中,被称为隐含展开。
对象的行为
状态影响行为,行为影响状态
参数和返回值
如果传入的参数是对象,实际传入的是引用对象的变量所携带的远程控制而不是对象本身。
返回值可以隐式转换成所需的类型。
封装
封装强迫其他的程序一定经过setter,setter就能检查参数。有些setter只是把值设给变量,好处是需要改变参数的时候,不用改变别的代码。
局部变量没有初始值,而实例变量有初始值。
==用来对比两个primitive变量的字节组合