目录
一、Java的基本语法
1.java代码的基本格式
修饰符 class 类名 {
代码程序
}
2.在编写Java代码时,需要特別注意下列几个关健点:
(1).Java中的程序代码都必须放在一个类中,用class关键字定义,前面可以带修饰符。
(2).avs中的程序代码可分为结构定义语句和功能执行语句,其中,结均定义语句用于声明一个类或方法,功能执行语句用于实现具体的功能。每条功能执行语句的最后都必须用分号(;)结束。
(3).Java语言严格区分大小写;一句连续的字符串不能分开两行写。
2.java中的三种注释
(1). " // "后加单行注释:对某一行代码进行注释
(2). 以" /* "开头以" */ "结尾:多行注释(里面不能重复使用多行注释,可以用单行注释)
(3). 文档注释以" /** "开头以" */ "结尾:文档注释
3.java中的标识符
在编程过程中,在程序中定义一些符号来标记一些名称;如,包名、类名、方法名、参数名、 变量名等,这些符号称为标识符。
>标识符可以由任意顺序的大小写字母、数字、下划线()和美元符号($)组成,但不能以数字开头,不能是java中的关健字。
在定义标识符时还应该遵循以下规则:
(1). 包名所有字母一律小写。
(2). 类名和接口名每个单词的首字母都要大写。
(3). 常量名所有字母都大写,单词之间用下划线连接。
(4). 变量名和方法名的第一个单词首字母小写,从第二个单词开始每个单词首字母大写。
4.java中的关键字
关键字是事先定义好并赋予了特殊含义的单词 。
5.java中的常量
常量是在程序中固定不变的值,是不能改变的数据;常量包括:整形常量,浮点型常量,布尔常量,字符常量等。
(1). 整形常量:
二进制:由0和1组成的数字序列
八进制:以0开头并且其后由0~7范围内的整数组成的数字序列
十进制:由数字0~9范围内的整数组成的数字序列,第一位不能是0
十六进制:以0x或者0X开头并且其后由0~9、A~F、组成的数字序列
(2). 浮点数常量: 单精度浮点float、双精度浮点double;
单精度浮点数以F或f结尾;双精度浮点数以D或d结尾;也可以用指数表达。
(3). 字符常量
用于表示一个字符,要用' '引起来;可以是英文字符、数字、标点符号、转义序列。
(4). 字符串常量
用于表示一连串的字符,要用" "引起来;可以包含一个或多个字符,也可以不包含任何字符。
(5). 布尔常量
两个值:true和false
(6). null常量
只有一个值null,表示对象的引用为空。
6.java中的变量
(1). 定义:
在程序运行期间,随时可能产生一些临时数据,应用程序会将这些数据保存在一些内存单元中,每个内存单元都用一个标识符来标识;这些内存单元我们称之为变量,定义的标识符就是变量名,
内存单元中存储的数据就是变量的值。
(2). 变量的数据类型
(3). 浮点数类型变量:
浮点数类型变量用来存储小数数值;
浮点数类型分为两种:单精度浮点数 (float)、双精度浮点数(double), double型所表示的浮点数比float型更精确;
在取值范围中,E表示以10为底的指数,E后面的“+”号和“”号代表正指数和负指数,例如1.4E-45表示1.4*10 45;
(4). 字符类型变量:
>用于存储一个单一字符,在Java中用char表示。
>每个char类型的字符变量都会占用2个字节。
>赋值时,要用英文半角格式的单引号(")把字符括起来,如'a’,
>也可以赋值为0~65535范围内的整数,计算机会自动将这些整数转
化为所对应的字符。
(5). 布尔类型变量:
>布尔类型变量用来存储布尔值,在Java中用boolean表示,该类型
的变量只有两个值,即true 和false。
3.变量的类型转换
当把一种数据类型的值赋给另一种数据类型的变量时,需要进行数据类型转换分为:
自动类型转换、强制类型转换
(1). 自动类型转换(隐式类型转换)
两种数据类型在转换的过程中不需要显式地进行声明;需要满足两个条件:两种类型彼此兼容 ;目标类型的取值范围大于原类型的取值范围
(2). 强制类型转换
强制类型转换也叫显式类型转换,指的是两种数据类型之间的转换需要进行显式地声明。
当两种类型彼此不兼容,或者目标类型取值范国小于源类型时,自动类型转换无法进行,这时就需要进行强制类型转换
二、Java中的运算符
1.算术运算符
(1). 在进行自增(++)和自减 (--)的运算时,如果运算符放在操作数的前面则是先进行自增 或自减运算,再进行其它运算。反之,如果运算符放在操作数的后面则是先进行其它运算再进行自增或自减运算。
(2). 在进行除法运算时,当除数和被除数都为整数时,得到的结果也是一个整数。如果 除法运算有小数参与,得到的结果会是一个小数。
(3). 在进行取模《%)运算时,运算结果的正负取决于被模数(%左边的数)的符号,与模数(%右边的数)的符号无关。
2.赋值运算符
赋值运算符就是 = 符号,与数学的 = 符号作用相同,就是将右边的数据值赋值为右边的变量,赋值运算符左边必须是一个变量。
int a=10; //将10赋值给a这个变量代表的内存空间内。
3.比较运算符
比较运算符作用与数学中的作用相同
4.逻辑运算符
逻辑运算符只有三种,逻辑与(&&)、逻辑或(||)、逻辑非(!)。逻辑运算符的操作元必须是结果为Boolean型的变量或表达式。
5.位运算符
数据在计算机内的存储方式是二进位存储的,二进制在计算机内表示方式是一些按一定的排列规定进行排列在一起的数字0和数字1,例如:十进制10在计算机内表示是:0000 1010 (仅展示低八位),而位运算符就是可以对数据的每一位二进制数进行一定操作的运算符;
Java中的位运算符有7种,分别是按位与(&)、按位或(|)、按位取反(~)、按位异或(^)、按位左移( << )、按位右移( >> )和无符号右移(>>>)
按位或的运算规则是:对于数据的每一个二进制位,有1为1,全0为0。而对于按位取反运算符的话,则是将每一个二进制位取反。
6.移位运算符
左移: ( << )
右移: ( >> )
无符号右移: ( >>> )
右移的操作也是如此,只不过在进行右移操作时,如果被操作数时正数,那么右移空出来的二进制位就补0,如果被操作数是负数,那么空位处就补1;
而无符号右移,它在运算时,不论被操作数是正数还是负数,空位处都是填入0。
三、选择结构语句
1.if语句
if(布尔表达式){
语句序列
}
布尔表达式:可以单纯的一个布尔变量,也可以是复杂的表达式,但最后返回的结果必须是一个布尔值。
int phoneNumber=123456789;//定义一个变量,保存电话号码
if(phoneNumber != 849565423){
//如果此号码不等于849565423
System.out.println("对不起,您拨打的号码不存在!");//输出
}
if语句流程图:
2.if...else语句
if(布尔表达式){
语句序列1
}else {
语句序列2
}
若布尔表达式为真,则执行序列1的内容,否则就执行语句序列2的内容;
int password=987654321; //定义一个变量,保存密码值
if(123456 == password){ //如果密码是123456
System.out.println("密码正确,欢迎登录"); //密码正确
}else { //否则
System.out.println("密码错误,拒绝登录");
}
if...else语句流程图:
3.if...else if...else语句
int count=9; //定义一个变量,表示就餐人数
//输出
System.out.println("欢迎光临,请问有多少人用餐?");
System.out.println("回答"+count+"人");
//低就餐人数进行判断
if(count <= 4){
System.out.println("客人请到大厅4人桌用餐");
}else if(count > 4 && count <= 8){
System.out.println("客人请到大厅8人桌用餐");
}else if(count > 8 && count <= 16){
System.out.println("客人请到楼上包厢用餐");
}else{
System.out.println("抱歉,我们店中暂时没有这么大的包厢!");
}
//end
4.switch语句
switch是一种多分枝语句,在一定程度上能起到简化代码的作用;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);//打开扫描器
System.out.println("请输入成绩:");//输出字符串
int g= sc.nextInt();//获取控制台输入的数字
switch(g) {//使用switch判断数字,如果输入的值满足对应的case则输出对应的语句
case 10:
case 9: {
System.out.println("成绩为优");
break;
}
case 8: {
System.out.println("成绩为良");
break;
}
case 7:
case 6: {
System.out.println("成绩为中");
break;
}
case 5:
case 4:
case 3:
case 2:
case 1:
case 0: {
System.out.println("成绩为差");
break;
}
default : {
System.out.println("成绩无效");//如果不符合以上任何一个结果,输出 成绩无效
}
}
sc.close();//关闭扫描器
}
}
四、循环语句
1.while循环
while(条件表达式)
{
语句序列
}
与if语句内的条件表达式一样,在while语句中的条件表达式也只能返回一个布尔值的结果;
2.do...while循环
此条循环语句的作用其实与while语句的作用类似,不过do…while循环不同于while循环的一点在于,dowhile循环是先执行循环体的内容,最后在进行条件表达式判断,这是与while循环不同之处;
do{
语句序列
}while(条件表达式);
3.for循环
for是将 表达式初始化、条件判断、表达式计算,这三种操作集成为一体的一种循环语句。一定程度上简化了代码的变量个数。
for(表达式初始化; 条件判断; 表达式计算){
语句序列;
}
4.循环嵌套
5.跳转
五、循环控制语句
在执行了循环操作后,有时根据不同的需求,在符合特定的条件时,需要对循环进行不同的操作。Java提供了两种控制循环的关键字:break、continue。
1.break语句
break语句只能在循环中或者switch语句中使用,它的作用是跳出离它最近的一个循环或switch,或者跳出指定循环;
例:输出1-20之间第一个出现的偶数
public class Main {
public static void main(String[] args) {
//使用for循环获得 1 - 20 之间的每一个数字
for (int i = 1; i < 20; i++) {
//判断是否为偶数
if(i%2 == 0){
System.out.println(i); //输出
break; //直接退出循环
}
}
System.out.println("--- end ---");
}
2.continue语句
continue语句是对针对break语句的补充,break语句是立即结束最近的一个循环体,而continue语句是结束本次循环;
例:输出1-20的奇数
public class Main {
public static void main(String[] args) {
//循环获取 1- 20 之间的每一个数值
for (int i = 0; i < 20; i++) {
//判断是否为偶数
if(i%2 == 0){
continue; //结束本次循环,回到循环体处
}
System.out.print(i+" "); //输出数字
}
}
}
六、方法
Java方法是为实现某一功能语句的集合,方法对标于C语言的话就是函数,方法的定义与C语言的基本相同。合理的使用方法能够有效的减少代码的冗余度,能够提高代码的复用性;
定义方法格式:
修饰符 返回值类型 方法名(形参){
方法体
return 返回值;
}
修饰符:是对访问权限的限定,例如,public、static都是修饰符
返回值类型:用于限定方法返回值的数据类型
参数类型,用于限定调用方法时传入参数的数据类型
参数名:是一个变量,用于接收调用方法时传入的数据retum关键字:用于结束方法以及返回方法指定类型的值
返回值:被retum语句返回的值,该值会返回调用者
七、数组
数组就是具有相同数据类型的一组数据的集合;
1.一维数组
一维数组实际上是一组相同类型数据的线性集合;
在Java中,数组的声明有两种方式:
1、数组元素类型 数组名[]; 例如;int array1[];
2、数组元素类型[] 数组名; 例如;int[] array2;
2.二维数组
如果一维数组中的各个元素仍是一个数组,那么它就是二维数组;
图示:
创建:
二维数组的常见语法是与一维数组的创建时一样的,只不过多了一个行列的概念;
二维数组数据类型 数组名=new 二维数组数据类型(且与前面的一致)[行数][列数];
例如:int[][] arr=new int[3][4]; //声明了一个3行4列,数据类型为int类型的二维数组
赋值:
数组名[行号] [列号]=值;
静态的初始化:
数组的遍历:
在操作数组时,经常需要依次访问数组中的每个元素,这种操作叫做数组的遍历;
冒泡排序:
冒泡算法由双层循环实现,其中外层循环用于控制排序轮数;
多维数组: