Gosling:“语言是实现目标的工具,而不是目标本身。”
JAVA优于C++之处
- Java清除了C++中不常用到的东西,更为纯净。 Java单继承,而C++多重继承。
- Java更为健壮,与C++相比,其指针模型消除重写内存和损坏数据的可能性。Java编译器可以检测到其他语言在运行时才能检测到到的问题。
- 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种基本数据类型:
- 其中4中整型,分别是int,short,long,bit。
- 2种浮点型,分别是double,float。
- 一种表示Unicode编码的字符单元的字符类型char型。
- 一种表示真值的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注释分三种:
- // 注释内容(到本行末尾结束)
- /* 注释内容 */
- /** 注释内容*/ (可以生成文档)
定义/声明的区别
定义: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+" ");