JVM :英文名称(Java Virtual Machine),就是我们耳熟能详的 Java 虚拟机。它只认识 xxx.class 这种类型的文件,它能够将 class 文件中的字节码指令进行识别并调用操作系统向上的 API 完成动作。所以说,jvm 是 Java 能够跨平台的核心,具体的下文会详细说明。
JRE :英文名称(Java Runtime Environment),我们叫它:Java 运行时环境。它主要包含两个部分,jvm 的标准实现和 Java 的一些基本类库。它相对于 jvm 来说,多出来的是一部分的 Java 类库。
JDK :英文名称(Java Development Kit),Java 开发工具包。jdk 是整个 Java 开发的核心,它集成了 jre 和一些好用的小工具。例如:javac.exe,java.exe,jar.exe 等。
首先不能使用浮点数进行表示;
原因:浮点数是有限的,离散的,舍入误差,表示大约的但不是等于。
BigDecimal可表示任意精度的小数,不管它的范围有多大。BigDecimal是用array来存储数字的,每一次输入表示一个数字。因此,BigDecimal可以表示任意大小的数。
另外,BigDecimal是一个类,不是基本类型,需要调用方法来实现数的运算。它有四中方法:add, subtract, multiply, 和 divide。这里m1和m2相乘采用了multiply。
<< 相当于 *2
>> 相当于 /2
- //字符串连接符
- System.out.println(""+a+b);//1020
- System.out.println(a+b+"");//30
== 比较的是变量(栈)内存中存放的对象的(堆)内存地址,用来判断两个对象的地址是否相同,即是否是指相同一个对象。比较的是真正意义上的指针操作。
equals用来比较的是两个对象的内容是否相等,由于所有的类都是继承自java.lang.Object类的,所以适用于所有对象,如果没有对该方法进行覆盖的话,调用的仍然是Object类中的方法,而Object中的equals方法返回的却是==的判断。
- public class ForDemo01 {
- public static void main(String[] args) {
- //计算0到100之间的奇数和与偶数和
- int oddSum=0; //奇数
- int evenSum=0; //偶数
- for (int i = 0; i < 100; i++) {
- if(i%2!=0){
- oddSum+=i;
- }
- else {
- evenSum+=i;
- }
- }
- System.out.println("奇数和:"+oddSum);
- System.out.println("偶数和:"+evenSum);
- }
- }
- public class ForDemo02 {
- //用while或for循环输出1~1000之间能被5整除的数,并且每行输出3个
- public static void main(String[] args) {
- for (int i = 0; i <= 1000; i++) {
- if(i%5==0){
- System.out.print(i+"\t");
- }
- if(i%(5*3)==0){
- System.out.println();
- }
- }
- }
- }
- public class ForDemo03 {
- public static void main(String[] args) {
- //打印99乘法表
- for (int i = 1; i <= 9; i++) {
- for(int j = 1; j <= i; j++){
- System.out.print(i+"*"+j+"="+(i*j)+"\t");
- }
- System.out.println();
- }
- }
- }
- public class TestDemo01 {
- //打印5行三角形
- public static void main(String[] args) {
- for (int i = 0; i <= 5; i++) {
- for(int j = 5;j >= i;j--){
- System.out.print(" ");
- }
- for(int j = 1;j <= i;j++){
- System.out.print("*");
- }
- for(int j = 1; j< i;j++){
- System.out.print("*");
- }
- System.out.println();
- }
- }
- }
封装
- 即把对象的属性和方法包裹起来, 只能通过约定好的接口实现访问
- 封装是一种信息隐藏技术,在java中通过关键字private实现封装。、
继承
继承是面向对象的最显著的一个特征。继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。
为什么要继承呢:1、反映现实的真实关系
2、减少代码冗余
3、对父类的属性和方法进行扩展和重写
多态
多态主要是基于继承和重写,最终可以实现相同的类型调用相同的方法,结果不相同