第一章、Java语言简介(1995 詹姆斯.高斯林)
一、运行过程
- 编写源程序
- 编译源程序
- 运行
二、用记事本开发Java程序
-
使用记事本编辑.java源程序
-
用javac命令编译,生成.class文件
-
用java命令运行.class文件
三、Java跨平台原理
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-F3d0F516-1655948033725)(C:\Users\sj154\AppData\Roaming\Typora\typora-user-images\1652835457911.png)]
四、Java程序结构
结构如下:
public class 类名{ public static void main(String[] args){ System.out.println("`输出内容`")); } }
注意事项:
-
类名与文件名完全一样,首字母大写
-
main()程序入口,四要素必须不可少
-
System.out.println()从控制台输出信息,S大写
-
{和}一一对应,缺一不可
转义符:
\n:换行 \t:缩进
原理: 源码编译成字节码文件(class文件) ,在将字节码文件转化成可以被机器识别的机器码
五、Java程序的注释
单行注释:以”//“开始
多行注释:以”/“开头,以”/“结尾
文档注释:以”/**“开头,以”*/“结尾
六、编码规范
必要性:
基本规则
专业化
1、一行只写一条语句
2、{}的使用及位置
3、代码缩进
七、idea开发Java程序的步骤:
1、创建Java项目
2、创建Java源程序
3、编译Java源程序
4、运行Java程序
第二章、变量和数据类型
一、变量命名规则
1、字、下、美、人、数、驼峰命名法有意义
2、不能使用关键字,如public、class等,全部小写
标识符:是指用来标识某个实体的一个符号。
Java常用的数据类型:
数值:
整形:byte: 1字节8位 -128~+127
int: 4字节32位 -231~231-1
short、2字节16位 -215~215-1
long 8字节64位 -263~263-1
浮点型:double: 8字节64位浮点数
float:4字节32位浮点数
非数值型:
char
boolean
String
String不是基本数据类型,是引用数据类型,它是Java提供的一个类。
二、变量声明及使用
变量:指在程序运行中可以变的量。
第一步:声明变量:数据类型 变量名 如:int age;
第二步:赋值:变量名 = 数值 如:age = 10;
第一步和第二步合并:数据类型 变量名 = 数值 ; int age = 10;
第三步:使用变量,
语法格式:
【访问修饰符】 变量类型 变量名 [= 初值];
三、常量
定义:在程序运行中值不能改变的量
代码如下:
final int NUM=10; final double PI = 3.14; int r = 2; double area = PI * r * r;
使用常量的优点:
比较安全
做法:
-
常量名通常大写
-
不同字符使用下划线分隔
-
只能被赋值一次,通常定义时间即对其初始化
四、Scanner的使用
第一步:导入Scanner类
第二步:创建Scanner对象
第三步:获得键盘输入的数据
代码:
import java.util.*; public static void main(String[] args){ Scanner input= new Scanner (System.in) int now = input.nextlnt(); }
五、数据类型转换
1、自动类型转换规则
1)如果一个操作数为double型,则整个表达式可提升为double型
2)满足自动类型转换的条件
a、两种类型要兼容
数值类型(整形和浮点型)互相兼容
b、目标类型大于源类型,如:double大于int
2、强制类型转换规则
代码:
int b = (int)10.2; double a = 10; int c = (int)a;
高级别的类型赋值给低级别类型时,必须进行强制类型转换
六、运算符
1、赋值运算符 “=”
变量名 = 表达式;
表达式就是符号与操作数的组合
2、算术运算符
基本的算数运算符(+、-、*、/、%、++、–)
复合运算符(+=、-+、*=、/=、%=)
3、关系运算符
关系运算符的结果为布尔值
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Dq6X9Lzb-1655948033727)(C:\Users\sj154\AppData\Roaming\Typora\typora-user-images\1653006525005.png)]
注意点:
1)=为赋值运算符,==为等于运算符
2)关系表达式的结果为布尔值
3)>、<、>=、<=运算符的优先级别高于==、!=
4)>、<、>=、<=运算符只支持数值类型的数据比较
4、逻辑运算符
短路与&&
规则:两个操作数都是true,结果才是true;如果第一个为false,结果为false。
短路或||
规则:两个操作数一个是true,结果就是true;如果第一个为false,还要看第二个还要判断。
非!
规则:操作数为true,结果为false
操作数为false,结果为true
如果第一个操作数已经能确定表达式的值,第二个操作数就不必计算了。
优先级:!> &&>||
5、条件运算符(三元运算符)
条件 ? 表达式1(true) : 表达式2(false)
优先级:
赋值运算符的优先级最低
单目运算符的优先级最高 ! ++ –
算术运算符 > 关系运算符 > 条件运算符 > 逻辑运算符 >赋值运算符
() ! ++ – * / + - > < >= <= == !== 三目 && || =
第三章、流程控制(用来控制程序中各语句的执行顺序)
一、选择结构
1、if语句的语法:
if(条件){
语句
}
if选择结构是根据条件判断结果选择不同的处理
流程图:逐步解决指定问题的步骤和方法的一种图形化表示方法
运算符的优先级编写条件
-
)最高级的优先级:()
-
)最低的优先级:=
-
)优先级:!>算术运算符>关系运算符>&&>||
-
)复杂条件使用括号提高可读性
2、if-else选择结构:
if(条件){
语句1
}else{
语句2
}
适用于单个if选择结构无法完成
3、多重if选择结构:
if(条件1){
语句1
}else if(条件2){
语句2
}else{
语句3
}
注:使用多重if选择语句处理问题需要注意顺序
嵌套if选择结构
可以通过外层语句和内层语句的协作,增强程序的灵活性
4、switch选择结构语法:
switch(表达式){
case 常量1:
语句;
break;
case 常量2:
语句;
break;
……
default:
语句;
}
4、switch与多重if区别:
相同点:都是用来处理多分支条件的结构
不同点:
switch:只能处理等值条件判断的情况
多重if选择结构:没有switch选择结构的限制,特别适合某个变量处于某个连续区间时的情况
if选择结构,包括以下形式
基本if选择结构:可以处理单一或组合条件的情况
if-else选择结构:可以处理简单的条件分支情况
多重if选择结构:可以处理分段的条件分支情况
嵌套if选择结构:可以处理复杂的条件分支情况
switch选择结构
多重分支并且条件判断是等值判断的情况
二、循环结构
1、while循环
语法:
while(循环条件){
循环体
}
步骤:1)确定循环条件和循环操作
2)套用while语法写出代码
3)检查循环是否能够退出
2、do-while循环
语法:
do{
循环操作
}while(循环条件);
特点:先执行,再判断。
3、while与do-while的区别
1)语法不同:
while:先判断,再执行
do-while:先执行,在判断
2)执行次序不同
3)初始情况不满足循环条件时
while循环一次都不会执行
do-while循环不管任何情况都至少执行一次
4、for循环
语法:
for(初始化;条件判断;更新循环变量){
循环操作
}
需要多次重复执行一个或多个任务的问题考虑使用循环来解决
无论哪一种循环结构,都有4个必不可少的部分:初始部分、循环条件、循环体、更新循环变量
5、所有循环的区别
区别1:语法不同
区别2:执行顺序不同
while:先判断,再执行
do-while:先执行,再判断
for:先判断,再执行
区别3:适用情况
循环次数确定的情况,通常选用for循环
循环次数不确定的情况,通常选用while或do-while循环
第四章、多重循环
定义:一个循环体内又包含另一个完整的循环结构
使用注意:
1、各循环可互相嵌套
2、一般不超过三层
3、外层循环变量变化一次,内层循环变量要变化一遍
1、break语句语法:
改变程序控制流
用于do-while、while、 for循环中,可跳出循环而执行循环后面的语句
2、continue语句
continue:只能用在循环里
continue作用:跳过循环体中剩余的语句而执行下一次循环
对比break和continue
使用场合:
a、break常用于switch结构和循环结构中
b、continue一般用于循环结构中
作用(循环结构中)
a、break语句终止某个循环,程序跳转到循环块外的下一条语句
b、continue跳出本次循环,进入下一次循环
c、双重循环亦是如此
return:结束当前方法的执行并退出,返回到调用该方法的语句处
3、程序调试
通过代码阅读或者加输出语句查找程序错误
定义:当程序结构越来越复杂时,需要专门的技术来发现和定位错误。
程序出错时解决步骤:
逐条语句执行程序——>观察程序执行情况——>发现问题——>解决问题
程序调试步骤:
1、设置断点,断点:程序暂停执行的代码行
2、单步运行F8、步入方法内部F7、跳过当前断点,进入下一个断点F9
3、观察变量
-
第五章、数组(数组占内存中一段连续的空间)
一、一维数组
数据类型[] 数组名 = new 数据类型[数组长度]
或者
数据类型 数组名[] = new 数据类型[数组长度]
注意:
1、指定数组名和数组类型
2、必须写[],
3、[数组长度]决定连续分配的空间个数,通过数组的length属性获取长度
4、数组的数据类型用于确定分配的每个空间的大小。
二、数组的初始化
数据类型[] 数组名 = { 值1,值2……};
或者
数据类型[] 数组名 = new 数据类型[]{ 值1,值2…… };
遍历数组时可以使用for循环
增强for的语法结构是
for(元素类型 变量名 :要循环的数组或集合名){……}
数组的添加
步骤:
1、录入数组数据
2、找到插入值的下标
3、将包括下标在内的所有数组元素向后移一位
4、将新增元素插入指定位置
5、遍历数组
三、二维数组
1、冒泡排序
冒泡排序速记口诀(升序)
N个数字来排队
两两相比小靠前
外层循环N-1
内层循环N-1-i
2、使用Arrays为数组排序
使用java.util.Arrays类
java.util.包提供的工具类
Arrays类提供操作数组的方法,如排序、查询
Arrays类的sort()方法:对数组进行升序排列
Arrays.sort(数组名);
Arrays类:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zfDihxY2-1655948033732)(C:\Users\sj154\AppData\Roaming\Typora\typora-user-images\1654415993458.png)]
3、多维数组
三维及以上的数组很少使用
主要使用二位数组
从语法上Java支持多维数组
从内存分配原理的角度,只有一维数组
4、二维数组的定义与使用
<数据类型>[][] 【】【】数组名;或者<数据类型>数组名【】【】;
二维数组实际上是一个以一维数组作为元素的一维数组
赋值:
int【】【】 scores = new int【】【】{{},{},{}};
或者:
int scores【】【】={{},{},{}};
-
-