第二节 Java编程基础
1. Java基本语法
1.1 Java的基本语法格式
[修饰符] class 类名{
程序代码
}
(1)程序代码可分为:结构定义语句和功能执行语句,每个功能执行语句结尾都必须有分号(;)结尾。
(2)Java之中是严格区分大小写的。
1.2 Java的注释
(1)单行注释:用符号//表示
(2)多行注释:用/*开头,以*/结尾
(3)文档注释:用来生成API帮助文档的,以/**开头以*/结尾
1.3 Java标识符
Java中标识符可由英文字母的大小写、数字、下划线、和$组成,但是不能用数字开头,也不能是关键字和保留字。最好要见名知意。
规范:
(1)包命名:采用域名的倒置,全部小写
(2)类和接口命名:每个单词首字母都大写
(3)方法名和变量名:除了首字母外,所有的其他首字母都大写
(4)常量:所有字母都大写,单词之间用下划线隔开
1.4 Java中的关键字
goto和const为保留字
2.Java中的变量和常量
2.1 Java变量的定义
变量就是用来存放数据的,当我们定义一个变量,就会分配一定的内存空间,这个变量名就是空间的名称,而这个空间有多大是由变量类型决定的。
变量类型 变量名[=初始值];
2.2 变量的数据类型
(1)基本数据类型
整数类型
类型名 | 占用空间 | 取值范围 |
---|---|---|
byte | 8位(一个字节) | -27~27-1 |
short | 16位(2个字节) | -215~215-1 |
int | 32位(4个字节) | -231~231-1 |
long | 64位(8个字节) | -263~263-1 |
注意:如果数值的范围超出了int的范围,要在long类型的后面加上L或小写l,否则可以不加。
浮点类型
类型名 | 占用空间 | 取值范围 |
---|---|---|
float | 32位(4个字节) | 1.4E-45~3.4E+38,-1.4E-45~-3.4E+38 |
double | 64位(8个字节) | 4.9E-324~1.7E+308,-4.9E-324~-1.7E+308 |
注意:由于在Java中小数会被默认位double类型,所以如果我们要将一个小数赋值给float类型时要在小数后面加上F或小写f。
字符类型
char占用两个字节,赋值时要用单引号括起来,也可以给char类型赋值0~65535范围内的整数,计算机会自动根据ASCLL码进行转换位char类型字符。
布尔类型变量
boolean 占一位,只有两个值,false和true,在Java中不能用0代表false1代表true。
(2)引用数据类型
类(class)、接口(interface)、数组、枚举(enum)、注解(Annotation)
2.3 变量的类型转换
(1)自动类型转换
当一个类型取值范围小的数值直接赋值给另一个取值范围大的数据类型变量时,系统就可以进行自动转换。
(2)强制类型转换
将一个类型取值范围大的数值赋值给一个取值范围小的数据类型变量时。我们通过这种方式来进行强制转换:
目标类型 变量名 =(目标类型)要转换的变量;注意:这种方式一定要注意要转换的变量的值的大小是否超出了目标类型,如果超出那么会出现数值溢出的问题,随之得到的结果便不是我们想要的。
小技巧:
当我们使用+=、-=、*=、/=、%=运算符进行赋值时,强制类型转换会自动完成,同时表达式类型可以自动提升,比如说,byte、short、char三个类型进行运算,系统会自动将三者提升位int类型。
2.4 变量的作用域
在{}内的不能被在{}外的访问,在{}内的可以访问{}外的。
2.5 Java中的常量
(1)整数常量
二进制:0b或0B开头
八进制:0开头且后面由0~7的整数组成的数字序列
十六进制:0X或0x开头
(2)浮点数常量
可以以f或F结尾表示单精度,也可以以d或D结尾表示双精度,也可以不写结尾默认为双精度,还可以通过指数形式表达 。
(3)字符常量
单引号括起来的英文字母、数字、标点符号以及由转义序列 来表示的特殊字符。
(4)字符串常量
由双引号括起来的一连串字符。
(5)布尔常量
只有两个值false和true。
(6)null常量
表示对象的引用为空
常量的定义:
final 常量的数据类型 常量名[=初始值]
3. Java中的转义符–反斜杠(\)
(1)\r回车符,将光标定位当前行的开头,不会跳到下一行
(2)\n换行符,将光标换到下一行的开头
(3)\t制表符,相当于tab
(4)\b表示退格符号
4. Java运算符
4.1 算术运算符
+、-(可以表示加减,也可以表示正负)、*、/、%(表示求余,求余结果的正负取决于%左边数值的符号)、++、–、(可以放前面自增自减,也可以放在后面自增自减,区别就是放在前面要先增(减)再进行运算,放在后面就是先进行运算再进行增(减))
注意:除法运算,当两个数都是整数时,结果也是整数,
4.2 赋值运算符
=、+=、-=、*=、/=、%=(s+=i等效与s=s+i)
注意:不可以同时为多个变量赋同一值。
4.3 比较运算符
==、!=、<、>、<=、>=
4.4 逻辑运算符
&(与:两者boolean值有一个为false结果为false)、|(或:两者boolean值有一个为真结果为真)、^(异或:两者boolean值不一样结果为真)、!(boolean值为真加上它变假)、&&(短路与:只要第一个值为false,就不再进行第二个运算了)、||(短路或:只要第一个值为true就不再进行第二个运算了)
4.5 位运算
针对二进制的运算
&(按位与)、|(按位或)、~(取反)、^(按位异或)、<<(左移:移完右边空位补零)、>>(右移:向右边移动指定的位数,原来数是正数的在左边空位补0,原来负数的在左边空位补1)、>>>(无符号右移,不考虑正负数向右边移动指定位数,左边的空位补0)
4.6 三目运算符
格式:
boolean表达式?真的时候执行的语句:假的时候执行的语句;
5. 选择结构语句
5.1 if条件语句
格式:
(1)if(判断语句){}
(2)if(判断语句){
}else{}
(3)if(判断语句){}
else if(判断语句)……{}
else{}
5.2 switch条件语句
格式:
switch(控制表达式){
case 目标值1: 执行语句 1;break;……default:执行语句n;break;
6.循环结构语句
6.1 while循环
格式:
while(循环条件){执行语句;}
注意:一定要有出口,不然就是死循环(除非特定需要)
6.2 do……while循环
格式:
do{
执行语句;}
while(循环条件)
注意:不论循环条件是否成立都会先执行一遍,同时我们也要注意循环结束的出口,不然就是死循环(除非我们特意为之)。
6.3 for循环
格式:
for(初始化表达式;循环条件;操作表达式){执行语句;}
7. 跳转语句
7.1 break语句
在循环结构出现表示跳出当前循环执行循环下面的代码,在switch…case里面表示跳出switch…case结构。
如何由内层循环跳出外层循环,方法如下:
//利用标记跳出内层循环
//外层循环
outer:for(int i=1;i<=9;i++){
//内层循环
for(int j=1;j<=i;j++){
if(i>=3){
break outer;}
System.out.println(j+"*"+i+"="+j*i+"\t");
}
System.out.println("");
}
7.2 continue语句
用来终止本次循环,执行下一次循环。
8. 数组
定义一个连续的内存空间来存放相同数据类型的数据。
8.1 数组的定义
(1)数组类型[] 数组名 =new 数组类型[数组长度]
(2)数组类型[] 数组名=new 数组类型[]{元素1,元素2,元素3…}
(3)数组类型[] 数组名={元素1,元素2…}
当我们只写了长度没有给初始赋值,那么系统会给一个默认的值
Java中不同数据类型的默认值如下:
数据类型 | 默认初始化值 |
---|---|
byte、short、int、long | 0 |
float、double | 0 |
char | 一个空字符,’\u0000 |
boolean | false |
引用数据类型 | null,表示变量不引用任何对象 |
注意:我们访问数组要在索引范围内即0~length-1。否则会报错
8.2 数组的常见操作
(1)数组的遍历
int[] arr={1,2,3};
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);}
(2)数组最值的求法
int[] arr={1,4,2,5,6};
int max=arr[0];
for(int i=1;i<arr.length;i++){
if(arr[i]>max){
max=arr[i]}
}
System.out.println(max);
(3)数组的排序(常见的冒泡排序)
int[] arr={1,4,2,5,9,3,6};
for(int i=1;i<arr.length;i++){
for(int j=0;j<arr.length-i;j++){
if(arr[j]>arr[j+1]){
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
8.3 多维数组
二维数组可以看成是特殊的一维数组。
常见的几种定义方式:
(1)int [ ][ ] arr = new int[3] [4];
(2)int [ ][ ] arr = new int[3][ ];
(3)int [ ][ ] arr={{元素1,元素2…},{元素 3,元素4…}…};
int[][] arr=new int[3][];
arr[0]=new int[]{1,2};
arr[1]=new int[]{21,22,34};
arr[2]=new int[]{3,2,4,1,2,4};