概述
学习任何语言都需要先学习该语言的基础语法,本篇文章在了解Java语言基础概念的前提下进一步对java的语法进行总结,适合初学者进行参看学习。
一、java的基本语法:
Java语言是严格区分大小写的,这个和C语言一样。而我们熟知的HTML是不用区分大小写的,格式书写自由。java的语句大体可以分为结构定义语句和功能执行语句,比如类名定义,main函数定义等就是结构定义语句,输出语句就是一个功能执行语句。结构定义语句后一般跟大括号,功能执行语句后面加分号。
public class Test
{
//结构定义语句
public static void main(String [] args)
{
//功能执行语句
System.out.println("Hello World!");
}
}
2、Java语言的注释:
(1)通过//来注释一行。
(2)通过/*......*/来注释多行。
(3)通过/**......*/也可以用来注释多行,一般用于文档注释,说说明类,方法等的作用及参数如下所示
public class Test
{
private String userName;
private String passWord;
public String getUserName()
{
return userName;
}
public String getPassWord
{
return passWord;
}
/**
* main函数,文档注释
*/
public static void main(String [] args)
{
//创建对象,单行注释
Test test = new Test();
test.userName = "jwang";
System.out.println(test.getUserName);
/*用于多行注释
test.passWord = "lihua";
System.out.println(test.getPassWord);
*/
}
}
注意:eclipse快捷键Ctrl+Shift+/可以实现第二种注释,shift+Alt+J可以实现第三种注释
3、Java的标示符:
(1)Java语言的标示符(即包,类,方法,变量等的名字)可以由字母,数字,下划线,以及美元符号$来组成,但是首字母不能是数字,而且标识符不能是Java语言中的关键字,严格区分大小写,一般为了阅读方便最好做到见名知意。
(2)转义字符:转义字符是指一些有特殊含义的,很难用一般方式表达的字符,如回车,换行等。所有的转义字符都以(\)开头,后面跟着一个字符来表示某个特定的转义字符。常见的转义字符如下:
引用方法 | 含义 |
\b | 退格 |
\t | 水平制表符tab |
\n | 换行 |
\r | 回车 |
\f | 表格符 |
\’ | 单引号 |
\” | 双引号 |
\\ | 反斜线 |
4、数据类型、变量与常量:
Java编程语言定义了八种基本的数据类型,可以分为四类:整形(byte,short,int,long),文本类(即字符类char),浮点类(float,double)和逻辑类(Boolean)。
(1)整数类:采用三种进制,八进制,十进制,十六进制。
首位以0开始,数字从0-7表示这是一个八进制的数;首位以0x开始,数字从0-f表示这是一个十六进制的数。用byte关键字定义字节型整数,占一个字节。Short关键字定义短整形数据,占两个字节。用int关键字定义整形数据,占用四个字节。用long关键字定义长整形的数据,占用8个字节。
(2)文本类(字符型):用char关键字来定义字符型的常量与变量,定义的字符必须用单引号,如‘a’等。字符型数据占用两个字节的内存。用string关键字来定义字符串,字符串必须用双引号。但是String不是基本数据类型。
(3)浮点型:如果一个数字包括小数部分和指数部分,或者在数字后面带有字母f,F(float)或者D,d(double)则该数字称为浮点型数。按照占用字节大小可以分为float(单精度浮点型)和double(双精度浮点型)。一般默认的都是双精度,如果是单精度则数字后面必须加一个f。如2E3f表示2×103等。Float型占用4个字节;double型占8个字节。
(4)逻辑类:用关键字Boolean来定义逻辑型的数据,占一个字节,定义的数据可能有两种值,true或者false。如boolean flag=true等。
注:1个字节等于8个二进制位。
说明:java中除了以上8中基本的数据类型之外针对以上8中基本数据类型提供了基本数据类型的包装对象类型,比如int型的包装对象为Integer。除此次之外还有各种引用数据类型,比如数组,String等。
5、数据类型的转换:
数据类型的转换有两种类型:自动类型转换和强制类型转换。
(1) 自动类型转换:自动类型转换也称为是隐式类型转换;将一种类型的变量赋值给另一种类型的变量时,只要满足以下条件就会发生自动类型转换。第一:两种类型之间兼容;第二:目标类型的字节大于源类型的字节。比如double a;a=3.14f.类型转换自动发生,无需显示说明。
表达式的数据类型自动提升:(注意是相对于表达式而言的)
① 所有的byte,short,char都自动转换为int型。
② 如果有一个long型,计算结果就是long型。
③ 如果有一个float型,计算结果就是float型。
④ 如果有一个double型,计算结果就是double型。
(2) 强制类型转换:强制类型转换也称作显式类型转换;如果被转换的值的数据类型大于其目标类型,将会丢失部分信息。如:int x=65;char ch=x;这样的语句将会报错,因为char类型小于int类型,编译器将不能自动转换类型,只能进行强制类型转换。如:int x=65; char ch=(char)x.
例子程序:
class wj21
{
public static void main(String[] args)
{
short x=1;
x=x+1;//这样编译时会出现错误,因为表达式的结果会自动转化成int型,
//将int型变量赋值给short型的变量,必须进行强制类型转换
x+=1;//这样是可以的,相当于x=short(x+1);一定要注意与上面的区别。
System.out.println(x);
}
}
6.Java中的运算符和表达式:
java中常用的运算符分为5类:算数运算符、赋值运算符、关系运算符、逻辑运算符、位运算符。
表达式是由常量变量对象方法调用运和操作符组成的式子。根据运算符的不同,表达式相应的分为下面几种:算数表达式、关系表达式、逻辑表达式、赋值表达式,这些都属于数值表达式。
(1).算数运算符:主要用于数学计算。
运算符 | 说明 | |
| - | 一元减,即取负 |
一元运算符 | ++ | 自增,如++a等价于a=a+1 |
-- | 自减,如--a等价于a=a-1 | |
二元运算符 | + | 加法,返回两个操作数的和 |
- | 减法,返回两个操作数的差 | |
* | 乘法,返回两个操作数的积 | |
/ | 除法,返回两个操作数的商 | |
% | 求余(取模),只对整数适用 |
(2)关系运算符:关系运算符可以测试两个操作数的关系(但不改变两个操作数的值)关系表达式的结果为Boolean型。
运算符 | 说明 |
== | 等价,检查两个操作数是否相等 |
!= | 不等于,检查两个操作数是否不相等 |
〉 | 大于,检查左操作数是否大于右操作数 |
〉= | 大于等于,检查左操作数是否大于等于右操作数 |
〈 | 小于,检查左操作数是否小于右操作数 |
〈= | 小于等于,检查左操作数是否小于等于右操作数 |
(3).逻辑运算符
运算符 | 说明 | ||
Java | C语言 | ||
一元 | ! | 逻辑非(not) | 逻辑取非 (not) |
二元 | & | 逻辑与(and)与C语言中的&&相同 | 按位与 |
| | 逻辑或(or)与C语言中的||相同 | 按位或 | |
&& | 短路与,如果左操作数为false,则不运算右操作数 | 逻辑与(and) | |
|| | 短路或,如果左操作数为true,则不运算右操作数 | 逻辑或(or) |
(4)位运算符:java中常用的位运算符如下:
~ | 位求反 |
& | 按位与 |
| | 按位或 |
^ | 按位异或 |
<< | 左移 |
>> | 右移 |
>>> | 不带符号右移 |
注:右移运算符对应的表达式为x>>a,运算的结果是操作数x被2的a次方来除,左移运算符对应的表达式为x<<a,运算的结果是操作数x乘以2的a次方。
(5)赋值运算符:
运算符 | 说明 |
= | 赋值,将右侧的值赋给左侧的变量 |
+= | 相加并赋值,如:a+=b,相当于a=a+b |
-= | 相减并赋值,如:a-=b,相当于a=a-b |
*= | 相乘并赋值,如:a*=b,相当于a=a*b |
/= | 相除并赋值,如:a/=b,相当于a=a/b |
%= | 求余并赋值,如:a%=b,相当于a=a%b |
(6)条件运算符:条件运算符是三元运算符,他的一般形式是:
表达式1?表达式2:表达式3
如果表达式1的结果是真,则执行表达式2,否则执行表达式3.条件运算符在某些情况下能够代替小型的if-else语句。
二、java语言流程控制:
流程控制一般可以分为顺序结构,选择结构,还有循环结构三种。
1、顺序结构:顾名思义顺序结构就是程序从上到下一条一条的按照顺序进行执行,没有语句的判断和跳转,直到程序结束。
2、选择结构:主要分为if语句和switch语句两种类型
If语句又可以分为以下几种:
① If(表达式){语句};
② If(表达式){语句1};else{ 语句2};
③ If(表达式1){语句1};
else if(表达式2){语句2};
else if(表达式3){语句3};
.......................
else {语句n};
④ 嵌套if语句:
If(表达式1){
If(表达式2){语句1};
else {语句2};
}
else{
If(表达式3){语句3};
else{语句4};
}
注意:在使用时if后面必须是一条语句,如果是多条语句,必须使用大括号将其组成复合语句。否则编译的时候可能会出现错误。
switch选择结构的格式如下:
switch(表达式){
case 常量表达式1: 语句1;
case 常量表达式2: 语句2;
.............
case 常量表达式n: 语句n;
default: 语句n+1;
}
注:
① default语句是可选的,他接受除了上面接受的值,通俗的讲谁都不要的归他。
② case后面只能跟一条语句,如果有多条语句必须将其写成复合语句的形式。
③ switch判断语句只可以接受byte,short,char,int型,不能接受其他的类型 。
④ 一旦第一次遇到与case匹配的语句,就直接执行这条语句以及后面的所有语句。
⑤ case语句遇到break就会跳出,所以通常与break配合使用。
3、Java中的循环语句与C语言中的循环语句相同,有for循环,while循环语句,以及do-while循环。
(1)for循环语句格式如下:
for(表达式1;表达式2;表达式3){循环体语句};
注:表达式1一般都是变量赋初值,表达式2是判断语句,表达式3是控制变量增减的语句。执行过程是先执行表达式1,然后判断表达式2,表达式2成立的话再执行循环体语句,然后判断表达式3.直到表达式2条件不成立时跳出循环。循环体语句必须是一条语句,如果是多条语句必须用{ }括起来,组成符合语句。
(2)while循环语句格式如下:
while(表达式){
循环语句;
}
while语句一般是在不知道循环次数的情况下使用,执行过程是先判断表达式,当表达式成立时再执行循环体语句,如果表达式不成立,则直接跳出循环。一般变量赋值在while语句之前给出。
(3)do-whlle循环语句格式如下:
do{
语句;
}while(表达式);
do-while语句无论表达式是否成立都会执行一次,也就是先执行后判断。
总结:当已知循环的次数时优先选择for循环,当循环的次数不知,而且循环条件比较明显时用while循环,当无论循环条件是否成立,循环体语句至少被执行一次时,选择do-while。
4、break与continue关键字:
(1)break关键字不仅可以用于switch语句,还可以用于循环语句,当满足某个条件时直接跳出循环。
(2)continue关键字可以用于循环语句,经常与if配套使用,当满足if条件时,就不再执行continue后面的语句,而是进入下一次的循环。