一.java的发展历程
1991年,sun公司启动了“green”项目,想要设计一种小型的计算机语言用于有线电视机顶盒此类产品的消费,因此便开发出了一种基于“C/C++”语言的语言,最先称为“Oak”,后来开发人员发现“Oak”已是存在的一种计算机语言,便已公司员工们最爱喝的爪哇岛咖啡命名为“Java”,图标也定为泡好的咖啡的形状。
1996年,sun公司发布了第一个java 1.0版本,但由于有较大的缺陷性和局限性,不能用于开发
1991年,Java1.1发布, 弥补了1.0中的很多不足和明显的缺陷。改进了反射能力,但仍存在一定的局限性。
1998年,Java1.2发布,Java也正式改名J2SE,并推出了三大版本:Java标准版——J2SE(Standard Edition);服务器端开发的企业版——J2EE(Enterprise Edition);以及手机嵌入式设备微型版——J2ME(Micro Edition)
1999年 Hotspot虚拟机发布; 2000年,J2SE 1.3 发布;2002年,J2SE1.4发布;2004年,J2SE 1.5发布, 这是一个里程碑版本;2005年,Java SE 6发布,J2EE改名为 Java EE,J2SE改名为 Java SE,J2ME改名为 Java ME
2006年,sun公司宣布JDK开源, Java 语言作为免费软件对外发布
2009年,Oracle公司收购了Sun公司,取得了 Java 的商标版权。2011年,JavaSE 7发布
2014年,JavaSE 8 发布。 这个版本, 在近 20 年中这个版本变更最大, Java SE 8 包含了 “函数式” 编程方式,可以很容易的表述并发执行的计算。 这个版本也是现在企业中使用范围最广的一个版本。
2017年,avaSE 9发布,Oracle 决定将JavaEE移交给开源组织,最后 Eclipse 基金会接手,JavaEE更名为Jakarta EE(雅加达)。
从 2018 年开始, 每6个月就会发布一个 Java 版本, 以更快地引入新特性。这里又分为 LTS 版和最新版。 生产环境中最好只使用 LTS 版本, 因为这个版本更加稳定, 维护周期更长。
二.Java开发软件的搭建
1.JDK ( Java Development Kit ) Java 开发工具包
(1).编译器,(2).解释器,(3).源代码
2.JRE ( Java Runtime Environment ) Java 运行环境
3.JVM ( Java Virtual Machine) Java 虚拟机
4.安装jdk后为什么要配环境变量
因为计算机只有找到Javac编译器后将才能将Java源代码文件转化为class字节码文件,而默认的计算机中没有Javac的路径,我们无法直接调用,因此我们需要设置环境变量,添加Javac的绝对地址,这样才能快捷的实现调用Javac的操作。
三.Java语言跨平台的原理
字节码文件是一种与“机器环境”和“操作系统”无关的中间码,也是一个二进制文件,在Java编译器将我们编写的源代码文件转化为字节码文件后,不同平台的JVM虚拟机将字节码转化为对应与该平台相关的码元文件,java文件便可以在该平台运行。其中JVM虚拟机便起到了沟通不同平台的关键作用。
四.Java程序执行的流程
1.编写:在java的开发环境中进行程序代码的输入,并形成.java的源代码文件
2.编译:通过Java的编译器将源代码文件进行排错后,生成.class的字节码文件
3.运行:字节码文件在JVM虚拟机上运行,Java的解释器将字节码文件转换为对应JVM虚拟机系统的机器码元,Java程序便可以正常运行。
五.Javac和java的区别
javac为编译命令,是将源代码文件.java转化为字节码文件.class,而java执行java程序的命令,运行字节码文件
六.java文件与class文件的区别
java文件为源代码文件是用户编写的文件,而class文件是字节码文件,是通过编译器转换后的计算机才看得懂的文件。
七.Java的基本数据类型
Java的基本数据类型有3大类:
数值类型:其中包括整数型(byte,short,int,long),以及浮点数型(float,double)
字符类型:char
布尔类型:Boolean
八.byte,short,int,long四种类型的区别,以及float与double的区别
byte,short,int,long四种类型的区别:
byte为1个字节,有8(bit)比特,取值范围为(-128~127)
short为2个字节,即16比特,取值范围为(-32768~32767)
int为4个字节,即32bit,取值范围为(-2147483648~2147483647)
long为8个字节,即64bit,取值范围为(-2^63~(2^63)-1)
float与double的区别:
float为单精度浮点数,占4个字节,有效数字为8位
double为双精度浮点数,占8个字节,有效数字为16位
两者处理速度不同,CPU处理float的速度比处理double快。double的精度高,但double消耗
内存是float的两倍。
九.计算机最小的存储单位,及最小的存储空间
最小的储存单位为bit,1bit只能储存1或0;最小的储存空间是字节,一个字节有8个比特,其中
第一位为符号位.
十.bit,B,KB,MB,GB,TB,PB分别是什么单位,以及相互之间的换算关系
计算机储存单位
1PB = 1024TB
1PB=1024GB
1GB=1024MB
1MB=1024KB
1KB=1024B
1B=8bit
十一.预习
数据类型转换
运算符
算术运算符
+ - * / %
当表达式中的数值都是整数int, 则运算结果也是整数int
当表达式中有一个数值是浮点数double, 则整个表达式所有数值全部提升为浮点数double, 运算结果为浮点数double
赋值运算符
= += -= *= /= %=
比较运算符
> >= < <= == !=
所有的比较运算符, 运算结果都是boolean类型, 要么是true, 要么是false
注意: 一个等于号 = 是赋值运算符 (可以是直接量赋给变量, 也可以是变量赋给变量)
两个等于号 == 才是是否相等的比较运算符
逻辑运算符
& && | || !
逻辑运算符是对两个boolean条件做逻辑(与、或、非)运算, 运算结果也是boolean
与(并且关系and, 两个条件都成立, 结果才成立, 有一个条件不成立, 结果就是不成立)
左右两边都为true, 运算结果为true, 有一边是false, 运算结果就是false
或(或者关系or, 两个条件都不成立, 结果才不成立, 有一个条件成立, 结果就是成立)
左右两边都为false, 运算结果为false, 有一边是true, 运算结果就是true
非(成立变为不成立, 不成立变为成立)
取反, true取反后得到false, false取反后得到true
与和或有短路和不短路的区别
短路与: 左边不成立, 右边就不会运算了, 因为与要求两边都成立, 如果左边已经为不成立, 右边就没有运算的意义了, 因为无论右边是否成立, 也不会影响最终结果
不短路与: 左边不成立, 右边就失去了运算的意义, 但是也会运算一下
短路或: 左边成立, 右边就不会运算了, 因为或要求两边都不成立, 如果左边已经成立了, 右边就失去了运算的意义了, 因为无论右边是否成立. 也不会影响最终结果
不短路或: 左边成立, 右边就失去了运算的意义, 但是也会运算一下
位运算符 (平时写代码用不到, 1. 面试可能会问, 2. 官方源代码中可能会出现)
位 => 二进制比特位
什么是位运算符? 因为运算符会将数字转为二进制, 对二进制的比特位做运算
左移
>>
右移
<<
单目运算符 (单目的意思是表达式中只有一个操作数, 例如 a++ 表达式只有一个操作数a)
++ --
运算符++或--在变量前面和后面的区别是什么?
如果表达式中只有 ++或--运算, 则在变量前面或后面没有区别
如果表达式中除了 ++或--, 还有其他运算
则在变量前面, 先运行++或--, 再运行其他运算
在变量后面, 先运行其他运算, 再运行 ++ 或 --
三目运算符
?