前言
Java,这个在全球范围内广受欢迎的编程语言,自其诞生之日起,就注定要在计算机科学的历史上留下浓墨重彩的一笔。起源于20世纪90年代,Java的初衷是打造一种能够在多种平台上运行的、安全且易于使用的编程语言。它不仅成功地实现了这个目标,而且在过去的几十年里,Java语言及其平台不断演进,逐渐成为了企业级应用和互联网开发的中坚力量。
Java的发展
Java的起源可以追溯到1991年,当时由Sun Microsystems公司的詹姆斯·高斯林(James Gosling)领导的一个团队开始了一项名为“Green Project”的秘密项目,旨在开发一种新型编程语言和相关技术,以满足当时消费类电子产品(如机顶盒、PDA等)对软件的需求。这个项目的成果最终在1995年以Java的名字正式对外发布。Java 1.0(1996年)、Java 1.1(1997年)、Java 1.2;Java的成熟与标准化(2000-2010)Java 1.3(2000年)、Java 1.4(2002年)、Java 1.5(2004年,Java 5.0)、Java 1.6(2006年,Java 6)、Java 1.7(2011年,Java 7);Java的现代发展与快速迭代(2010至今)、Java 7(2011年)、Java 8(2014年)、Java 9及以后版本(2017年至今)
"Write once,run anywhere "
目录
一、JDK,JRE与JVM的关系
JDK是Java开发工具包 ,包括了Java运行环境JRE(Java Runtime Envirnment)、一堆Java工具(javac/java/jdb等)和Java基础的类库(即Java API 包括rt.jar)。
JRE是运行基于Java语言编写的程序所不可缺少的运行环境。也是通过它,Java的开发者才得以将自己开发的程序发布到用户手中,让用户使用。
JVM是整个Java实现跨平台的最核心的部分,所有的Java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行。也就是说class并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释给本地系统执行
JDK中包含了JRE,JRE又包含JVM
Java程序经编译后会产生byte code
Java程序编译使用命令javac 运行,使用 java 命令
二、Java的基本类型
1.Java的数据类型
基本数据类型
数据类型 | 关键字 | 内存占用 | 范围 |
字节型 | byte | 1字节 | -128~127 |
短整型 | short | 2~ | -32768~32767 |
整型 | int | 4~ | -2^31~2^31-1 |
长整型 | long | 8~ | -2^63~2^63-1 |
单精度浮点数 | float | 4~ | 有范围,一般不关注 |
双精度浮点数 | double | 8~ | 有范围,一般不关注 |
字符型 | char | 2~ | 0~65535 |
布尔型 | boolean | 没有明确规定 | true和flase |
引用数据类型:
String | 数组 | 类 | 接口 | …… |
Java可以认为都是有符号的。
2.变量
包装类型 | ||
byte | Byte | byte a = 3; |
short | Short | short a = 3; |
int | Integer | int a = 3; |
long | Long | long a = 3L; |
float | Float | float a = 3.0f; |
double | Double | double a = 3.0;(只精确到小数点后几位) |
char | Character | char ch = 'a' char ch = '你' |
boolean | Boolean | boolean flag = true or flase; |
java 的字符类型采用的是 Unicode编码方案,每个 Unicode码占用16个比特位。
Integer_MAX:打印最大范围
Integer_MIN:打印最小范围
3.类型转化
自动类型转化:
int a = 100;
long b = 10L;
b = a;//a自动提升为Long
强制类型转化:
int a = 100;
long b = 20L;
a = (int)b;//b强转为int
强转可能会发生数据丢失;
类型提升:
int a = 10;
long = 20L;
long c = a + b;//a提升为long
对于小于4个字节的运算,会先把小于4个字节的,提升为4个字节
byte a = 10;
byte b = 20;
int c = a + b;//byte = (int)(a + b),会数据丢失
布尔类型boolean由于其本身所代码的特殊含义,boolean类型与其他基本类型不能进行类型的转换(既不能进行自动类型的提升,也不能强制类型转换),否则,将编译出错。
4.字符串类型
字符串拼接一个数据,整体就是一个字符串;
String str1 = "abcdef";
String str2 = "hello";
int a = 10;
int b = 20;
System.out.println(str1+str2);//'+'表示拼接
//abcdefhello
System.out.println("a=" + a + ",b=" + b);//a=10,b=20;
System.out.println("a+b+" + a+b);//a+b=1020;
System.out.println("a+b+" + (a+b));//a+b=30;
System.out.println(a+b+"a+b=");//30a+b=
int 转化为 String:
int a = 123;
String str = a+"";
int a = 123;
String ret = String.valueOf(a);
String 转化为 int
String str = "abcdef";
int val = Integer.parse(str);