1.Java的发展史
版本 描述
1991年1月 Sun公司成立了Green项目小组,专攻智能家电的嵌入式控制系统
1991年2月 放弃C++,开发新语言,命名为“Oak”
1991年6月 JamesGosling开发了Oak的解释器
1992年1月 Green完成了Green操作系统、Oak语言、类库等开发
1992年11月 Green计划转化成“FirstPerson”,一个Sun公司的全资母公司
1993年2月 获得时代华纳的电视机顶盒交互系统的订单,于是开发的重心从家庭消费电子产品转 到了电视盒机顶盒的相关平台上
1994年6月 FirstPerson公司倒闭,员工都合并到Sun公司。Liveoak计划启动了,目标是使用Oak语言设计出一个操作系统
1994年7月 第一个Java语言的Web浏览器WebRunner(后来改名为HotJava),Oak更名为Java
1994年10月 VanHoff编写的Java编译器用于Java语言
1995年3月 在SunWorld大会,Sun公司正式介绍了Java和HotJava
1996年1月 JDK1.0发布
1997年2月 J2SE1.1发布
1998年12月 J2SE1.2发布
1999年6月 发布Java的三个版本:J2SE、J2EE、J2ME
2000年5月 J2SE1.3发布
2001年9月 J2EE1.3发布
2002年2月 J2SE1.4发布
2004年9月 J2SE1.5发布,将J2SE1.5改名JavaSE5.0
2005年6月 JavaSE6.0发布,J2EE更名为JavaEE,J2SE更名为JavaSE,J2ME更名为JavaME
2006年12月 JRE6.0发布
2006年12月 JavaSE6发布
2009年4月 Oracle收购Sun
2009年12月 JavaEE6发布
2011年7月 JavaSE7发布
2014年3月 JavaSE8发布
2017年9月 JavaSE9发布
2.Java的三大平台
Java SE
JAVA SE是运行JAVA程序不可缺少的环境。可以分为四个主要的部分:JVM、JRE、JDK与Java语言。
JVM(Java Virtual Machine)。JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。
JRE(Java SE Runtime Environment)。运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。
JDK(Java SE Development Kits)。 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了Java的运行环境,JAVA工具和JAVA基础的类库。
-Java语言。Java语言只是 Java SE 的一部分,除了语言外,Java最重要的就是提供庞大且强大的标准API,提供字符串处理、数据输入/输出、网络套件、用户窗口接口等功能。
Java EE
Java EE 以 Java SE 为基础,定义了一系列的服务、API、协议等,适合于开发分布式、多层次、以组件为基础、以Web为基础的应用程序,整个 Java EE 的体系是相当庞大的,比如 JSP、Servlet、JavaMail等。必须在 Java SE 上奠定良好的基础,再来学习 Java EE 的开发。
Java ME
Java ME 是 Java 平台版本中最小的一个,目的是作为小型数字设备上开发及部署应用程序的平台,像是消费性电子产品或嵌入式系统等,最为人熟悉的设备如手机、股票机等。可以使用 Java ME 来开发出这些设备上的应用程序。
3.JDK,JRE,JVM是什么
(1)JDK(Java Development Kit)开发工具包
(1) 编译器
(2) 解释器
(3) 源代码
(2)JRE(Java Runtime Environment) Java 运行环境
(1)源代码
(2) JVM
(3)JVM(Java Virtual Machine) Java 虚拟机
安装JDK后为什么要配置环境变量
1、如果不配置环境变量要到所安装jdk的目录下的bin才能执行,
因为把jdk执行的指令在所安装jdk的目录下的bin下,所以要在bin下执行cmd里面java命令,
配置环境变量的目的是在任何目录下都能执行java命令,不用到jdk的bin目录下就能执行
2、配置环境变量:
(1)我的电脑--属性--高级系统设置--环境变量
(2)增加JAVA_HOME环境变量,指向jdk的安装目录 如 d:\program\jdk8
(3)编辑path环境变量,增加%JAVA_HOME%\bin (告诉系统要到JAVA_HOME这个指向的目录下的bin目录去执行文件)
4.Java语言跨平台的原理
首先我们来说一下Java代码的运行过程:
1、首先将java文件编译成字节码(.class)文件;
2、使用Java虚拟机(JVM--Java Virtual Machine)运行运行字节码文件。
上面的步骤中,第一步中,在所有的平台上生成的字节码文件都是相同的。
上面的步骤中,第二步中,在不同的平台上运行字节码文件的Java虚拟机是不同的。
Java的开发团队针对不同的平台开发出了对应版本的java虚拟机,这使得同一个java代码文件可以再不同的平台上运行。
所以,java能实现跨平台运行是因为有各种平台对应版本的java虚拟机的支持。
5.Java程序执行的过程
第一步:将java源码(.java文件)通过编译器(javac.exe)编译成JVM文件(.class文件)
第二步:将JVM文件通过java.exe执行,输出结果
6.javac和java的区别
java编译器名称是javac,是将源文件编译为字节码文件的程序,而java是java解释器的名称,也就是解释和执行字节码文件的程序。
java源文件必须是具有 .java 扩展名
java字节码文件必须具有 .class 扩展名
7.java文件和class文件的区别
.java文件是一个文本文件,就是我们用java语言写成的代码。
.class文件是一种二进制文件,由.java文件通过javac这个命令(jdk本身提供的工具)编译生成的一个文件,可以由jvm(java虚拟机)装载(类装载),然后对java解释执行,就是运行时的程序。
8.java的基本数据类型
9.byte,short,int,long四种类型的区别
(1) byte
byte类型占1个字节,即8位,其中最高位为符号位。
所以,byte类型的取值范围为−28−28 ~ 27−127−1
即−128−128 ~ 127127
(2) int
int类型 占4个字节,即32位,其中最高位为符号位。
所以,int类型的整数取值范围为: −231−231~231−1231−1
即 −2147483648−2147483648 ~ +2147483647+2147483647
(3) short
short类型占2个字节,即16位,其中最高位为符号位。
所以,short类型的整数取值范围为: −215−215~215−1215−1
即 −32768−32768 ~ +32767+32767
(4) long
long类型占8个字节,即64位,其中最高位为符号位。
所以,short类型的整数取值范围为: −263−263~263−1263−1
即 −9223372036854775808−9223372036854775808 ~ +9223372036854775807
10.计算机最小的存储单位,最小的空间单位
计算机中存储容量的最小的单位是位(bit),最基本的单位是字节(byte)。
11.bit,B,KB,MB,GB,TB,PB分别是什么单位,换算是什么
1Bit (1个比特位);
1Byte (1个字节) = 1B = 8Bit ;
1KB = 1,024B = 8,192Bit;
1MB = 1,024KB = 1,048,576B = 8,388,608Bit;
1GB = 1,024MB = 1,048,57KB = 107,373,568B = 858,988,544Bit;
1TB = 1,024GB = 1,048,57MB = 107,373,568KB = 109,950,533,632B = 879,604,269,056Bit;
1PB = 1,024TB = 1,048,57GB = 107,373,568MB = 109,950,533,632KB = 112,589,346,439,168 B = 900,714,771,513,344Bit;
12.自己预习和复习的内容整理
多行注释—— /*..............*/
基本类型的类型转换
运算符
运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。Java 语言使用运算符将一个或多个操作数连缀成执行性语句,用以实现特定功能。
Java 语言中的运算符可分为如下几种。
算术运算符,赋值运算符,比较运算符,逻辑运算符,位运算符,类型相关运算符
++:自加。该运算符有两个要点:①自加是单目运算符,只能操作一个操作数;②自加运算符只能操作单个数值型(整型、浮点型都行)的变量,不能操作常量或表达式。运算符既可以出现在操作数的左边,也可以出现在操作数的右边。但出现在左边和右边的效果是不一样的。如果把++放在左边,则先把操作数加1,然后才把操作数放入表达式中运算;如果把++放在右边,则先把操作数放入表达式中运算,然后才把操作数加1。
&与&&的区别与此类似:&总会计算前后两个操作数,而&&先计算左边的操作数,如果左边的操作数为false,则直接返回false,根本不会计算右边的操作数。