1.java语言的组成部份:
关键字:被Java语言赋予了特殊含义的单词,所有关键字字母都是小写。
Java中的保留关键字:
Java关键字 |
goto:C\C++中实现无条件转向语句,为了结构化程序设计java中现在一般不用。 |
const:和const一样,在Java中,const是作为保留字以备扩充。可以用final替换const,一般C++中用const,java中用final。 |
abstract | boolean | break | byte | case |
catch | char | class | continue | default |
do | double | else | extends | false |
final | finally | float | for | if |
implements | import | instanceof | int | interface |
long | native | new | null | package |
private | protected | public | return | short |
static | synchronized | super | this | throw |
throws | transient | true | try | void |
volatile | while | | | |
要特别注意的是,虽然goto、const在Java中并没有任何意义,却也是保留字,与其它的关键字一样,在程序里不能用来做为自定义的标识符。
标识符:就如人的名字,是一个标识,是Java中的包、类、方法、参数和变量的名字,但标识符不能以数字开头,不能是Java中的保留关键字。由26个英文字母,0~9个数字,下划线(_)和美元符号($)组成,java中严格区分大小写的。
定义格式如下:
1、包名:多单词组成时所有字母都小写,xxxyyyzzz。
2、类名接口名:多单词组成时,所有单词的首字母大写,XxxYyyZzz。
3、变量名和函数名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写,xxxYyyZzz。
4、常量名:所有字母都大写。多单词时每个单词用下划线连接,XXX_YYY_ZZZ。
Java注释格式:
1、单行注释;格式://注释文字。
2、多行注释;格式:/* 注释文字*/。
3、文档注释;格式:/** 注释文字*/。
单行和多行注释,被注释的文字,不会被JVM解释执行。
文档注释,是java特有的注释,其中注释内容可以被JDK提供的工具javadoc解析,生成一套以网页文件形式体现该程序的说明文档。注释是一个程序员必须要具有的良好编程习惯。编写程序先写注释再写代码。
常量与变量:
常量表示它的值是固定的,变量的值是可以改变的,是内存中的一块存储区域,该区域有自己的名字(变量名)和属性(数据类型),该区域的数据可以在同一类型范围内不断变化。
声明变量的格式:数据类型 变量名 = 初始化值。比如:String str = "Hello.Java!";
数据类型:
┌字节型(byte) ┌布尔型(boolean) │字符型(char) ┌基本数据类型┤ ┌定点类型┤短整型(short) │ │ │ │整型(int) │ └数值类型┤ └长整型(long) │ │ 数据类型┤ │ ┌单精度型(float) │ └浮点类型┤ │ └双精度型(double) │ │ ┌数组(array) └引用数据类型┤类(class) └接口(interface) |
数据格式转换:
自动类型转换和强制类型转换;
自动数据类型转换:表达式的数据类型自动提升,byte型、short型和char的值都可以提升为int型,float类型可以提升为double类型。如:short s = 1;s += 1;
强制类型转换:变量=(类型)运算。如:int a = 1;short s= (short)a;
运算符:
算术运算符 |
运算符 | 优先级 | 用法 | 含义 | 结合方向 |
> | 6 | a>b | 大于 | 从左到右 |
< | 6 | a<b | 小于 | 从左到右 |
>= | 6 | a>=b | 大于等于 | 从左到右 |
<= | 6 | a<=b | 小于等于 | 从左到右 |
!= | 7 | a!=6 | 不等于 | 从左到右 |
== | 7 | a==b | 等于 | 从左到右 |
逻辑运算符 |
||:当左边满足,右边不运算 |
&&:当左边不满足,右边不运算 |
运算符 | 优先级 | 用法 | 含义 | 结合方向 |
| | 10 | a|b | 逻辑或 | 从左到右 |
& | 8 | a&b | 逻辑非 | 从左到右 |
|| | 12 | a||b | 逻辑双或 | 从左到右 |
&& | 11 | a&&b | 逻辑双与 | 从左到右 |
! | 2 | !a | 逻辑非 | 从右到左 |
赋值运算符 |
运算符 | 优先级 | 用法 | 等效表达式 | 结合方向 |
= | 14 | a=b | a = b | 从右到左 |
+= | 14 | a+=b | a = a + b | 从右到左 |
-= | 14 | a-=b | a = a - b | 从右到左 |
*= | 14 | a*=b | a = a * b | 从右到左 |
/= | 14 | a/=b | a = a / b | 从右到左 |
%= | 14 | a%=b | a = a % b | 从右到左 |
|= | 14 | a|=b | a = a | b | 从右到左 |
&= | 14 | a&=b | a = a & b | 从右到左 |
^= | 14 | a^=b | a = a ^ b | 从右到左 |
>>= | 14 | a>>=b | a = a >>= b | 从右到左 |
>>>= | 14 | a>>>=b | a = a >>>= b | 从右到左 |
<<= | 14 | a<<=b | a = a <<= b | 从右到左 |
位运算符 |
运算符 | 优先级 | 用法 | 含义 | 结合方向 |
~ | 2 | ~a | 按位取反 | 从左向右 |
| | 10 | a | b | 按位或 | 从左向右 |
& | 8 | a & b | 按位与 | 从左向右 |
^ | 9 | a ^ b | 按位异或 | 从左向右 |
>> | 5 | a >> b | 按位向右移 | 从左向右 |
>>> | 5 | a >>>b | 无符号右移 | 从左向右 |
<< | 5 | a << b | 按位向左移 | 从左向右 |
运算符优先级和结合性 |
优先级 | 运算符 | 结合性 |
1 | ()[]. | 从左到右 |
2 | ! +(正) -(负) ~ ++ -- | 从右到左 |
3 | * / % | 从左到右 |
4 | +(加) -(减) | 从左到右 |
5 | << >> >>> | 从左到右 |
6 | < <= > >= instanceof | 从左到右 |
7 | == != | 从左到右 |
8 | &(按位与) | 从左到右 |
9 | ^ | 从左到右 |
10 | | | 从左到右 |
11 | && | 从左到右 |
12 | || | 从左到右 |
13 | ?: | 从右到左 |
14 | = += -= *= /= %= &= |= ^= ~= <<= >>= >>>= | 从右到左 |
程序流程控制:
if语句格式1: if(条件表达式) { 执行语句; } | if语句格式2: if(条件表达式) { 执行语句; } else { 执行语句; } | if语句格式3: if(条件表达式) { 执行语句; } else if(条件表达式) { 执行语句; } ...... else { 执行语句; } | switch语句格式: switch(表达式) { case value1: 执行语句; break; case value2: 执行语句; break; ...... default: 语句主体; } | 循环结构格式1: while(条件表达式) { 执行语句; } 循环结构格式2: do { 执行语句; }while(条件表达式); do{}while(case);不管条件是否满足循环体至少被执行一次 | for循环: for(初始化表达式;循环条件表达式;循环后的操作表达式) { 执行语句; } |
break(跳出), continue(继续):
break语句的作用范围:选择结构(switch)和循环结构(while,do......while,for)。
continue语句:只作用于循环结构。
这个两个语句单独存在下面都不可以有语句,因为执行不到,continue语句是结束本次循环继续下次循环。标号的出现,可以让这两个语句作用于指定的范围。
数组的定义:
同一种类型数据的集合,其实数组就是一个容器。
数组定义的格式:
元素类型[] 数组名= new 元素类型[元素个数或数组长度];
元素类型[] 数组名= new 元素类型[]{元素,元素,……};
数组内存结构:
java程序在运行时,需要在内存中的分配空间,为了提高运算效率,有对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式。
栈内存:用于存储局部变量,当数据使用完,所占空间就会自动释放。
堆内存:数组和对象,通过new建立的实例都存放在堆内存中,每一个实体都有内存地址值,实体中的变量都有默认初始化值,实体不在被使用,会在不确定的时间内被垃圾回收器回收。
数组操作常见的问题:
1.数组角标越界异常(ArrayIndexOutOfBoundsException);
2.空指针异常(NullPointerException);
二维数组:
就是在数组中又定义了数组。
定义格式:
数据类型[][] 数组名 = new 数据类型[行的个数][列的个数] ;
数据类型[][] 数组名 = {{......},{......},{......},{......},......};
格式1:int[][] arr = new int[3][2];定义了名为arr的二维数组,二维数组中有3个一维数组,每一个一维数组中有两个元素,一维数组的名称分别为arr[0], arr[1], arr[2]。
格式2:int[][] arr = new int[3][];二维数组中有3个一维数组,每个一维数组都是默认初始化值null。
格式3:int[][] arr = {{6,1,4},{5,2},{2,7,0,2}}; 定义一个名称为arr的二维组,二维数组中的有三个一维数组,每一个一维数组中具体元素都已初始化。
多维数组:
经过前面一、二维数组不难发现,想要提高数组的维数,只要在声明数组的时候将索引与中括号再加一组即可,所以三维数组的声明为:数据类型 数组名[][][],而四维数组为数据类型 数组名[][][][] … …,以此类推。使用多维数组时,输入、输出的方式和一、二维相同,但是每多一维,嵌套循环的层数就必须多一层,所以维数越高的数组其复杂度也就越高。如:
/*
输出数组内容并计算总和
*/
public class Test
{
public static void main(String args[])
{
int i,j,k,sum=0;
int A[][][]={{{7,2},{6,7}},{{9,9},{6,6}}};
for(i=0;i<A.length;i++)
for(j=0;j<A[i].length;j++)
for(k=0;k<A[i][j].length;k++)
{
System.out.print("A["+i+"]["+j+"]["+k+"]=");
System.out.println(A[i][j][k]);
sum+=A[i][j][k];
}
System.out.println("sum="+sum);
}
}
输出结果:
C:\Users\lenovo\Desktop>javac Test.java
C:\Users\lenovo\Desktop>java Test
A[0][0][0]=7
A[0][0][1]=2
A[0][1][0]=6
A[0][1][1]=7
A[1][0][0]=9
A[1][0][1]=9
A[1][1][0]=6
A[1][1][1]=6
sum=52
函数的定义:
函数就是定义在类中的具有特定功能的一段独立小程序,函数也称为方法。
函数的格式:
修饰符 返回值类型 函数名(数据类型 形式参数1,数据类型 形式参数2,......)
{
执行语句;
return 返回值;
}
返回值类型:函数运行后结果的数据类型。
数据类型:是传入函数参数的数据类型。
形式参数:是一个变量,作用就是存储调用函数时传递给函数的实际参数。
实际参数:传递给形式参数的具体数值。
return:返回函数的运算结果。
返回值:该值会返回给调用者。
函数的重载:在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数或者参数类型不同即可。如:
//返回两个整数的和
int add(int a,int b)
{
return a+b;
}
//返回三个整数的和
int add(int a,int b,int c)
{
return a+b+c;
}
//返回两个小数的和
double add(double a,double b)
{
return a+b;
}
二维数组用函数的体现形式:
/*
返回一个二维数组的实现过程
*/
public class FunctionArray
{
public static void main(String args[])
{
int arr1[][]={{34,45,52,2,24},{42,14,10,19}}; // 定义二维数组
int arr2[][]=new int[2][5];
arr2=add10(arr1); // 调用add10()方法,并把返回的值设给数组arr2
for(int i=0;i<arr2.length;i++) // 输出数组的内容
{
for(int j=0;j<arr2[i].length;j++)
System.out.print(arr2[i][j]+" ");
System.out.print("\n");
}
}
public static int[][] add10(int arr[][])
{
for(int i=0;i<arr.length;i++)
for(int j=0;j<arr[i].length;j++)
arr[i][j]+=10; // 将数组元素加10
return arr; // 返回二维数组
}
}
运算结果如下:
C:\Users\lenovo\Desktop\javaspace>javac FunctionArray.java
C:\Users\lenovo\Desktop\javaspace>java FunctionArray
44 55 62 12 34
52 24 20 29
C:\Users\lenovo\Desktop\javaspace>