Java基本语法
1.关键字和保留字
- 关键字
- 定义:被Java语言赋予了特殊含义,用做专门用途的字符串。
- 特点:关键字中所有字母都是小写。
- 保留字
- 定义:现有Java版本尚未使用,但以后版本可能会作为关键字使用,命名标识符时要避免使用这些保留字;例:goto、const。
2. 标识符
- 定义:Java对各种变量、方法和类等要素命名时使用的字符序列称为标识符。
- 技巧:凡是自己可以命名的地方都叫标识符。
- 定义合法标识符规则:
- 由26个英文字母大小写,0-9,_或$组成;
- 数字不可以开头;
- 不可以使用关键字和保留字,但能包含关键字和保留字;
- Java 中严格区分大小写,长度无限制;
- 标识符不能包含空格。
- 标识符命名规则:
- 包名:多单词组成时所有字母都小写,xxxyyyzzz;
- 类名、接口名:多单词组成时,所有单词的首字母大写,XxxYyyZzz;
- 变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz;
- 常量名:所有字母都大写,多单词时每个单词用下划线连接,XXX_YYY_ZZZ。
3.变量
基本概念
- 定义:变量是内存中的一块存储区域,该区域中的数据可以在同一类型范围内不断变化,变量是程序中最基本的存储单元,包含变量类型、变量名和存储的值。
- 格式:数据类型 变量名 = 变量值;
- 作用:用于在内存中保存数据。
- 注意事项:
- 变量必须先声明再使用;
- 使用变量名来访问这块区域的数据;
- 变量的作用域,其定义所在的一对{}内;
- 变量只有在其作用域内有效;
- 同一个作用域内不能定义重名的变量。
变量的分类
- 按数据类型分为基本数据类型和引用数据类型。
- 基本数据类型:
整数类型 | byte、short、int、long |
浮点类型 | float、double |
字符型 | char |
布尔型 | boolean |
- 引用数据类型:
类 | clsss |
接口 | interface |
数组 | array[] |
- 按变量在类中声明的位置分为成员变量和局部变量。
整型变量
- Java中的整型常量默认为int型,声明long型常量必须在后面加**“l或L”**;
- Java程序中的变量通常声明为int型,除非不足以表示较大的数才使用long型。
类型 | 占用存储空间 | 表示数的范围 |
byte | 1字节=8bit位 | -128~127 |
short | 2字节 | -215~215-1 |
int | 4字节 | -231~231-1 |
long | 8字节 | -263~263-1 |
bit:计算机中的最小存储单位。 byte:计算机中基本存储单元。
浮点类型
- 浮点型常量有两种表示形式:
- 十进制数形式。如:5.12 512.0f .512 (必须有小数点);
- 科学计数法形式。如:5.12e2 512E2 100E-2;
- float:单精度,尾数可以精确到7位有效数字,很多情况下精度难以满足需求;
- double:双精度,精度是float的两倍,通常采用此类型;
- Java的浮点型常量默认为double型,声明float常量,必须在后面加上**“f或F”**。
- 在开发中需要极高精度时,需要使用BigDecimal类替换浮点型变量。
类型 | 占用存储空间 | 表示数的范围 |
单精度float | 4字节 | -3.403E38~3.403E38 |
双精度double | 8字节 | -1.798E308~1.798E308 |
字符类型
- char型数据用来表示通常意义上“字符”(2字节);
- Java中所有的字符都使用Unicode编码,因此一个字符可以存储一个字母、一个汉字或其他书面语的一个字符;
- 字符型变量的三种表现形式:
- 字符常量是用**单引号(‘’)**括起来的单个字符。例如:char c1 = ‘a’;
- Java中还允许使用转义字符 ‘’ 来将其后面的字符转变为特殊字符型常量。例如:char c2 = ‘\n’,'\n’表示换行符;
- 直接使用Unicode值来表示字符型常量:‘\uXXXX’。其中XXXX代表一个十六进制整数。例如:\u000a表示\n;
- char类型是可以进行运算的,因为都有对应的Unicode码。
转义字符 | 说明 |
\b | 退格符 |
\n | 换行符 |
\r | 回车符 |
\t | 制表符 |
布尔类型
通常用来条件判断、循环结构中使用,只能取两个值之一:true或false。
自动类型提升运算
- 当容量小(表示数的范围)的数据类型的变量和容量大的数据类型的变量做运算时,得到的结果自动提升为容量大的数据类型。
- byte、char、short --> int --> long --> float --> double
- 当byte、char、short三种类型的变量做运算时,结果为int类型。
强制类型转换运算
- 本质是自动类型提升的逆运算。
- 需要使用强转符:()。
- 可能导致精度损失。
double num1 = 12.9;
int num2 = (int)num1;
String字符串类型
- 使用方式与基本数据类型一致。
String str = "abcd";
- 一个字符串可以串接另一个字符串,也可以直接串接其他类型的数据(连接运算,运算结果为String类型)。
String str = "abcd";
str = str + "xyz"; //结果为abcdxyz
int n = 10;
str = str + n; //结果为abcd10
- 如果需要使用拼接运算时,必须将String字符串放在首位才可以。
String str = "abcd";
int n = 10;
boolean m = true;
str = n + m + str; //编译不通过
- 如果需要将String字符串中的内容提取出对应的数字,可以使用Integer类进行操作。
int a = 10;
String b = a + "";
int b = Integer.parseInt(b);
进制与进制之间的转换
1.进制
所有数字在计算机底层都以**二进制(补码)**形式存在,对于整数,进制有四种表达方式:
- 二进制:0,1,满2进1,以0b或0B开头;
- 八进制:0-7,满8进1,以数字0开头;
- 十进制:0-9,满10进1;
- 十六进制:0-9及A-F,满16进1,以0x或0X开头。
2.二进制
Java整型常量默认为int类型,当用二进制定义整数时,其第32位是符号位;当是long类型时,二进制默认为64位,第64位为符号位。
二进制的整数有三种形式:
- 原码:直接将一个数值转成二进制数,最高位为符号位;
- 负数的反码:对原码****按位取反,最高位确定为1;
- 负数的补码:反码加1。
正数的原码、反码、补码都相同,负数的补码是其反码加1。
3.二进制和十进制之间的转化
- 二进制转成十进制,乘以2的幂数;
- 十进制转成二进制,除以2取余数。
4.运算符
运算符是一种特殊的符号,用于表示数据的运算、赋值和比较等。运算符分为以下六种:
- 算术运算符
- 赋值运算符
- 比较运算符
- 逻辑运算符
- 位运算符
- 三元运算符
1.算术运算符
运算符 | 运算 |
+ | 正号 |
- | 负号 |
+ | 加 |
- | 减 |
* | 乘 |
/ | 除 |
% | 取余 结果的符号与被模数符号一致 |
++ | 自增(前),先运算后取值 |
++ | 自增(后),先取值后运算 |
- - | 自减(前),先运算后取值 |
- - | 自减(后),先取值后运算 |
+ | 字符串连接 |
2.赋值运算符
- 符号: =
- 当“=”两侧数据类型不一致时,可以使用自动类型转换或使用强制类型转换进行处理;
- 支持连续赋值。
int a1,b1;
a1 = b1 = 10;
int a1 = 10,b2 = 10;
- 扩展赋值运算符: +=,-=,*=,/=,%=,不会改变变量本身的数据类型。
3.比较运算符
- 比较运算符的结果都是boolean型。
运算符 | 运算 |
== | 相等于 |
!= | 不等于 |
< | 小于 |
> | 大于 |
<= | 小于等于 |
>= | 大于等于 |
instanceof | 检查是否是类的对象 |
4.逻辑运算符
- 逻辑运算符操作的都是boolean类型的变量。
- &(与)与&&(短路与)的区分
- 相同点:运算结果相同,当符号左边为true时,二者都会执行符号右边的运算。
- 不同点:当符号左边为false时,&会继续执行符号右边的运算,但&&会跳过符号右边的运算。
- |与||的区分
- 相同点:运算结果相同,当符号左边为false时,二者都会执行符号右边的运算。
- 不同点:当符号左边为true时,|会继续执行符号右边的运算,但||会跳过符号右边的运算。
运算符 | 运算 |
& | 逻辑与 |
| | 逻辑或 |
! | 逻辑非 |
&& | 短路与 |
|| | 短路或 |
^ | 逻辑异或 |
5.位运算符
- 位运算符操作的都是整型的数据;
- 在一定范围内,每向左移一位,相当于*2;
- 在一定范围内,每向右移一位,相当于**/2**。
运算符 | 运算 | 细节 |
<< | 左移 | 空位补0,被移除的高位丢弃,空缺位补0 |
>> | 右移 | 被移位的二进制最高位为0,右移后,空缺位补0;最高位为1,右移后空缺位补1 |
>>> | 无符号右移 | 被移位二进制最高位无论是1或0,空缺位都用0补 |
& | 与运算 | 二进制位进行 & 运算,只有 1 & 1 时结果为1,否则为0 |
| | 或运算 | 二进制位进行 | 运算,只有 0 | 0 时结果为0,否则为1 |
^ | 异或运算 | 相同二进制位进行 ^ 运算结果为0;不同二进制位进行 ^ 运算结果为1 |
~ | 取反运算 | 正数取反,各二进制码按补码各位取 反;负数取反,各二进制码按补码各位取反 |
6.三元运算符
- 格式—— (条件表达式) ? 表达式1 : 表达式2;
- 若条件表达式为true,运算后的结果为表达式1;
- 若条件表达式为false,运算后的结果为表达式2。
- 表达式1和表达式2为同种类型。
- 三元运算符可以嵌套使用。
- 凡是可以使用三元运算符的地方都可以改写成if-else。