1.java跨平台的原理
Java是“一次编写,到处运行(Write Once,Run any Where)"的语言,因此采用Java语言编写的程序具有很好的可移植性,而保证这一点的正是Java的虚拟机机制。在引入虚拟机之后,Java语言在不同的平台上运行不需要重新编译。
Java跨平台原理
由源文件(.java)—>字节码文件(.class)(二进制文件)-----> 解释---->Unix,Win,Linux等机器。
1.一次编译,到处运行
2.编译器的作用:将源文件编译成class文件
3.虚拟机的作用:将字节码文件解释成对应平台机器码并执行。
4.java可以实现跨所有的平台?只有提供并且安装了相对应的虚拟机就可以跨该平台。
5.虚拟机和解释器的关系:解释器是虚拟机的一个重要的组成部分。
6.Java语言的执行要经过编译和解释两个阶段。
2.基本数据类型
整型:
byte 1个字节 二进制位8位 00000001 -128~127 1byte = 8bit 默认值:0
short 2个字节 二进制位16位 是int的二分之一
int 4个字节 二进制位32位
long 8个字节 二进制位64位 long l1 = 10L;
字符型:
char 1个字节 c = 'a';
浮点型:
float 4个字节 f1 = 1.1f; //单精度
double 8个字节 d1 = 2.2; //双精度
布尔型:
boolean 1个字节 b2 = true;
3.java中标识价格BigDecimal
1.不论是float 还是double都是浮点数,而计算机是二进制的,浮点数会失去一定的精确度。
2.Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数。在实际应用中,需要对更大或者更小的数进行运算和处理。
4.双精度&单精度
1.单精度和双精度精确的范围不一样
2.单精度,一般在计算机中存储占用4字节,也就是32位,有效位数为7位;
3.双精度〈double〉在计算机中存储占用8字节,64位,有效位数为16位。
4.单精度在一些处理器上比双精度更快而且只占用双精度一半的空间.
5.但是当值很大或很小的时候.它将变得不精确。当你需要小数部分并且对精度的要求不高时,单精度浮点型的变量是有用的。
单精度是这样的格式,1位符号,8位指数,23位小数。
双精度是这样的格式,1位符号,11位指数,52位小数。
5.面向对象三大特征(封装,继承,多态)
封装。也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。
继承。它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。通过继承创建的新类称为“子类"或"派生类",被继承的类称为“基类"、“父类"或“超类"。
多态。它是指在父类中定义的属性和方法被子类继承之后,可以具有不同的数据类型或表现出不同的行为,这使得同一个属性或方法在父类及其各个子类中具有不同的含义。
6.装箱&拆箱
Java为每一个基本数据类型都引入了对应的包装类型,从Java 5开始引入了自动装箱/拆箱机制,把基本类型转换成包装类型的过程叫做装箱;反之,把包装类型转换成基本类型的过程叫做拆箱,使得二者可以相互转换。
1.包装类型可以为null,而基本类型不可以。
2.包装类型可用于泛型,而基本类型不可以。
3.基本类型比包装类型更高效。基本类型在栈中直接存储的具体数值,而包装类型则存储的是堆中的引用。很显然,相比较于基本类型而言,包装类型需要占用更多的内存空间。
6.1自动装箱:将基本数据类型重新转化为对象
自动拆箱:将对象重新转化为基本数据类型
6.2int和Integer有什么区别?
7.子类继承父类,子类必须能够访问到父类的构造方法,protected肯定能访问到