世界上每种语言都有着一定规则才能被人们理解,这种规则有被称为语法,而作为高级语言的Java也有一定的语法需要遵守,今天主要学习的内容就是Java最基础的语法
目录
1、注释
在写代码的同时添加注释是程序员的良好习惯,注释就像找工作时的简历一样,可以让其他人更快的了解你是干什么的,注释内容不会进行编译,不影响程序正常运行,但在未来自己重新查看自己的代码或者他人阅读你的代码的时候,如果有写注释就能快速的知道这部分代码的作用是什么,可以不用一行一行的去看代码理解代码的意思,养成良好的写注释习惯既方便了自己也方便了他人。
1.1单行注释
单行注释“//”这一行后面的内容程序就是注释内容
System.out.println("我爱学习!!!");//输出 我爱学习!!!
1.2 多行注释
当注释的内容涉及多行时,使用多行注释就更为方便,只需要将注释的内容用“/*”和“*/”框起来就可以实现多行注释
String basePath = request.getSession().getServletContext().getRealPath("/uploads");
System.out.println("basePath = " + basePath);
/*
使用配置文件配置文件上传路径
String dateStr = (new SimpleDateFormat("yyyyMMdd/")).format(new Date());
String path = ConfigUtil.getUploadPath() + dateStr; //读取配置文件中的路径+时间
*/
1.3 文本注释
当需要生成一个开发者文档时,就不能使用多行注释了,需使用文档注释才能生成开发者文档,且文档注释中可以嵌套单行注释,使用“//*”和“*/”在这之间的内容就是文档注释
/**
* 文件上传请求处理类
*/
@Controller
public class FileUploadController {
***
}
2、关键字
关键字就是被Java语言赋予了特定的含义的单词
Java语言一共规定了53个关键字(目前还有两个关键字没有具体作用,也被称为保留字,以后可以会被赋予作用)
关键字的所有字母统一使用小写
关键字在大多数的编辑软件上都会进行高亮处理
public class HelloWorld {
public static void main(String[] args) {
System.out.println("HelloWorld");
}
}
如图中的public、class、static、void就是关键字
关键字不需要我们去死记硬背,只需要写多了自然就记住了
3、数据类型
3.1 计算机的存储单元
位(bit)
bit 是计算机存储设备的最小信息单元,又称为比特位,通常用小写字母 b 来表示,在二进制的计算机中每一位bit都可以代表一个0或者1.
字节(byte)
字节是计算机最小的存储单位,一个字节由8个连续的位组成,通常用大写的字母 B 来表示,在计算机科学中,用于表示ASCII字符,便是运用字节来记录表示字母和一些符号~例如字符A便用 “0100 0001”来表示。
Java中的数据类型通常分为两大类:基本数据类型、引用数据类型
3.2 基本数据类型
基本数据类型又分为整型、浮点型、字符型和布尔类型
整型 —— 字节(byte)、短整型(short)、整型(int)、长整型(long)
浮点型 —— 单精度(float)、双精度(double)
字符型 —— char
布尔类型 —— boolean
数据类型 | 关键字 | 内存占用(单位:byte) | 取值范围 |
整型 | byte | 1 | -128 ~ 127 |
short | 2 | -32768 ~ 32767 | |
int | 4 | -2的31次方到2的31次方减1 | |
long | 8 | -2的63次方到2的63次方减1 | |
浮点型 | float | 4 | 负数:-3.402823E+38到-1.401298E-45 正数: 1.401298E-45到3.402823E+38 |
double | 8 | 负数:-1.797693E+308到-4.9000000E-324 正数:4.9000000E-324 到1.797693E+308 | |
字符型 | char | 2 | 0~66535 |
布尔类型 | boolean | 1 | ture、false |
在没有做定义的整型默认是int类型,浮点型默认是double类型
3.3 引用数据类型
引用数据类型在创建的时候,会先在堆内存中分配一块空间,存储对象的具体信息,然后在栈中存储该对象的地址信息
在Java中除去基本数据类型,其他的类型都是引用数据类型,例如:类(class)、接口类型(interface)、数组类型(list)
4、变量
变量是在程序运行过程中可以发生改变的量
定义规范:数据类型 变量名 = 变量值
变量名通常使用小驼峰式命名(一个单词时全部使用小写,多个单词时从第二个单词开始首字母大写)
int serialNum = 12346578912;
注意事项:变量名不可以重复、变量值需要在数据类型的取值范围之内、在定义变量时可以先不赋值,但必须先赋值在使用、定义长整型(long)所定义的值大于整型(int)的取值范围(约21亿)时,需要在变量值后面加L(因为整型的默认值是int类型,在变量值后加L会将变量值转换成long类型)、定义单精度浮点型(float)时,需要在变量值后加F(因为浮点型的默认值是double类型,将double类型转换为float会造成精度丢失,所以需要加F将变量值强制转换为浮点型)
5、常量
常量是在程序运行过程中不会发生改变的量
定义规范:final 常量类型 常量名 = 常量值
常量名通常全部使用大写英文单词,多个英文单词组成时用“_”连接
final double PI = 3.1415926535
final是java关键字,其意为“最终”,使用了该关键字后定义的值就不能在发生改变
6、标识符
标识符是在自己定义出来给类、方法、变量、常量、接口等起名字的符号
6.1 标识符的定义规则:
由数字、字母、下划线( _ )和美元符( $ )组成
能以数字开头
不能是关键字
区分大小写
6.2 标识符的命名约定:
虽然Java标识符的命名不强制要求遵从该约定,但为了程序员之间更容易阅读他人的代码,提高代码可读性,便对标识符的命名做出了以下约定(部分常见约定)
1. 标识符命名时尽量做到见名知意
2. 代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束
3. 代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式
4. 方法名、参数名、变量名都统一使用小驼峰式命名
5. 类名使用大驼峰式命名
6. 常量命名全部大写,单词间用下划线隔开,力求语义表达完整清楚,不要嫌名字长
7、类型转换
7.1 自动类型转换
自动类型转换也称为隐式转换,当表示数据范围小的类型与表示数据范围大的类型运算时,会默认将表示数据范围小的数据类型转换为表示数据范围大的类型处理
表示数据范围由小到大如下图所示:
int a = 1;
short b = 2;
a = b // 编译成功,b(short)自动转换为int
b = a // 编译出错,a(int)的数据类型表示的范围比b(short)大,不能自动转换
7.2 强制类型转换
把小类型转换为大类型只需要在运算过程中就会进行自动转换,但将大类型转换为小类型就需要强制转换,因为将小类型转换为大类型不会造成精度丢失,而大类型转换为小类型有可能会造成精度丢失,这就需要我们程序员自行判断要不要进行强制转换
转换格式:目标数据类型 变量名 = (目标数据类型)值或者变量
int a = (int)21.65;
System.out.println(a);// 输出结果为:21(因为int类型没有小数,造成了精度丢失)
int a = 5136;
short b = (short) a;
System.out.println(b);//输出结果为5136,因为21在short的取值范围之内,没有造成精度丢失
8、运算符
运算符是对常量或者变量进行操作的符号
8.1 算数运算符
算术运算符有“+”、“-”、“*”、“/”、“%”(其中+、- 和数学中的一致,*、/、%分别代表数学中的乘法、除法和求余数)
int a = 1+2; // 与数学中的1+2相同,a=3
int b = 2-1; // 与数学中的2-1相同,b=2
int c = 2*2; // 与数学中的2×2相同,c=4
int d = 4/2; // 与数学中的4÷2相同,d=2
int e = 5/2;// 与数学中的5÷2的余数相同,e=1
8.2 赋值运算符
赋值运算符可以为变量常量进行赋值
符号 | 作用 | 说明 |
= | 赋值 | a=b,将b赋值给变量 a |
+= | 加后赋值 | 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 |
注:除“=”外其他赋值运算符都隐含了强制转换
8.3 自增自减运算符
自增自减运算符只有“++”和“--”
其意为 “++”:加1,“--”:减1
使用时可以把该运算符放在变量前也可以放在变量后,但是放在前后意义不同,放在变量前表示先进行该变量的自加,在进行算术表达式的运算;放在变量后表示先进行算术表达式的运算,结束后再进行自加一;
8.4 关系运算符
关系运算符用来判断二者之间的关系,结果是布尔类型,只有true或false
符号 | 说明 |
== | a==b,判断a和b的值是否相等,成立为true,不成立为false |
!= | a!=b,判断a和b的值是否不相等,成立为true,不成立为false |
> | a>b,判断a是否大于b,成立为true,不成立为false |
>= | a>=b,判断a是否大于等于b,成立为true,不成立为false |
< | a<b,判断a是否小于b,成立为true,不成立为false |
<= | a<=b,判断a是否小于等于b,成立为true,不成立为false |
8.5 逻辑运算符
逻辑运算符用来连接两个运算式,结果是布尔类型,只有true或false
符号 | 作用 | 说明 |
& | 逻辑与 | a&b,a和b都是true,结果为true,否则为false |
| | 逻辑或 | a|b,a和b都是false,结果为false,否则为true |
^ | 逻辑异或 | a^b,a和b结果不同为true,相同为false |
! | 逻辑非 | !a,结果和a的结果正好相反 |
&& | 短路与 | 作用和&相同,但是有短路效果 |
|| | 短路或 | 作用和|相同,但是有短路效果 |
其中&&、||、!较为常用
8.6 三元运算符
三元运算符通过判断关系表达式来选择性执行后面两个表达式中的一个
格式:关系表达式?表达式1 : 表达式2
int a = 1;
int b = 2;
int c= a>b?a:b; // 如果a>b为true则c=a,如果a>b为false则c=b
System.out.println(c); // 输出结果:2