为了适应单片机的出现,由James Gosling等人开发的语言,专攻计算机在家电产品上的嵌入式应用。
由于其特殊的跨平台性解决了代码不兼容的问题,同时,两次编译的机制提高了效率。
两次编译 :首先,编写的源码被javac调用编译器编译形成字节码文件(.class),然后,不同平台的JVM通过java命令对字节码文件进行解释执行。其中,字节码文件也成为了Java语言得以实现跨平台使用的重要因素。
Java是一门面向对象的语言,为c++语言的简化版本,它去掉了c++中的一些不太实用且影响安全性的部分。
Java语言的发展1995 jdk
1996 jdk1.0
1998 jdk1.2
推出了JavaSE、JavaME、JavaEE 用于向不同的领域进军,其中,JavaSE是一个基础版本是基础,用于桌面应用的开发。JavaME用于对于手机端的开发。JavaEE用于服务器端的开发。JavaEE用于企业级的开发,被大量的使用,因为其跨平台性、安全性、健壮性等特性,被广泛应用。
2004 JDK1.5 加入了静态导入、可变参数、增强for循环、自动装箱与拆箱、枚举、注解、泛型。
静态导入
//导入Arrays这个类中的所有静态成员。 import staticjava.util.Arrays.*; //导入Ssytem类中所以静态成员。 import staticjava.lang.System.*;
这样,在类中使用静态方法时不用使用类名.方法 的形式了,可以直接用方法。但是,当两个类中有同名的方法的时候就需要使用类名.方法的形式了。
可变参数
解决的问题:参数不可变导致的需要多次重写方法的问题。解决的方式:使用变量类型…变量名的形式传递数量可变的参数解决的原理:将可变的多个同类型变量,通过隐式将其封装成一个数组进行传递。注意事项:
在一个形参列表中仅可以有一个可变参数可变参数必须将其放在参数列表的末尾三个点的前后均无空格
增强for循环
解决的问题:数组/集合的遍历问题解决的方式:for(集合的类型 变量名 : 被遍历的集合){}解决的原理:迭代器的原理注意事项
对集合的遍历过程是一个相当于只读的过程,只能获取集合的元素,但是不能对集合进行增删改不能确定数组的角标
自动装箱拆箱
解决的问题:包装类与基本数据类型间的自动转换
解决的方式:包装类类型 变量 = 基本数据类型;
基本数据类型 变量 = 包装类;
解决的原理:装箱的过程:调用包装器的**valueOf()**方法
拆箱的过程:调用包装器的**xxxValue()**方法
枚举
解决的问题:防止写入非法值解决的方式:让某个类型的变量取值只能为若干固定值中的一个
JDK1.7
二进制面值数字变量对下滑线的支持switch对String的支持try-with-resource捕获多种异常并用改进后的类型检查来重新抛出异常创建泛型时类型推断全新的集合声明以及获取集合中的值的方式新增一些取环境信息的工具方法安全的加减乘除
JDK1.8
Lambda表达式函数式接口*方法引用和构造器调用Stream API接口中的默认方法和静态方法新时间日期API
JDK1.11
String APIFile API局部变量推断 Java语言的特性
简单性:将c++中的指针、头文件等内容删除跨平台性/可移植性:可以跨平台使用(OWAR)健壮性:去掉了影响健壮性的指针和内存的申请与释放。高性能:JIT(just in time)即时编译,将热点字节码编译成本地机器码并缓存,在使用时快速调用,大大提高了性能。动态性:Java允许在运行中装入需要的代码安全性:可以构建防病毒、防篡改的系统多线程:带来了更好的交互响应。 Java环境的搭建 JDK、JRE、JVM
JDK包含JRE,JRE包含JVM.
搭建流程下载jdk(选择长版本、被广泛使用的)安装jdk检查安装(java -version)配置环境变量 常用的DOS命令
cd 绝对路径(同一盘符下的,一定可以跳转)/相对路径(当前路径下有的可以跳转)cd… 返回上一层目录cd 返回当前盘符根目录dir 查看当前路径下的所有文件和目录cls 清屏盘符: 切换盘符,只能手动切换,通过cd绝对路径无法实现跨盘符的跳转 第一个Java程序
public class HelloWorld{
public static void main(String[] args){
System.out.println("HelloWorld!");
}
}
用javac HelloWorld.java调用编译器 生成字节码文件HelloWorld.class
用java HelloWorld 调用解释器执行
用javac HelloWorld.java调用编译器 生成字节码文件HelloWorld.class
用java HelloWorld 调用解释器执行



