基于Java开发了许多平台,系统,工具
- 构建工具:Ant,Maven,Jekins
- 应用服务器:Tomcat,Jetty,Jboss,Websphere,weblogic
- Web开发:Struts,Spring,Hibernate,myBatis
- 开发工具:Eclipse,Netbean,intellij,idea,Jbuilder
JDK、JRE、JVM
- JDK : Java Development Kit ——Java开发者工具
- JRE : Java Runtime Environment ——Java运行时环境
- JVM : Java Virtual Machine ——Java虚拟机
卸载JDK
- 删除Java的安装目录
- 删除JAVA_HOME
- 删除path下关于Java的目录
- 打开cmd 查看java -version是否找不到命令
安装JDK
-
百度搜索JDK8,找到下载地址
-
同意协议
-
下载电脑对应版本
-
双击安装JDK
-
记住安装路径
-
配置环境变量
-
我的电脑–>右键–>属性
-
环境变量–>JAVA_HOME
-
配置path变量
-
-
测试JDK是否安装成功
-
打开cmd
-
输入命令java -version
-
notepad++
HelloWorld
-
随便建立一个文件夹,存放代码
-
新建一个java文件
- 文件后缀名为.java
- Hello.java
- [注意点]系统可能没有显示文件后缀名,我们需要手动打开
-
编写代码
public class Hello{
public static void main(String[] args){
System.out.print("Hello,World!");
}
}
-
编译javac java文件,会生成一个class文件
-
运行class文件,java class文件
Java数据类型
强类型语言
- 要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用(安全性强,速度慢)
弱类型语言
Java数据类型分为两大类型
-
基本类型(primitive type)
数据类型 数值类型 byte占1个字节范围 -128~127
short占2个字节范围 32768~32767
int占4个字节范围 -2147483648~2147483647
long占8个字节范围**(后面加L)**-9223372036854775808~9223372036854775807
浮点类型 float占4个字节 (后面加F,有限 离散型 舍入误差 大约 接近但不等于)
double占8个字节
字符类型char占2个字节
Boolean类型:占1位其值只有true和false
-
引用类型(reference type)
类
接口
数组
类型转换
由于java是强类型语言,所以要进行有些运算的时候,需要用到类型转换
低 --------------------------------------------------------------------------- 高
byte,short,char->int->long->float->double
运算中,不同类型的数据先转化为同一类型,然后在进行运算。
- 强制类型转换
- 自动类型转换
变量
Java是一种强类型语言,每个变量都必须声明其类型。
Java变量是 程序中最基本的储存单元,其要素包括变量名,变量类型和作用域。
注意事项:
- 每个变量都有类型,类型可以是基本类型,也可以是引用类型。
- 变量名必须是合法标识符。
- 变量声明是一条完整的语句,因此每一个声明都必须以分号结束。
常量
常量(Constant):初始化(initialize)后不能再改变值,不会变动的值。
所谓常量可以理解成一种特殊的变量,它的值被设定后,在程序运行过程中不允许被改变。
final 常量名 = 值 ;
final double PI = 3.14 ;
常量名一般使用大写字符。
运算符
//Ctrl+D 复制当前行到下一行
-
关系运算符返回的结果:正确 错误 布尔值
-
自增自减
int b = a++; //执行完这行代码后,先给b赋值,再自增 int c = ++a; //执行完这行代码前,先自增,再给c赋值
-
逻辑运算符
- 与(and)或(or)非(取反)
- 条件运算符 ?:
JavaDoc
Java流程控制
Scanner对象
-
java.util.Scanner是Java5的新特征,我们可以通过Scanner类来获取用户的输入。
-
基本语法
Scanner a = new Scanner(System.in);
-
通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前我们一般需要使用hasNext()与hasNextLine()判断是否还有需要输入的数据。
-
next()
- 一定要读取到有效字符后才可以结束输入
- 对输入有效字符之前遇到的空白,next()方法会自动将其去掉
- 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符
- next()不能得到带有空格的字符串
-
nextLine()
- 以Enter为结束符也就是说nextLine()方法返回的是输入回车之前的所有字符。
- 可以获得空白。
顺序结构
- java基本结构就是顺序结构,除非特别指明,否则就按顺序一句一句执行。
- 语句与语句之间,框与框之间是按从上到下的顺序进行的,它是由若干个依次执行的处理步骤组成的,它是任何一个算法都离不开的一种基本算法结构。
选择结构
-
if单选泽结构
-
语法
if(布尔表达式){
//如果布尔表达式为true将执行的语句
}
-
-
if双选择结构
-
if(布尔表达式){
//如果布尔表达式为true
}else{
//如果布尔值表达式为false
}
-
switch多选择结构
- 多选择结构还有一个实现方式就是switch case语句
- switch case语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。
for循环结构
关于for循环有以下几点说明:
- 最先执行初始化步骤。可以声明一种类型,但可初始化一个或多个循环控制变量,也可以是空语句。
- 然后,检测布尔表达式的值。如果为true,循环体被执行,如果为false,循环终止,开始执行循环体后面的语句。
- 执行一次循环后,更新循环控制变量(迭代因子控制循环变量的增减)。
- 再次检测布尔表达式,循环执行上面的过程。
for循环的快捷键 —— .for
print 输出完不会换行
println 输出完会换行
break continue
- break在任何循环语句的主体部分,均可用break控制循环的流程。break用于强行退出循环,不执行循环中剩余的语句。(break语句也在switch语句中使用)
- continue语句用在循环语句体中,用于终止某次循环的过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。
-
- //break在任何循环语句的主体部分,均可用break控制循环的流程。
- //break用于强行退出循环,不执行循环中剩余的语句。(break语句也在switch语句中使用)
- continue语句用在循环语句体中,用于终止某次循环的过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。
方法的定义
-
Java的方法类似于其他语言的函数,是一段用来完成特定功能的代码片段,一般情况下,定义一个方法包含以下语法:
-
方法包含一个方法头和一个方法体。下面是一个方法的所有部分:
-
修饰符:修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。
-
返回值类型:方法可能会返回值。returnValueType是方法返回值的数据类型。有些方法执行所需要的操作,但没有返回值。在这种情况下,returnValueType是关键字void。
-
方法名:是方法的实际名称。方法名和参数表共同构成方法签名。
-
参数类型:参数像是一个占位符。当方法被调用时,传递至给参数,这个值被称为实参或变量。参数列表市值方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含仍和参数。
- 形式参数:在方法被调用时用于接受外界输入的数据。
- 实参:调用方法时实际传给方法的数据。
-
方法体:方法体包含具体的语句,定义该方法的功能。
-
方法的重载
重载就是在一个类中,有相同的函数名称,但形参不同的函数。
方法的重载的规则:
- 方法名称必须相同。
- 参数列表必须不同(个数不同、或类型不同、参数排列顺序不同等)。
- 方法的返回类型可以相同也可以不相同。
- 仅仅返回类型不同不足以成为方法的重载。
命令行传参
可变参数
- JDK1.5开始,java支持给一个方法传递同类型的可变参数。
- 在方法声明中,在指定参数类型后加一个省略号(……)。
- 一个方法中只能指定一个可变参数,它必须是方法的最后一个参数。任何普通的参数必须在它之前声明。
递归
递归结构包含两个部分:
- 递归头:什么时候不调用自身方法。如果没有头,将陷入死循环。
- 递归体:什么时候需要调用自身方法。
数组
数组的声明创建
- 首先必须声明数组变量,才能在程序中使用数组。下面是声明数组变量的语法:
dataType[] arrayRefVar; //首选的方法
dataType arrayRefVar[]; //效果相同,但不是首选方法
- Java语言使用new操作符来创建数组,语法如下:
dataType[] arrayRefVar = new arrayRefVar[arraySize];
- 数组的元素是通过索引来访问的,数组索引从0开始。
- 获取数组的长度:——arrays.length
内存分析
Java内存分析
java.lang.ArrayIndexOutOfBoundsException//数组下标越界异常
三种初始化状态
- 静态初始化
int[] a = {1,2,3};
Man[] mans = {new Man(1,1),new Man(2,2)};
- 动态初始化
int[] a = new int[2];
a[0] = 1;
a[1] = 2;
-
数组的默认初始化
数组是引用类型,它的元素相当于类的实例变量,因此数组一经分配空间,其中每个元素也被按照实例变量相同的方式被隐式初始化。
数组的四个基本特点
- 其长度是确定的,数组一旦被创建,它的大小就是不可以改变的。
- 其元素必须是相同类型,不允许出现混合类型。
- 数组中的元素可以是任何数据类型,包括基本类型和引用类型。
- 数组变量属引用类型向,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量。数组本身就是对象,Java中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型,数组对象本身是在堆中的。
Arrays类
数组的工具类java.util.Arrays
由于数组对象本身并没有什么方法可以供我们调用,但API中提供了一个工具类Arrays供我们使用,从而可以对数据对象进行一些基本操作。
Arrays类中的方法都是static修饰的静态方法,在使用的时候可以直接使用类名进行调用,而”不用“使用对象来调用(注意:是”不用“而不是”不能“)
具有以下常用功能:
- 给数组赋值:通过fill方法。
- 给数组排序:通过sort方法,按升序。
- 比较数组:通过equals方法比较数组中元素值 是否相等。
- 查找数组元素:通过binarySearch方法能对排序好的数组进行二分查找法操作。
稀疏数组的介绍
二维数组的长度
//定义一个整型数组:3行4列
int a[][] = new int[3][4];
//获取行数---3行
int lenY = a.length;
//获取列数---4列
int lenX = a[0].length;