第5篇 基本语法篇(注释、基本数据类型、类型转换、变量、命名规则和关键字)
1. 注释
- 单行注释 //注释
- 多行注释 /* 注释 */
- 文档注释 /** 注释 */
2. 标识符命名规则 (与 js 规则一样)
-
标识符可以含有 字母, 数字, 下划线_, (*注意此处相较于 c 语言多出一个符)
-
不能以数字开头
-
不能是java中的保留字和关键字
-
java也采用了 unicode 编码方式,所以字母也可以是中文
-
建议采用驼峰法:
-
-首字母小写,每个单词开头字母大写,其余均小写
3.基本数据类型
3.1 整数型
类型 | 长度字节 | 位数 | 取值范围 | 备注 |
---|---|---|---|---|
byte类型 | 1个字节 | 8位 | -2^7 - 2^7-1 | -128 - 127 |
short类型 | 2个字节 | 16位 | -2^15 - 2^15-1 | -32768-32767 |
int 类型 | 4个字节 | 32位 | -2^31 - 1~2^31-1 | |
long 类型 | 8个字节 | 64位 | -2^63 - 1~2^63-1 | 末尾加L |
注解:
-
整型的范围与运行java代码的机器无关,这一点和C、C++不同,保证了代码在不同的平台之间的可移植型。
-
int最为常用,char和short主要用于特定场合,比如底层处理文件、处理需要占用大量存储空间的数组。要表示的数据超过int类型的范围时使用长整型int.
-
通常long类型后通常加字符“L”,例如 long a = 123L ; , 但是"L"理论上不区分大小写,但若写成小写的"l",容易与数字"1"混淆,不容易分辩,所以最好写成大写的“L”
3.2 浮点型
类型 | 长度字节 | 位数 | 取值范围 | 备注 |
---|---|---|---|---|
float 类型 | 4字节 | 32位 | 大约±3.402 823 47E+38F(有效位为6~7位) | 末尾加f |
double 类型 | 8字节 | 64位 | 大约±1.79769313486231570E+308(有效位为15位) |
注解:
-
默认浮点数使用类型为double, 其后可加字符“d”,"d"理论上不区分大小写
-
所以为了区分,通常浮点型末尾末尾加字符”f”, 例如 float a =3.1415926535f ;, "f"理论上不区分大小写
-
float 和 double 不能用来表示精确的值,如不能用来表示货币等。实际使用 BigDecimal 类
-
科学记数法: 结尾的"E+数字"表示E之前的数字要乘以10的多少次方。比如3.14E3就是3.14 × 103=3140,3.14E-3 就是 3.14 x 10-3 =0.00314
-
显然±3.402 823 47E+38F范围大于-2^63 - 1~2^63-1,即float范围大于long,可惜float不是完全精确的。
3.3 字符型
类型 | 长度字节 | 位数 | 取值范围 | 备注 |
---|---|---|---|---|
char 类型 | 2个字节 | 16位 | \u0000 - \uffff | 0 - 65535 |
注解:
-
Java的char类型可以表示标准的ASCII,
-
char类型还可以表示一个Unicode字符,代表一个单一的16位 Unicode 字符
-
想要打印 Unicode 字符 可以使用 “\u”+数字
-
字符和字符串是两种不同的数据类型。char类型使用单引号''表示,单引号里面只能有一个字符。字符串用双引号""表示,双引号中可以有很多字符。
3.4 布尔型
类型 | 长度字节 | 位数 | 取值范围 | 备注 |
---|---|---|---|---|
boolean 类型 | 0字节 | 1 位 | true or false | 默认值是 false |
注解:
-
JAVA规范中没有定义boolean类型的大小, 理论上组需要1bit 即可,但是编译时有定义:JVM规范第2版 3.3.4节:
- 单个的boolean 类型变量在编译的时候是使用的int 类型,4个字节(32bit)
- 但如果是boolean数组在编译的时候是作为byte array来编译的,每一个元件占1字节(8 bits)
3.5 对比总结
-
byte 作用类似于 c++中的char,但又无法直接存字符
-
char 大小与c++不同,多了一个字节,2字节可存 unicode, 所以可以是中文
-
java 无 unsigned 类型
-
java 常量的需要加修饰符 final,相当于c++中的 const
3.6 类型转换
类型 | byte => short =>int => long => float => double |
---|---|
优先级 | 低>>>>>>>>>>>>>>>>>>>>>>>>>>>>>高 |
-
低可以直接转高,但是高转低会出现溢出和丢精度的现象
-
不能对boolean类型进行类型转换,(String不是基本数据类型,能进行拼接)
-
高转低需要强制类型转换,显式写明要转换的类型
-
当多种数据类型的数据混合运算时,Java首先会自动将所有的数据转换成优先级高的的那种数据类型,然后再进行计算
-
char byte short 三者计算时都会先转换为int型再进行运算。
-
不需要显式强制转换的特例:由于整数默认类型是int,JVM会根据声明和char byte short 三者各自的数值范围把 int 值 自动强制转换成对应的类型,如果值超过范围还是需要显式地强制转换
4.变量
-
类变量
-
实例变量
-
局部变量
public class Person { //类变量: 需要关键词 static static int population = 1; //实例变量:从属于对象; 如果不初始化,会赋予默认值0, 0.0, false, null String name; int age; //mian方法 public static void main(String[] args) { //局部变量: 声明后必须初始化值,不然报错 /*int i; System.out.println(i);*/ int i; i=10; System.out.println(i); /* * 实例变量需要先创建一个对象 * 实例变量如果不复赋值则为默认值 */ /* * 创建对象 * 变量类型 变量名 = new 构造函数; */ Person person = new Person(); System.out.println(person.name); System.out.println(person.age); person = null; /* * 类变量的调用 * 类变量无需对象就可以调用 * 相当于c++中的静态成员,整个类共用一个 */ System.out.println(population); } }
4.1 变量命名规则
- 所有变量、方法、类名: 见名知意
- 类名 : 首字母 大写 和驼峰原则: Man, GoodMan
- 类成员变量、局部变量: 首字母 小写 和驼峰原则 : monthSalary
- 常量 : 大写字母和下划线 : MAX_VALUE
- 方法名 : 首字母小写和驼峰原则 : run(), runRun0
- 枚举类型里的枚举常量的名称应使用全大写字母,且不能包含空格、标点符号和其他符号。
5.关键字
在Java中目前一共有53个关键字:
-
48个关键字:abstract、assert、boolean、break、byte、case、catch、char、class、continue、default、do、double、else、enum、extends、final、finally、float、for、if、implements、import、int、interface、instanceof、long、native、new、package、private、protected、public、return、short、static、strictfp、super、switch、synchronized、this、throw、throws、transient、try、void、volatile、while
-
3个特殊直接量:true、false、null
-
2个保留字:goto、const
几个不常用的关键字:
-
assert : 断言(在异常这一章用)。它用于在程序执行时验证某些条件是否满足。如果条件成立,则程序继续执行;否则程序抛出异常或直接终止。
-
enum:枚举类。Java5之前,发挥类似作用的是final class。但是enum更方便。enum枚举类存储着枚举值的索引、名称、所有枚举值等重要信息,并且可以将每一个枚举值视为一个对象,进行自定义扩展属性和方法。
- 枚举类型的定义使用关键字“enum”,在定义中列出所有的枚举常量。每个枚举常量都是该枚举类型的实例,它们被分配了默认的名称
- 枚举类型的实例可以通过名称或序号来访问。
- 枚举类型的名称应该使用大写字母,以便与其他类和变量区分开来。枚举常量的名称也应该使用大写字母,且不能包含空格、标点符号和其他符号。
-
strictfp : 用来声明FP_strict(单精度或双精度浮点数)表达式遵循IEEE 754算术规范
-
transient :声明不用序列化的成员域
-
synchronized : 表明一段代码需要同步执行
-
volatile : 表明两个或者多个变量必须同步地发生变化
-
native : 用来声明一个方法是由与计算机相关的语言(如C/C++/FORTRAN语言)实现的
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!