Gosling:“语言是实现目标的工具,而不是目标本身。”

JAVA优于C++之处

  1. Java清除了C++中不常用到的东西,更为纯净。 Java单继承,而C++多重继承。
  2. Java更为健壮,与C++相比,其指针模型消除重写内存和损坏数据的可能性。Java编译器可以检测到其他语言在运行时才能检测到到的问题。
  3. Java数据类型的大小是固定的,如int型在任何编译器中都是32位,而C++中int型的大小取决于操作系统,有可能是16位,有可能是32位,约束在于不能超过longint型, 不能小于 short int型。

1996年第一个Java版本发布,当时只有211个类与接口,而到了2014年Java8的发布就已经有了4240个类与接口。
XML是一种描述数据的方式,任何语言都可以处理XML数据,而Java 中的API对XML文件提供了很好的支持。
早期的Java并不开源,当Oracle收购sun之后,Java逐渐开源。
Java区分大小写。
Java中Boolean 不能将 0 定义位false ,1 定义为真,而c++ 可以混用。

JDK和JRE 的区别

JDK: Java Development Kit
JRE: Java Running Environment
JRE是Java运行时的开发环境,而JDK则是Java 的开发工具包,JDK包含JRE。
如果只是运行java程序,装JRE即可,如果编写Java程序,装JDK。

关键字

public : 访问修饰符,控制程序其他部分对这段代码的访问。
class : Java程序的全部内容都包含在类中。类作为加载程序的容器,而程序逻辑则定义了应用程序的行为。
main 一个程序必须要有主函数,而且得是public。
数据类型:

Java是强类型语言,拥有8种基本数据类型:

  1. 其中4中整型,分别是int,short,long,bit。
  2. 2种浮点型,分别是double,float。
  3. 一种表示Unicode编码的字符单元的字符类型char型。
  4. 一种表示真值的Boolean型。

Unicode 和 char
Unicode的出现时为了统一不同编码,设计Java时采用UTF-16,大概又六万多个位置。而很快六万多个位置都被中文,日文以及全世界语言的特殊符号填满了,此时位置不够用了。于是设计人员在此基础上又加了一个概念:码点。17个码点的出现,使得位置增为120万多个。而在Java中char 只是UTF-16 的一个代码单元。
Boolean
Java中Boolean 只有两个值true/false ,整型和布尔值之间不能互换。而C++中可以将0定义位false ,1定义位true。Java中不可以这样用。
变量
变量名可以由字母,数字,下划线,$组成。
变量被生命后必须初始化。
Strictfp
浮点型的计算位64位,而处理器寄存器为80位,不同的处理器计算出来的结果不同,无法保证可移植性。
而Java虚拟机为了保证可移植性,采用截断的方法,统一为64位。
但这种做法导致了速度的减慢与误差的产生。于是在可移植性和精度之间折中,进行改进,提出了strictfp关键字,进行严格的浮点计算。但一般这个关键字不怎么用。

public static strictfp void main(final String[] args)

java注释:

java注释分三种:

  1. // 注释内容(到本行末尾结束)
  2. /* 注释内容 */
  3. /** 注释内容*/ (可以生成文档)

定义/声明的区别

定义:int i = 10 ;
声明:extern int i ;

常量

final 等价于 const
nextline() 以行为单位输出
next()以空格为单位输出

输入

Scanner in = new Scanner(System.in);
        String name = in.nextLine();
        String age = in.next();
        System.out.println(name);
        System.out.println(age);

短路:

A&&B 与A&B 的区别 前者如果A为假继续判断B真假。
而后者判断到A为假时就不进行B的判断了,因为一假即假。
同理 || 与 | 两真才真。
求布尔值时会涉及短路。但计算值时不采用短路,两者都要计算。

大数值

BigInteger: 实现了不同的整数运算。
**BigDecimal:**实现了不同的浮点运算。
valueOf
使用静态的valueOf方法将数值转换为大数值。

add/subtract/multiply/divide/mod : 分别对应和/差/积/商/取余

BigDecimal bigDecimal = new BigDecimal(100);
        BigDecimal bigDecimal1 = bigDecimal.add(bigDecimal);
        BigDecimal bigDecimal2  = bigDecimal.divide(bigDecimal);
        BigDecimal bigDecimal3 = bigDecimal.multiply(bigDecimal);
        BigDecimal bigDecimal4 = bigDecimal.subtract(bigDecimal);
        System.out.println(bigDecimal1+" "+
                bigDecimal2+" "+bigDecimal3+" "+bigDecimal4+" ");