================================================================
一,初始java
1、为什么学习Java?
(1)用途广泛
(2)入门基础
(3)大数据开发
2、什么是程序?
程序是一种解决某个问题的逻辑。
3、什么是计算机语言?
计算机语言是指人与机器之间交流的工具。
4、Java的体系结构:
(1)Java SE[Standard Edition标准版]
(2)Java EE[Enterprise Edition企业版]
(3)Java ME[Micro Edition微缩版]
5、下载,安装,配置,卸载Java开发环境(JDK)
(1)从官网下载:https://www.oracle.com/java/technologies/downloads/#java8-windows
(2)安装之前确认没有安装任何其他版本的java,在安装过程中一路“下一步”
(3)配置环境变量
JAVA_HOME=jdk安装目录的路径
PATH=.;%JAVA_HOME%\bin;.........
(4)测试安装是否成功,检查版本
打开dos窗口,输入以下命令:
java -version
正常情况下显示
java version "1.8.0_251"
Java(TM) SE Runtime Environment (build 1.8.0_251-b08)
Java HotSpot(TM) 64-Bit Server VM (build 25.251-b08, mixed mode)
6、开发Java程序分三步:
(1)通过Notepad【记事本】编写程序文件,文件名必须要以“Xxx.java”命名,其中Xxx与class后单词一致
(2)通过javac命令编译程序文件并生成以Xxx.class命名的字节码文件
(3)通过java命令运行字节码文件,运行时不需要指定后缀后.class
7、Java虚拟机不跨平台,对于不同的操作系统需要安装不同版本的Java虚拟机
8、在编译java源程序文件之后生成的java字节码文件是跨平台的,即一个class文件可以任意一台计算机中的java环境中运行
9、Java程序内容,功能是在屏幕上输出Hello World!!!:
public class HelloWorld{
public static void main(String[] args){
System.out.println("Hello World!!!");
}
}
10、print()与println()的区别:
前者在输出后没有空行,后者在输出后会有空行
11、\n表示换行,\t表示制表符【相当于8个空格宽度】
12、注释:在程序文件中用来说明代码的文本
(1)单行注释://注释文本
(2)多行注释:/*注释文本*/
13、编写代码时的规范性:
(1)每行只写一条代码
(2){}必须配对
(3)每行代码必须通过空格缩进
14、清屏:cls
15、退出:exit
16、IDE【Integrated Development Environment】集成开发环境,即把编写,编译,运行等工作集为一体的工具软件
17、安装,卸载IntelliJ IDEA
18、使用方法:
(1)界面的修改File->Settings->Appearance & Behavior->Appearance=>Theme
(2)字体的修改File->Settings->Editor->General=>Mouse:Change font size [Zoom] with Ctrl+Mouse Wheel
或者File->Settings->Eidtor->Font=>Size
(3)自动生成程序框架:psvm 或 main
(4)自动生输出语句:sout
(5)复制代码行:ctrl+d
(6)删除代码行:ctrl+y
(7)撤消操作:ctrl+z
(8)插入新行:shift+enter【下插新行】,ctrl+alt+enter【上插新行】
(9)移动代码行:ctrl+shift+↑或↓【向上或下移动】
(10)打开或隐藏工程窗口:alt+1
(11)隐藏运行窗口:shift+esc
19、运用包【子目录】管理java文件
(1)编写:创建包:package aaa.bbb.ccc;必须首行
(2)编译:javac -d . HelloWolrd.java
(3)运行:java aaa.bbb.ccc.HelloWorld
20、在cmd中打包的运行方式
【不能直接运行】
(1)jar -cvf hello.jar aaa
(2)java -cp hello.jar aaa.bbb.ccc.HelloWorld
【可直接运行】
(1)jar -cvfe world.jar aaa.bbb.ccc.HelloWorld aaa
(2)java -jar world.jar
21、在idea中打包的运行方式
(1)File->Project Structure...->Artifacts->"+"->jar->From modules with dependencies...->Main Class->OK->Apply->OK
(2)Build->Build Artifacts->Build
(3)out\artifacts\xxx_jar\xxx.jar->show in explorer
================================================================
二,变量与数据类型
学习内容:
0、快捷键:
(1)单行注释开关:ctrl+/
(2)多行注释开关:shift+ctrl+/
(3)格式对齐:ctrl+alt+l(字母)
(4)大小写切换:ctrl+shift+u
(5)提示不区分大小写:File->Settings->Editor->General->Code Completion->Match case 把勾去掉
(6)变量替换:shift+f6
(7)方法参数提示:ctrl+p
(8)自动完成输出:.sout
(9)自动完成声明:.var
(10)自动修正错误:alt+enter
1、变量是指不确定的数据
2、变量的重要属性:名称,类型,数据
3、变量名称的命名规则:
(1)可由以下字符构成:字母符a-zA-Z,下划线_,美元符$,数字符0-9
(2)数字不能开头
(3)骆驼大小写:从第二个单词开始每个单词的首字母大写,比如studentName,gradeAndClassId
(4)见名知义;myName,studentNumber
(5)不能使用关键字,即java中的保留字
4、数据类型是指对于数据的分类
5、数据类型的分类:
(1)数值类型之整型:byte[1],short[2],int[4],long[8],表示的数值范围不同
(2)数值类型之浮点型:float[4],double[8],表示的数值范围和精度不同
(3)非数值类型之字符型:char[2],表示一个字符,采用单引号界定
(4)非数值类型之字符串型:String,表示一个以上的字符序列,采用双引号界定
6、在输出时可通过“+”连接需要输出的数据,应用于非数值类型与任意类型之间的连接
7、在程序中使用变量
(1)声明变量:数据类型 变量名称;
(2)赋值变量:变量名称 = 数据;
(3)调用变量:通过“变量名”调用变量中的数据
8、常量
(1)一种特殊的变量,其数据不能更改
(2)常量名称通常采用全大写形式,若是复合单词则采用下划线分隔
(3)声明方式:final 数据类型 常量名称 = 数据;
9、键盘输入
(1)导入:import java.util.Scanner;
(2)创建:Scanner input = new Scanner(System.in);
(3)输入:Xxx yyy = input.nextXxx();
(4)关闭:input.close();
10、nextLine()可以清理输入缓冲区中的回车符
11、自动类型转换
(1)int可自动转换为double
(2)规则一:double至上
(3)规则二:目标类型要大于源类型且要兼容
12、强制类型转换,目标类型必须与源类型兼容
13、包含赋值运算符【=】的表达式称为赋值表达式:变量名=表达式
14、两个数据之间的交换
15、算术运算符:+【和】-【差】*【积】/【商】%【模】++【递增+1】--【递减-1】
16、++和--若出现在其他语句中或赋值表达式中则前置表示“先运算后使用”,后置表示“先使用后运算”,如果是单独语句则无论前置还是后置没有区别
17、赋值算术运算符+=,-=,*=,/=,适用于变量自身的运算
18、布尔类型数据boolean:true【真,成立】,false【假,不成立】
19、关系运算符:==【等于】!=【不等于】>【大于】<【小于】>=【大于等于】<=【小于等于】,结果是boolean值
20、逻辑运算符:
(1)非运算:!true==false !false==true
(2)与运算:true && true【true】(记住:两个都为真则为真,有一个为假则为假)
true && false【false】
false && true【false】
false && false【false】
(3)或运算:true || true【true】(记住:两个都为假则为假,有一个为真则为真)
true || false【true】
false || true【true】
false || false【false】
(4)优先级:非-》与-》或
(5)短路与:A&&B,当A为假时不计算B
短路或:A||B,当A为真时不计算B
21、条件运算符:
条件表达式 ? 表达式1 : 表达式2
条件表达式包括布尔表达式,关系表达式,逻辑表达式,因为只有这三类表达式的结果是布尔值
意义:如果条件表达式返回真则计算并返回表达式1的结果,否则计算并返回表达式2的结果
22、所有运算符优先级:小括号 -》算术 -》关系 -》逻辑 -》赋值
================================================================
三,选择结构
0、快捷键:
(1)ctrl+alt+t:结构化代码块
1、简单选择结构
if(条件表达式){
语句块;
}
意义:如果条件表达式返回真那么执行语句块。
2、流程图符号:
(1)圆角矩形:开始或结束
(2)直角矩形:计算处理
(3)平行四边形:输入或输出
(4)菱形:选择判断
(5)圆圈:连接
(6)箭头线:执行方向
3、二选一选择结构
if(条件表达式){
语句块1;
}else{
语句块2;
}
意义:如果条件表达式返回真那么执行语句块1,否则执行语句块2。
4、多重选择结构
if(条件表达式1){
语句块1;
}else if(条件表达式2){
语句块2;
}
......
else if(条件表达式n){
语句块n;
}else{
语句块n+1
}
意义:自上而下依次判断每个条件表达式,如果其中任一个条件成立那么执行对应的语句块,其下的条件将不再进行判断并跳过
5、嵌套选择结构:把简单选择结构,二选一选择结构,多重选择结构进行综合使用,通常解决不同类型条件的问题
6、字符串的比较,判断指定的两个字符串是否相等,通过字符串的equals()方法,如果返回true则相等,返回false则不相等
7、Math.random()产生的随机数介于0【包括】与1【不包括】之间,产生0-9之间的随机数
int random = (int) (Math.random() * 10);
8、多路选择结构:变量类型只能是:char,byte,short,int,String,只能解决等值判断问题
switch(变量){
case 值1:
语句块1;
break;
case 值2:
语句块2;
break;
......
default:
语句块n+1
}
注意case后面的值不能出现相同的情况
================================================================
四,循环结构
0、快捷键的创建
File=>settings...=>搜live template或postfix completion
1、所谓循环是指一种重复性的动作
2、循环的要素:循环条件,循环操作
3、while循环,语法:
while(条件){
语句块;
}
意义:只有当条件为true时才执行语句块,否则跳过while语句
常用结构:
(1)声明计数器
(2)确定循环条件
(3)确定循环体
(4)改变计数器
比如
int i=0;
while(i<n){
循环操作;
i++;
}
4、do-while循环,语法:
do{
语句块;
}while(条件);
常用结构:
int i=0;
do{
循环操作;
i++;
}while(i<n);
5、while与do-while的区别
(1)语法不同
(2)执行顺序不同:while是先判断后执行,do-while是先执行后判断
6、for循环
语法:
for(初始化;条件判断;更新){
语句块;
}
意义:初始化只有在第一次执行时被执行,然后进行条件判断,若为true则执行语句块并进行计数器更新再重复执行条件判断,若为false则跳过for语句
7、无论哪一种循环在执行过程中需要中断则采用break处理
================================================================
五,多重循环及程序调试
1、多重循环是指在一个循环当中嵌套另一个循环
2、双重循环常见用法:
(1)外层循环控制行
(2)内层循环控制每行中的列
3、break语句的用法:
(1)通常用于switch语句或while语句或do-while语句或for语句,表示退出【break】当前最近的一层switch或循环
(2)通常不要放在语句块的最后一行
(3)通常与选择结构语句配合使用
4、continue语句的用法:
(1)通常用于while语句或do-while语句或for语句,表示结束本次循环并继续【continue】下一次循环
(2)通常不要放在语句块的最后一行
(3)通常与选择结构语句配合使用
5、break跳过循环最后一行,continue跳到循环最后一行
6、return表示结束当前程序的执行
7、break退出当前循环,return退出当前程序
8、程序调试【Debug】是指跟踪程序的执行并找到可能发生错误的位置
9、程序调试的步骤:
(1)设置断点
(2)单步跟踪
(3)观察变量
================================================================
六,一维数组
1、变量可以存储一个数据,而数组可以存储一批数据。
2、数组的基本要素
(1)数组名称(标识符)
(2)数组类型(元素类型)
(3)数组长度(元素数量)
(4)数组下标(元素位置,必须从0开始编号,也称为索引)
注:元素是指保存在数组中的每个数据
3、使用数组的步骤:
(1)声明数组:
数据类型[] 数组名称;
(2)创建数组:
数组名称 = new 数据类型[数组长度];
(3)添加元素
数组名称[数组下标] = 数据;
(4)调用元素
通过“数组名称[数组下标]”获取数组元素
4、不同类型的数组在创建后有不同的默认值
(1)byte,short,int,long是0
(2)float,double是0.0
(3)boolean是false
(4)char是空字符(注意:不是空格,是'\u0000')
(5)String是空(注意:使用null表示空引用)
5、在已知数组元素的前提下创建数组
(1)数据类型 数组名称 = new 数据类型[]{元素1,元素2,...};
(2)数据类型 数组名称 = {元素1,元素2,...};
(3)通过键盘输入与循环语句实现数组元素赋值
6、通过“数组名称.length”获取数组的长度
7、通过大括号初始化数组的操作必须要与声明数组在同一条语句中
8、通过数组和循环找出一组数据中的最大值或最小值
9、插入数值的步骤:
(1)准备已排序的数组
(2)把插入数值依次与每个元素比较并找到插入位置
(3)把数组中从后向前每个元素依次向后移位
(4)把插入数值赋值到插入位置
================================================================
七,二维数组
1、冒泡排序算法过程【默认按照从左向右升序排列】:
初始化:16,25,9,90,23
第1趟:16,25,9,90,23->16,9,25,90,23->16,9,25,90,23->16,9,25,23,90
第2趟:9,16,25,23,90->9,16,25,23,90->9,16,23,25,90
第3趟:9,16,23,25,90->9,16,23,25,90
第4趟:9,16,23,25,90
总结:
(1)5个数比较4趟
(2)第1趟比较5个数并且相邻比较了4次
第2趟比较4个数并且相邻比较了3次
第3趟比较3个数并且相邻比较了2次
第4趟比较2个数并且相邻比较了1次
(3)n个数需要比较n-1趟
第k(1到n-1之间)趟比较n+1-k个数并且相邻比较了n-k次
(4)自左向右,两两比较,小的在前,大的在后
****
***
**
*
i j
0 4
1 3
2 2
3 1
5-i-1
把i看成比较的趟数
把j看成每趟比较的次数
2、处理数组运算的对象java.util.Arrays【学过的对象:String,System,Math,Scanner】
(1)比较两个数组是否相等:boolean equals(T[],T[]);只有当两个数组的类型,长度及相应位置的元素均相等才返回true,否则返回false
(2)对指定数组中的元素按升序排列:void sort(T[]);如果需要降序排列可通过*(-1)的方法实现
(3)把数组转换为默义格式字符串[,]:String toString(T[]);如果需要特定格式就要自己实现
(4)按指定值初始化数组:void fill(T[],T);
(5)复制并创建新的数组并可指定新的长度:T2[] copyOf(T1[],int);
(6)在已按升序排列的数组中查找指定元素的位置:int binarySearch(T[],T);如果没有找到返回-1,如果需要不排序的前提下查找就要通过循环和判断自己实现
3、二维数组【本质上是以一维数组做为元素的一维数组】
(1)声明:数据类型[][] 数组名;
(2)创建:数组名 = new 数据类型[长度1][长度2];【注:(1)(2)两步可以合并,长度2可省略】
(3)赋值:数组名[长度1][长度2] = 值;【注:长度1是行下标,长度2是列下标】
(4)使用:通过“数组名[长度1][长度2]”调用指定元素
4、实现以下二维数组
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25
*****
*****
*****
*****
*****
i j
0 5
1 5
2 5
3 5
4 5