一、初识java
1、jdk的介绍
下载安装jdk 安装后会存在默认的安装路径
bin 目录:存放编译,运行 Java 程序的可执行文件
lib 目录:存放 Java 的类库文件
jre 目录:存放 Java 运行环境文件
2、配置Java的环境变量
安装完 JDK 后,需要配置系统环境变量(方便我们在电脑的
任何地方都可以运行 Java 程序),具体步骤如下:
步骤一:点击此电脑,右键选择‘属性’
步骤二:点击高级系统设置
步骤三:点击环境变量
步骤四:在系统变量中新建一个系统变量,变量名为
JAVA_HOME,变量值为自己的 JDK 安装目录(如:我的是
E:javajdk1.8.0_73,如果默认安装 JDK 的话,则在
C:Program FilesJava文件夹下)
步骤五:配置 Path 系统变量的值,加入%JAVA_HOME%in,
然后点击确定
步骤六:设置Classpath
.;%JAVA_HOME%libdt.jar;%JAVA_HOME%lib oos.jar,
步骤六:打开命令行窗口(Windows+R,输入 cmd),输入 java - version 命令查看 JDK 版本信息,测试安装和配置是否正确 若显示如下图则配置成功。
3Java跨平台原理
Java 是一种被广泛使用的编程语言,它的主要特点在于它是
一种既面向对象又可跨平台的语言。跨平台是指程序可以在多种平台(Microsoft Windows、Apple Macintosh 和 Linux 等)上运行, 即编写一次,随处运行( Write Once, RunAnywhere)。
Java 语言通过为每个计算机系统提供一个叫作 Java 虚拟机的环境来实现跨平台。Java 不但适用于单机应用程序和基于网络的程 序,而且可用于创建消费类设备和附件程序,如移动电话,掌
上导航系统等。
Java 虚拟机是可运行 Java 字节码的虚拟计算机系统。可以
将 Java 虚拟机看成一个微型操作系统,在它上面可以执行 Java
的字节码程序,Java 程序的执行过程图如下:
二、Java的数据类型与运算符
1.Java注释
Java的注释有单行注释和多行注释快捷键分别为:选中内容ctrl +/,和ctrl+ shift+ /
2.数据类型
数据类型有两种基本数据类型和引用数据类型
基础的数据类型:4类8种 关键字
(1、整数型: short(短整型) int(普通整型) long(长整型)
(2、浮点数型(小数): float(单精度小数) double(双精度)
(3、字符型: char ''修饰字符
(4、boolean(布尔类型): true(真)和false(假)
(5、字节类型: byte
注意: char 类型占 2 字节,采用 Unicode 码。byte 类型占 1字节,是整数类型的一种。所有的数据类型长度固定,不会因为硬件、软件系统不同而发生变化。String 类型不是基本数据类型,是引用类型,是 Java 提供的一个类。
引用数据类型
Java 中的引用数据类型主要包含类、接口和数组等。
3.变量
自定义变量名,在Java中严格区分小写。命名规范:
( 1、在变量名中不能包含除$和_以外的所有特殊符号
(2、变量名由字母和数字组成,但是数字不能开头
(3、变量名要求以小写字母开头
(4、变量名应有意义,不能使用中文、关键字作为变量名。
(5、推荐使用驼峰命名法 studentName
变量的值:挑选适合的值使用变量保存,三要素缺一不可。
变量在程序中彼此之间是独立的,多个变量之间相互隔离,数据独立。
变量赋值的顺序:从右往左
4.常量
常量:不能被修改的变量被称之为常量
(1、使用final修饰
(2、常量名全大写
5.运算符
运算符: 赋值运算符 = 赋值顺序,从右到左
算数运算符 + - * /(取整 被除数和除数的商) %(取余 被除数和除数的余数) +号还可以作为连接字符串的功能
++:数值类型的变量 自增为1 前(先计算,再赋值) 后(先赋值,再运算)
--:自减1 前(先计算,再赋值) 后(先赋值,再运算)
+=: a+=1<===> a=a+1 * -=: a-=1<===> a=a-1
*=
/=
6.比较运算符
比较运算符:返回的是boolean类型的值
全等:==
大于和大于等于:> >=
小于和小于等于:< <=
不等于: !=
7.三元运算符
数据类型 变量名=boolean?a:b;判断boolean类型的值:a和b表达式的数据类型要兼容,如果为true,选择a;如果为false,选择b。
8.scanner的一系列方法:
next():接收字符串
nextInt():接收int整数
nextDouble():接收double浮点数
nextBoolean():布尔类型
next().charAt(0);接收字符char
has系列方法在接受数据类型前加has则变为判断接受的类型是否为自己写的类型。
9. 数据类型转换:
1、自动类型转换
源类型修饰的范围小于目标类型修饰的范围,自动类型转换
double number=1;
2、强制类型转换(精度缺失的问题)
源类型修饰的范围大于目标类型的范围,强制类型转换
int number=(int)2.5;
10.逻辑运算符:与(and &&) 或(or ||) 非(! not)
连接两个及以上的条件表达式(
a&&b: a为true b为true 整个表达式才为真
a||b: a和b有一个表达式位置true 整个表达式为true
!a: 如果a为true 整个表达式为false;如果a为false,则整个表达式为true
优先级:() > ! > && > ||
)
11.短路原则:
双个符号形成的逻辑运算符会发生短路原则
&和&&: a&b:判断a如果为false,仍旧回去执行b
a&&b:如果a为false,则b不被执行
|和||: a|b:判断a如果为true,仍旧回去执行b
a||b:判断a如果为true ,则b不被执行
三、java的swich 和if语句的运用
1.if语句的结构和运用
顺序结构:是指程序从上向下依次执行每条语句的结构,中间没有任何 判断和跳转。 前面学过的都属于顺序结构.
选择结构:是根据条件判断的结果来选择执行不同的代码。选择结构 可以细分为: 单分支、双分支、多分支。Java 提供了 if 控制语句、switch 语句来实现选择结构。
循环结构:循环结构是根据判断条件来重复性地执行某段代码。
Java 提供了 while 语句、do-while 语句、for 语句来实现循环结构。
什么是选择结构:{}有选择性的去执行程序中的代码块 为什么需要选择结构:if switch if(boolean),if(true){就会执行}if(false){不会执行} if-else:满足了if条件,一定不满足else 没有满足if条件,一定满足elseif(比较运算符||逻辑运算符||equals)
Scanner对象的方法:
hasNext():分别判断键盘输入的数据是否能够转换成为对应的类型
hasNextInt()
hasNextDouble()
hasNextBoolean 以上函数boolean, 如果键盘输入的数据能够转换成为对应类型 true否则 返回false
调整代码格式化的操作: ctrl+A 选中所有代码 点击左上角的Source 选中format或ctrl+shift+F
if() 省略了{}控制的语句仅仅只能为一行,多重if选择结构: 作用为了完成并列条件的判断, 特点是:同一时间只能满足一个条件
语法: if(){}else if(){}else if(){}else{}
嵌套形式的if:
if(){
if(){
}else{
}
}
2.swich语句的运用
switch选择结构:
作用:控制流程---->if else if() 多重并列条件的选择
switch(int/short/long/char/byte/String/[enum])--->if(boolean)
case #代表着分支条件,连接起来写
break; //代表分支的结束 可以被省略,但省略过后会继续执行下方的case分支,直到遇到break才停止
default:--->else 在不满足其他任何分支的条件下,执行default部分,如果把default放在switch的结尾位置可以省略
四、while、do while和for循环
1.while与do while 的使用
什么是循环:重复操作某一些事情。hasNext():存在下一个,IteratorXML
在Scanner中出现的HasNext()在我们的程序中:存在大量的重复操作,解决重复操作的问题 提升开发的效率。
while(循环条件){ //boolean
//循环体(要重复的操作)
}
(1:确定循环操作
(2:确定循环条件,在满足什么样的情况下重复执行
(3:切记一定不能忘记改变循环条件,否则将会出现死循环。
特点:先判断循环条件,再执行循环操作
hasNext():要求纯字符构成的字符串,如果为纯字符构成的字符串,返回的结果为true,空格:不能算作为字符。
do-while:
特点:先执行,再判断。(无论如何,都会执行一次)
2.跳转语句
Java 语言支持 3 种类型的跳转语句:break, continue, return, 使用这些语 句,可以把控制转移到循环或程序其他部分。
1. break 语句
break 在 switch 中是终止 switch 结构
break 在循环中的作用是终止当前循环,然后执行当前循环后面的语句。
注意:break 只会出现在 switch 和 循环中,没有其他使用场合。
2. continue 语句
跳出本次循环,开始下一次循环。提示: 在 while 和 do-while 循环中:continue 执行完毕后,程序将直接判断循环条件,如果为 true,则继续下一次循环,否则终止循环。
在 for 循环中:continue 使程序先跳到迭代变量部分,然后再判断循环条件。
3. return 语句
结束当前方法的执行,并退出返回到调用该方法的语句处。
break:终止循环,循环就直接退出了 跳出循环结构(复杂的问题简单化,无需关系循环条件如何声明:在循环次数不确定的情况下)。
continue:停止当前本次循环,重新开始下一次循环。
五、数组
1. 数组的概念
为什么需要使用数组:在内存空间中连续分配内存的一种结构一个变量默认情况下只能存储一个数据,数组可以存储若干个。
创建数组的语法:
数据类型 [] 数组名 =new 数据类型[长度];
数据类型 [] 数组名=new 数据类型[]{a,b,c,d}
数据类型 [] 数组名={a,b,c,d};
向数组中保存元素的方式:第几个位置赋什么值。index索引**:从0开始的,一值到数组的长度-1。如果index的范围超了,就会引发运行异常:ArrayIndexOutOfBoundsException(数组下标越界)。
数据类型:数组中元素的类型必须是相同的例如:int类型不能包含其他数据类型,自动装换类型除外。
获取数组中每个元素的值:通过index下标,修改数组中的值:通过index进行直接赋值。
数组的长度:通过数组名.length
2、二维数组及Arrays方法
二维数组:一个数组中的元素也是一个数组。数组是一种类型:象征着多的一种类型
操作数组的工具类:Arrays static修饰的方法,所以说可以通过类名直接使用
如何为数组排序(升序):自然排序 1 2 3 a b c。Arrays.sort():升序排序(数字 字母。。。进行排序 按照ASCII)
通过逆序输出,实现逆序的效果。
Arrays.toString():将数组转换为String变量进行输出(鸡肋)
--print(在它打印变量的时候,默认会调用该变量的toString方法)
Arrays.fill():向数组中填充元素,直到填满为止
Arrays.copyOf():复制一个数组出来,指定新数组的长度
Arrays.binarySearch(); 查询一个数组中的元素所对应的索引位置(排序后的数组)
3、插入算法和冒泡,选择排序
打擂计算方式(获取数组中最大的元素)
在循环结构外声明一个代表最大值的变量,默认以数组中的第一个元素为最大值 int ax=arrs[0];通过循环遍历数组,获取后面的元素与max变量进行比较,如果后面的元素大于max变,进行赋值交换,循环结束时,输出max变量即可!
冒泡排序
原理:比较两个相邻的元素,将值大的元素交换至右端。
思路:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复第一趟步骤,直至全部排序完成。
第一趟比较完成后,最后一个数一定是数组中最大的一个数,所以第二趟比较的时候最后一个数不参与比较;
第二趟比较完成后,倒数第二个数也一定是数组中第二大的数,所以第三趟比较的时候最后两个数不参与比较;
依次类推,每一趟比较次数-1;
选择排序
原理:每一趟从待排序的记录中选出最小的元素,顺序放在已排好序的序列最后,直到全部记录排序完毕。也就是:每一趟在n-i+1(i=1,2,…n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录。
简单选择排序的基本思想:给定数组:int[] arr={里面n个数据};第1趟排序,在待排序数据arr[1]~arr[n]中选出最小的数据,将它与arrr[1]交换;第2趟,在待排序数据arr[2]~arr[n]中选出最小的数据,将它与r[2]交换;以此类推,第i趟在待排序数据arr[i]~arr[n]中选出最小的数据,将它与r[i]交换,直到全部排序完成。
六、阶段总结
1.了解JDK,JVM,JRE各自的用途
2.会配置java环境变量
3.明确类 变量的命名规范
4.理解变量的四类八种
5.了解转义字符使用
6.包和类的区别和作用
7.了解逻辑运算的优先级(++--的输出方式和短路原则)
8.理解与运算符 逻辑运算符 比较运算符 赋值运算符特殊运算符 三元运算符的使用
9.知道常量和变量的区别
10.学会运用scanner进行打印输入字符,熟练运用next()和hasNext()
11.掌握通过/和%求一个数字的每位数字
12.==用于比较基本数据类型 equals用于比较引用数据类型
13.熟练运用if if-else if-else if swich 选择结构语句
14.了解break countinue return的效果和作用
15.学会字符串格式化输出
16.知道while do-while for循环的区别和各自的特点
17.学会运用debug找错
18.掌握数组的两种定义方式
19.熟练运用index索引实现数组的增加和删除
20.知道ArrayIndexoutBoundExcption的错在哪里
21.学会二维数组的遍历和增加删除操作
22.能熟练运用Arrays的用法
23.增强for的使用范围
24.最少掌握两种排序算法(冒泡 选择)