Java编程入门
认识Java
- Java的起源是SUM公司开发的,后来被oracle收购
- Java的开发开发有三种
- JAVA SE 桌面应用开发
- JAVA ME 嵌入是开发
- JAVA EE 企业平台开发,即互联网平台开发
Java语言特点
- Java是半开源的项目,可以接触底层代码
- Java是一种编程语言,面向对象的编程思想并且一直在拓展扩充
- 提供有方便的内存回收机制
- 避免了复杂的指针问题,使用更加简单的引用来代替指针
- Java是支持多线程开发的语言,使得在单位时间内的提升了处理能力
- Java提供了高效的网络处理能力,基于NIO实现了更加高效的网络传输能力
- Java具有良好的可移植性
- 足够简单
Java的可移植性
在于同一个程序可以在不同的操作系统中执行部署,减少开发难度。依赖于Java虚拟机JVM,不同操作系统拥有不同版本的JVM,实现了移植性。
Java程序运行机制
- 编译型,解释型。Java是两种高级编程语言的结合,先编译成.class文件,再解释成计算机识别的机器指令
- 编译命令:Javac.exe
- 解释命令:Java.exe
- Java程序的组成:Java源文件,字节码文件,机器码指令
JVM
- 一台模拟的计算机,可以读取并处理经编译过的与平台无关的字节码class文件
- java编译器针对JVM产生class文件,因此独立于平台
- Java解释器负责将JVM的代码在特定的平台上运行
JDK的介绍
是Java的开发工具包,主要版本迭代,其中JRE是运行环境,只提供解释功能不提供程序的开发功能
- 1995.05.23,JDK1.0发布, 1996年提供对外
- 1998.12.04 JDK1.2,更名为Java2
- 2005.05.23 十周年大会,JDK1.5 ,带来了新特性,决定了未来10的核心技术
- 2014 JDK1.8,支持了Lambda,可以函数式编程
- 2017 JDK1.9,提高了1.8稳定性
- 2018 JDK1.10,属于1.9的稳定版
JDK的安装与配置
Java编程起步
创建HelloWorld.java文件,编写源文件,编写输出HelloWord的程序。Java程序是需要经过两次处理之后才能正常执行的
- 对源代码进行编译:Javac xxx/HelloWord.java,会出现一个HelloWord.class的字节码文件,利用JVM进行编译,编译出一套与平台无关的字节码文件(*.class)
- 在JVM上进行程序的解释执行Java xxx/HelloWord。解释的就是字节码文件,字节码文件的后缀是不需要编写的
- 类的定义有两种形式,public class 类名, class 类名。第一种文件名必须与类名一致,第二种可以不一致,生成的*.class文件名与类名一致。一般情况是一个class并且以public修饰,类名是驼峰式
- main方法,程序运行入口主方法
ClASSPATH环境属性
- PATH: 是操作系统提供的路径配置,定义所有可执行程序的路径
- CLASSPATH: 是JRE提供的,用于定义Java程序解释时类加载路径,默认是源文件的目录
注释
- 单行注释 //
- 多行注释 /* …. */
- 文档注释 /** …. */
标识符和关键字
- Java语言中有不同的结构:类,方法,变量结构等,对于结构的说明实际上就是标识符,是有命名规则的。
- 关键字,是系统对于一些结构的的描述处理,有着特殊含义,public static final 等等
Java数据类型简介
- 数据分类:基本数据类型(数字单元)分三大类,数值型,浮点型,字符型,引用数据类型(内存关系的使用)分数组,类,接口
类型 包括 默认值 基本数据类型 整型 byte,short,int,long 0 浮点型 float,double 0.0 布尔型 boolea false 字符型 char ‘\u0000’ 引用类型 数组,类,接口 null - 使用原则: 如果是描述数字首选int,double;如果要进行数据传输或者文字编码选择byte(二进制处理);处理中文char;描述内存或者文件大小,表的主键列long
- 内存溢出:如果数值的操作超出了数值类型的范围就会陷入循环的现象,通过使用范围更大的数值类型解决
- 浮点型数据,都是有小数点的。float 变量相乘会出现多出4位小数的历史bug
- 整形数据进行相除,会得到整数部分,10/2 = 2, 除非进行转型
- 字符类型char和整形int可以相互转换, 可以获取char字符在系统中的编码。大写字母 A(65)
Z(90),小写字母a(97)z(112),大小写之间相差32位,数字范围‘0’(48)~’9’(57) - java可以保存中文是因为Java使用的是Unicode 16进制的编码
- 布尔类型,只有true和false
- 字符串。在Java中范围大的数据类型与范围小的数据类型操作,所有小的数据类型会自动转型为数据范围大的数据类型
运算符简介
- 数学运算符: 加减乘除
- 关系运算符:大小的比较,基本数据类型之间支持自动转型,字符类型可以转成int
- 逻辑运算符:三目(赋值)运算
- 位运算:二进制数的计算处理,(&与) (|或者) (^异或) (~反码)
- & | 在进行逻辑运算的时候所有的条件都会执行
- && || 若干个条件判断的时候,前面的返回来false 或者 true,后面的条件判断就不再执行
IF分支结构
针对关系表达式进行判断处理的的分支操作,关键字为if,else,,在多条件else if判断时需写上else
switch分支语句
是一个开关语句,它主要根据内容进行判断,支持String.注意添加break关键字,否则会继续执行。注意添加default关键字
while循环
for循环
for(定义循环的初始化数值;循环判断;修改循环数值){
循环执行;
}
- 在明确循环次数的情况下优先选择for循环
- 在不知道循环次数,但知道循坏条件下选择while
循坏控制
break:退出整个循坏的结构
continue: 在当前的语句之后中的代码不在执行,而直接执行后续的判断处理
方法的定义
- 方法的命名规则
- 是一段可以被重复调用的代码块
方法的重载
当方法名相同的时候,参数类型或者个数不同的时候就称为方法的重载。
- 同一个方法名称,可以根据我们调用时传递的参数类型及个数实现不同方法体的调用
- 方法的重载建议其返回值相同
方法的递归调用
- 方法递归调用的结束条件
- 每次调用的过程中一定要修改传递的参数条件
- 递归操作虽然可以简化的调用,但是在实际开发中很少出现。容易栈溢出