Java的常用格式:
[类修饰符] class <类名> {
public static void main(String[ ]args){
程序代码
}
}
class前的修饰符可以省略,也可写成“public”。若写成“public”,则文件名必须与类名相同。
main前的修饰符必须是公有的、静态的和无返回值的。
main参数必须为String类型的数组,参数名字常写成“args”,写成“String[ ]args"或“String args[ ]”均可。
Java代码分为结构定义语句和功能执行语句,每条功能执行语句的最后都必须用分号(;)结束。
注:java语言是严格区分大小写的。
Java注释分为三类:
单行注释: //
多行注释:/*......*/
文档注释:/**... *内容...*/
标识符和关键字:
Java规定:标识符由字母、数字、下滑线(_)和美元符号($)组成,第一个字符不能是数字,且不能是Java中的关键字。
例如:以下都是非法标识符:
#name //#是非法字符
12sfsd //不能以数字开头
double //double是关键字
&name //&是非法字符
hello world //空格是非法字符
Java数据类型:
Java语言提供了8种基本数据类型:
数值型 :(byte、short、int、long)
实数型:(float、double)
字符型(char)
布尔型(boolean)
注:Java程序中,long类型后面加‘L’,float类型后面加‘f’,double类型后面加‘d’,char类型是单引号,只有一个字符。
例如:float d=1.5; /默认1.5为double类型,需要在后面加‘f’,double类型后面的‘d’可以不加,如:double=1.3;
逻辑型(boolean):只有两个取值——true和false,默认为false。不同于C语言,它不可以用非0和0代表逻辑值真、假。
Java变量的类型转换:
(1)自动类型转换:
- 数据类型从小到大的顺序是:byte<short, char<int<long<float<double.
- 强制类型转换:两种类型互不兼容或目标类型取值范围小于源类型取值范围。
double m=3.14;
//float p=m; 此处会出现编译错误,m为double类型占用空间64位,p为float类型占用空间34位,
//大空间的值无法赋给小空间的值,出现错误。
float p=(float)m; //强制类型转换
(2)表达式类型自动提升(取最高的运算类型).
表达式是指由变量和运算符组成的一个算式。Java规定表达式中参与运算的变量类型至少是int型,如低于int型,则会被自动提升为int型。
如:
byte b1=1,b2=2,b3;
// b3=b1+b2; 此处的b1+b2类型自动上升为了int类型,b3为byte类型,无法赋值。
b3=(byte)(b1+b2); //强制类型转换
方法重载:
Java允许在一个程序中定义多个名称相同的方法,但是参数的类型或个数不同。
Java不允许在语句块中定义与外部同名的变量。
1.除法运算符
如果除法运算符两边都是整数.则表示两个数整除。否则表示正常的除法。例如,12/5为整数之间相除,会忽略小数部分,结果为2,而 12.0/5则表示正常的除法,结果为2.4。
2.求余运算符
求余运算符又称为取模运算符,运算结果的符号与被模数(%左边的数)的符号相同,与模数(%右边的数)的符号无关。例如,(-8)%3=-2,8%(-3)=2。
3.自增、自减运算符
自增、自减运算符为单目运算符,如果出现在变量之前(如++a或者--a),称为前置增减运算符;如果出现在变量之后(如a++或者a--),称为后置增减运算符。如果为前置运算符,则“先运算,后处理”;后置运算符,则“先处理,后运算”。
赋值运算符和复合的赋值运算符的结合都是从右到左,将右边的表达式赋值给左边的变量:例如:X*=y+2;等价于X*=(y+2);
注:关系运算符其运算结果为布尔类型。
表2-7逻辑运算符
运算符 | 描述 | 范例 | 运行结果 |
! | 逻辑非 | !a | 若a为true,则!a为false;若a为 false,则!a为 true |
&& | 逻辑与 | a&&b | 若a、b均为true,则结果为 true,否则结果为false |
|| | 逻辑或 | a ||b | 若a、b均为false,则结果为 false,否则结果为true |
当进行&&运算时,如果左边表达式的值为 false,右边表达式将不会进行运算;当进行||运算时,如果左边表达式的值为true,右边表达式将不会进行运算,这种现象称为短路,所以|和&&又称为短路或和短路与。
注:逻辑运算操作数针对布尔型。
int x=0;
int y=0;
boolean m;
m=(x>0&&y++>1); //x>0不成立,m为false,&&后的将不用进行
System.out.println("x="+x);
System.out.println("y="+y);
运行结果:
:
条件运算符:表达式1?表达式2:表达式3;
Switch语句:
Switch后挎号中的表达式必须为byte、char、short、int、string类型,不接受其他类型。
Case后是整数或字符,也可以是常量表达式,同一Switch语句的case值不能相同。
break语句的功能是执行某个case分支后,跳出Switch语句,终止Switch语句的执行。
一维数组:(必须初始化后才可以使用)
表达式:
type[ ] arrayName;或type arrayName[ ]; //type:数据类型 ,arrayName:数组名。
数组中的元素可以是任何的数据类型,包括基本数据类型和引用数据类型。
注:定义数组时不能够指定数组的长度。方法中定义一个值,必须初始化后才能使用。
静态初始化:arrayName=new type[ ]{元素1,元素2,....};
//静态初始化:
int[ ]array; array=new int[ ]{1,2,3};
int[ ]array=new int[ ]{1,2,3}
int[ ]array={1,2,3}
动态初始化:arrayName=new type[ length];
int [ ]arrayInt=new int[3]; //动态初始化一个能容忍三个int型数的数组。
String[ ]arrayString=new String[3]; //动态初始化一个能容纳三个String值的引用类型数组。
数组索引是从0开始的,最后一个元素的索引为数组的长度减1。”数组名.length”返回数组的长度。
注:类名后无括号,方法名后有括号。局部变量无修饰符。
二维数组:
表达式:
type [ ][ ]arrayName;
type [ ]arrayName[ ];
静态初始化:int Array=new int[ ][ ]{{80,55},{30,49,50}};
注:Java语言里,二维数组每一行存储的元素个数是可以不同的。
动态初始化:直接分配:
arrayName=new int[2][3]; //初始化举例(分配一个2行3列的二维数组);
从高维开始,分别为每一维分配空间。例如:
int[ ][ ] intArray;
intArray=new int[3][ ]; //先分配二维数组的行空间
intArray[0]=new int[2]; //然后分别为每行分配元素空间
intArray[1]=new int[2];
intArray[2]=new int[3];