开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第3天,点击查看活动详情
前言
本文为Java基础语法相关介绍,Java入门必学,包含:Java注释,标识符和关键字,Java数据类型,类型转换,变量、常量与作用域,基本运算符以及Java中的包机制。Java全栈学习路线可参考:【Java全栈学习路线】最全的Java学习路线及知识清单,Java自学方向指引,内含最全Java全栈学习技术清单~
一、注释
首先我们来了解一下在Java语言中是如何进行注释的,Java中的注释类型包含三种:单行注释,多行注释和文档注释。
//单行注释
/*
多行
注释
*/
/**
* @Description 文档注释
* @author 某某
*/
二、标识符和关键字
接下来了解一下Java中的标识符与关键字。
1.标识符定义
先来看一下标识符是如何定义的:
标识符定义:
- 包名、类名、方法名、参数名、变量名等,这些符号被称为标识符
- 标识符可以由字母、数字、下划线(_)和美元符号($)组成
- 标识符不能以数字开头,不能是java中的关键字
- 首字符之后可以是字母(AZ 或者 az),美元符($)、下划线(_)或数字的任何字符
- 标识符对大小写敏感 正确的标识符:
- User、user123、user_name、_user、$user
不正确的标识符:
- 123user、class、36.5、Hello World、num*456
根据定义,我们可以看出标识符就是用来为某一些特定的元素起一个确定的名字,当然标识符的定义是有一些规则限制的,所以我们在进行标识符起名时要注意这些规则。
2.Java标识符规则
下面 来看看Java标识符的定义需要注意那些规则:
- 包名所有字母必须小写。例如:com.wang.test 而类名和接口名每个单词的首字母都要大写。例如:ArrayList
- 常量名所有的字母都大写,单词之间用下划线连接。例如:DAY_OF_MONTH
- 变量名和方法名的第一个单词首字母小写,从第二个单词开始,每个单词首字母大写。例如:lineName、getLingNumber
- 在程序中,应该尽量使用有意义的英文单词来定义标识符,使得程序便于阅读。例如:使用userName表示用户名,password表示密码。
3.Java关键字
- 所有的关键字都是小写
- 程序中的标识符不能以关键字命名
- const和goto是保留字关键字,虽然在java中还没有任何意义,但在程序中不能用来作为自定义的标识符
- true、false和null不属于关键字,它们是一个单独标识类型,不能直接使用
下面列出了 Java 关键字(这些保留字不能用于常量、变量、和任何标识符的名称):
| 类别 | 关键字 | 说明 |
|---|---|---|
| 访问控制 | private | 私有的 |
| 访问控制 | protected | 受保护的 |
| 访问控制 | public | 公共的 |
| 类、方法和变量修饰符 | abstract | 声明抽象 |
| 类、方法和变量修饰符 | class | 类 |
| 类、方法和变量修饰符 | extends | 扩充,继承 |
| 类、方法和变量修饰符 | final | 最终值,不可改变的 |
| 类、方法和变量修饰符 | implements | 实现(接口) |
| 类、方法和变量修饰符 | interface | 接口 |
| 类、方法和变量修饰符 | native | 本地,原生方法(非 Java 实现) |
| 类、方法和变量修饰符 | new | 新,创建 |
| 类、方法和变量修饰符 | static | 静态 |
| 类、方法和变量修饰符 | strictfp | 严格,精准 |
| 类、方法和变量修饰符 | synchronized | 线程,同步 |
| 类、方法和变量修饰符 | transient | 短暂 |
| 类、方法和变量修饰符 | volatile | 易失 |
| 程序控制语句 | break | 跳出循环 |
| 程序控制语句 | case | 定义一个值以供 switch 选择 |
| 程序控制语句 | continue | 继续 |
| 程序控制语句 | default | 默认 |
| 程序控制语句 | do | 运行 |
| 程序控制语句 | else | 否则 |
| 程序控制语句 | for | 循环 |
| 程序控制语句 | if | 如果 |
| 程序控制语句 | instanceof | 实例 |
| 程序控制语句 | return | 返回 |
| 程序控制语句 | switch | 根据值选择执行 |
| 程序控制语句 | while | 循环 |
| 错误处理 | assert | 断言表达式是否为真 |
| 错误处理 | catch | 捕捉异常 |
| 错误处理 | finally | 有没有异常都执行 |
| 错误处理 | throw | 抛出一个异常对象 |
| 错误处理 | throws | 声明一个异常可能被抛出 |
| 错误处理 | try | 捕获异常 |
| 包相关 | import | 引入 |
| 包相关 | package | 包 |
| 基本类型 | boolean | 布尔型 |
| 基本类型 | byte | 字节型 |
| 基本类型 | char | 字符型 |
| 基本类型 | double | 双精度浮点 |
| 基本类型 | float | 单精度浮点 |
| 基本类型 | int | 整型 |
| 基本类型 | long | 长整型 |
| 基本类型 | short | 短整型 |
| 变量引用 | super | 父类,超类 |
| 变量引用 | this | 本类 |
| 变量引用 | void | 无返回值 |
| 保留关键字 | goto | 是关键字,但不能使用 |
| 保留关键字 | const | 是关键字,但不能使用 |
| 保留关键字 | null | 空 |
也即是说,关键字是Java语言本身定义好的用于特殊用途的命名定义,因此我们 在定义标识符的时候就不能使用这些名字,否则会起冲突呀。
三、数据类型
在Java中把数据类型分为基本数据类型和引用数据类型,下面我们逐一来了解一下:
1.Java基本数据类型
Java中的基本数据类型都是有数据大小限制的,那么在计算机中数据大小的计量单位有哪些呢?我们先来看看计算机中对于位、字节、比特、字符这些数据大小计量单位的定义:
- 位(bit):计算机内部数据储存的最小单位,1100 0111是一个八位二进制数
- 字节(byte):是计算机中处理数据的基本单位,习惯上用大写B来表示
- 1B(byte,字节) = 8bit(位)
- 字符:是指计算机中使用的字母、数字、字和符号
这些计量单位之间存在以下数量关系:
1bit表示1位, 1Byte = 8bit, 1024B = 1KB, 1024KB = 1MB,1024MB = 1GB
Java中的基本数据类型只有boolean,byte,short,int,long,float,double,char八种,以下表格总结了它们的占据空间大小,取值范围以及默认值信息:
| 基本类型 | 占据空间大小 | 取值范围 | 默认值 |
|---|---|---|---|
| boolean | 不确定 | true/false | 0 |
| byte | 一个字节 | -128——127 | 0 |
| short | 2个字节 | -2^15-2^15-1 | 0 |
| int | 4个字节 | -2^31-2^31-1 | 0 |
| long | 8个字节 | -2^63-2^63-1 | 0L |
| float | 4个字节 | -2^128-2^128 | 0.0F |
| double | 8个字节 | -2^1024-2^1024 | 0.0D |
| char | 2个字节 | \u0000 |
2.Java引用数据类型
基本类型变量的值,就是地址对应的值。而引用数据类型的值还是一个地址,需要通过“二级跳”找到实例。 引用数据类型是JAVA的一种内部类型,是对所用自定义类型和数组引用的统称,并非特指某种类型。
Java中的引用类型有很多,主要包含以下类型:
类、接口、数组 String Byte Integer ……
四、类型转换
下边我们来看看Java中的数据类型的转换,包含强制转换与自动转换,下面通过以下代码进行示例:
强制转换一般是从高精度类型向低精度类型进行转换,有可能会产生内存溢出的问题,因为低精度数据类型的表示范围比高精度数据类型的表示范围小;自动转换一般是从低精度类型向高精度类型进行转换,有可能会产生精度丢失的问题。
//---------强制转换
//强制转换 高-->低
int i = 128;
byte b = (byte)i; // -128 内存溢出
//---------自动转换
//自动转换 低-->高
int i2 = 128;
double d = i2;
//精度丢失
System.out.println((int)23.7); //输出23
System.out.println((int)-45.89f); //输出-45
char c = 'a';
int d = c+1;
System.out.println(d); // 输出 98
System.out.println((char)d); // 输出b
在数据类型转换中需要注意以下问题:
- 不能对布尔类型进行转换
- 不能把对象类型转换为不相干的类型
- 再把高容量转换到低容量时后,强制转换
- 转换的时候可能存在内存溢出,或精度问题!
在JDK7中新增了一个关于数字表示的新特性,就是数字之间可以用下划线间隔:
int money = 10_0000_0000; // int范围 -2^31 ~ 2^31-1
System.out.println(money); // 输出1000000000
五、变量、常量、作用域
接下来了解一下变量,常量以及它们各自的作用域。
1.变量
Java语言中支持的变量类型有以下这些:
- 类变量:独立于方法之外的变量,用 static 修饰。
- 实例变量:独立于方法之外的变量,没有 static 修饰。
- 局部变量:类的方法中的变量。
下面是类变量,实例变量以及局部变量的代码示例:
public class Variable{
//类变量 static
static int number=0; // 类变量
//实例变量:从属于对象,如果不自行初始化 数值默认值为0或0.0,
//boolean 默认为 false
//除了基本类型,其他默认都为null
String hello="hello world"; // 实例变量
public void method(){
//必须声明和初始化值
int a =0; // 局部变量
}
}
2.变量的命名规范
对于变量的命名也需要遵循以下 一些规范:
- 所有变量、方法名、类名:见名知意
- 类成员变量:首字母小写和驼峰原则,如:userName, 除了第一个单词以外,后面的单词首字母都大写。
- 局部变量:首字母小写和驼峰命名
- 常量:大写字母和下划线:如:MAX_VALUE
- 类名:首字母大写和驼峰原则,如:GoodMan
- 方法名:首字母小写和驼峰原则:如:getUser()
3.常量
常量就是一但定义其值就一直不会发生变化的量。
- 常量:初始化后不能在改变的值!不会变动的值。
- 所谓常量可以理解为一种特殊的变量,它的值设定以后,在程序运行期间不允许被改变。
下面是定义的一个常量的代码示例:
final 常量名 = 值
final double PI = 3.14;
常量常用大写字母来表示。
六、基本运算符
Java中也提供了许多基本的运算符供我们使用,包含算术运算符,赋值运算符,关系运算符,逻辑运算符,条件运算符等,下面我们就来详细看看吧~
1.java语言支持的运算符总览
以下是java语言支持的运算符,通过表格总结如下:
- 算数运算符:+,-,*,/,%,++,—
- 赋值运算符:=
- 关系运算符:>,<,>=,<=,==,!=,instanceof
- 逻辑运算符:&&,||,!
- 条件运算符: ?
- 扩展赋值运算符:+=,-=,/=,*=
下面的代码示例展示了对于这些运算符的使用:
long a = 1153132165L;
int b = 2468;
short c = 24;
byte d = 0;
//相加会自动到大类型
System.out.println(a+b+c+d); //类型 long
System.out.println(b+c+d); //类型 int
System.out.println(c+d); //类型 short
2.自增,自减运算符
自增,自减运算符也都属于一元运算符。
//++ -- 自增,自减 一元运算符
int a = 3;
int b = a++; //执行代码后,先给b赋值,再自增
//a++ a = a+1;
int c = ++a; //执行完这行代码前,先自增,再给c赋值
System.out.println(a); //输出5
System.out.println(b); //输出3
System.out.println(c); //输出5
3.逻辑运算符
逻辑运算符包含:与或非,下面是Java中的逻辑运算符的使用代码示例:
//与(and) 或(or) 非(取反)
boolean a = true;
boolean b = false;
//逻辑与运算:两个变量都为真,结果才为真
System.out.println("a&&b :" + (a && b));
//逻辑或运算:两个变量有一个为真,结果为真
System.out.println("a||b :" + (a || b));
//如果是真:则为假。如果是假,则为真
System.out.println("!(a&&b) :" + !(a && b));
4.位运算符
在我们一般的代码编写过程中很少会涉及位运算,不过我们还是有必要来了解一下位运算的使用,下面是位运算的一些代码示例:
/*
A = 0011 1100
B = 0000 1101
------------------
A&B = 0000 1100 与运算
A|B = 0011 1101 或运算
A^B = 0011 0001 异或,相同为0,不同为1
~B = 1111 0010 取反
2*8 = 16 ---> 2*2*2*2
<< 左移运算 *2
>> 右移运算 /2
0000 0000 0
0000 0001 1
0000 0010 2
0000 0100 4
0000 1000 8
0001 0000 16
*/
System.out.println(2<<3); //输出16
5.运算的特殊情况
在Java的运算中也有一些特殊情况如+=,-=,这些符号其实就是对于运算的一种简写,下面我们通过一些代码来了解一下吧~
int a =10;
int b =20;
a+=b; // a = a+b;
System.out.println(a); //输出 30
a-=b; // a = a-b;
System.out.println(a); //输出 10
System.out.println("===============");
//对于String字符串类型的,当进行+时,会自动把所有类型转换成String类型
//字符串在前面,后面的都转换成了String类型所以输出1020
System.out.println(""+a+b); //输出1020
//这时先进行 a+b的操作算成30 然后 30再转换成String类型,所以输出30
System.out.println(a+b+""); //输出30
6.三元运算符
下面是Java中三元运算符的代码示例:
// x ? y :z
//如果x==true,则结果为y,否则结果为z
int score = 85;
String type = score>80?"优秀":"及格";
System.out.println(type); // 优秀
七、包机制
为了更好的组织项目的代码文件,JAVA提供了包机制,用于区别类名的命名空间。 对于Java中的包有以下这些规定:
- 包语句的语法格式为: package com..
- package必须发放在最上面(第一行)
- 一般利用公司域名倒置作为包名
- 为了能够使用某一个包的成员,我们需要再java程序中明确导入改包。
对于导包我们使用import语句就可完成,如:
import java.util.Date;
后记
本文为大家介绍了Java中的基础语法,总结一下就是:Java注释,标识符和关键字,Java数据类型,类型转换,变量、常量与作用域,基本运算符以及Java中的包机制。如果你想继续深入学习Java相关的知识和技术,可以参考:
Java全栈学习路线可参考:【Java全栈学习路线】最全的Java学习路线及知识清单,Java自学方向指引,内含最全Java全栈学习技术清单~