Java基本语法

1.关键字和保留字

  1. 关键字
  • 定义:被Java语言赋予了特殊含义,用做专门用途的字符串。
  • 特点:关键字中所有字母都是小写
  1. 保留字
  • 定义:现有Java版本尚未使用,但以后版本可能会作为关键字使用,命名标识符时要避免使用这些保留字;例:goto、const。

2. 标识符

  1. 定义:Java对各种变量、方法和类等要素命名时使用的字符序列称为标识符。
  2. 技巧:凡是自己可以命名的地方都叫标识符。
  3. 定义合法标识符规则:
  • 由26个英文字母大小写,0-9,_或$组成;
  • 数字不可以开头;
  • 不可以使用关键字和保留字,但能包含关键字和保留字;
  • Java 中严格区分大小写,长度无限制;
  • 标识符不能包含空格。
  1. 标识符命名规则:
  • 包名:多单词组成时所有字母都小写,xxxyyyzzz;
  • 类名、接口名:多单词组成时,所有单词的首字母大写,XxxYyyZzz;
  • 变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz;
  • 常量名:所有字母都大写多单词时每个单词用下划线连接,XXX_YYY_ZZZ。

3.变量

基本概念

  1. 定义:变量是内存中的一块存储区域,该区域中的数据可以在同一类型范围内不断变化,变量是程序中最基本的存储单元,包含变量类型变量名存储的值
  2. 格式:数据类型 变量名 = 变量值;
  3. 作用:用于在内存中保存数据。
  4. 注意事项:
  • 变量必须先声明再使用
  • 使用变量名来访问这块区域的数据;
  • 变量的作用域,其定义所在的一对{}内;
  • 变量只有在其作用域内有效;
  • 同一个作用域内不能定义重名的变量。

变量的分类

  1. 按数据类型分为基本数据类型引用数据类型
  • 基本数据类型:

整数类型

byte、short、int、long

浮点类型

float、double

字符型

char

布尔型

boolean

  • 引用数据类型:


clsss

接口

interface

数组

array[]

  1. 按变量在类中声明的位置分为成员变量局部变量

整型变量

  1. Java中的整型常量默认为int型,声明long型常量必须在后面加**“l或L”**;
  2. 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:计算机中基本存储单元。

浮点类型

  1. 浮点型常量有两种表示形式:
  • 十进制数形式。如: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

字符类型

  1. char型数据用来表示通常意义上“字符”(2字节);
  2. Java中所有的字符都使用Unicode编码,因此一个字符可以存储一个字母一个汉字其他书面语的一个字符
  3. 字符型变量的三种表现形式:
  • 字符常量是用**单引号(‘’)**括起来的单个字符。例如:char c1 = ‘a’;
  • Java中还允许使用转义字符 ‘’ 来将其后面的字符转变为特殊字符型常量。例如:char c2 = ‘\n’,'\n’表示换行符
  • 直接使用Unicode值来表示字符型常量:‘\uXXXX’。其中XXXX代表一个十六进制整数。例如:\u000a表示\n;
  • char类型是可以进行运算的,因为都有对应的Unicode码。

转义字符

说明

\b

退格符

\n

换行符

\r

回车符

\t

制表符

布尔类型

通常用来条件判断循环结构中使用,只能取两个值之一:true或false

自动类型提升运算

  1. 容量小(表示数的范围)的数据类型的变量和容量大的数据类型的变量做运算时,得到的结果自动提升为容量大的数据类型。
  2. byte、char、short --> int --> long --> float --> double
  3. byte、char、short三种类型的变量做运算时,结果为int类型。

强制类型转换运算

  1. 本质是自动类型提升的逆运算。
  2. 需要使用强转符:()
  3. 可能导致精度损失。
double num1 = 12.9;
int num2 = (int)num1;

String字符串类型

  1. 使用方式与基本数据类型一致。
String str = "abcd";
  1. 一个字符串可以串接另一个字符串,也可以直接串接其他类型的数据(连接运算,运算结果为String类型)。
String str = "abcd"; 
str = str + "xyz";		//结果为abcdxyz
int n = 10;
str = str + n;				//结果为abcd10
  1. 如果需要使用拼接运算时,必须将String字符串放在首位才可以。
String str = "abcd";
int n = 10;
boolean m = true;
str = n + m + str;		//编译不通过
  1. 如果需要将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.二进制和十进制之间的转化
  1. 二进制转成十进制,乘以2的幂数
  2. 十进制转成二进制,除以2取余数

4.运算符

运算符是一种特殊的符号,用于表示数据的运算、赋值和比较等。运算符分为以下六种:

  • 算术运算符
  • 赋值运算符
  • 比较运算符
  • 逻辑运算符
  • 位运算符
  • 三元运算符

1.算术运算符

运算符

运算

+

正号

-

负号

+


-


*


/


%

取余 结果的符号与被模数符号一致

++

自增(前),先运算后取值

++

自增(后),先取值后运算

- -

自减(前),先运算后取值

- -

自减(后),先取值后运算

+

字符串连接

2.赋值运算符

  1. 符号: =
  • 当“=”两侧数据类型不一致时,可以使用自动类型转换或使用强制类型转换进行处理;
  • 支持连续赋值
int a1,b1;
a1 = b1 = 10;

int a1 = 10,b2 = 10;
  1. 扩展赋值运算符: +=,-=,*=,/=,%=不会改变变量本身的数据类型

3.比较运算符

  • 比较运算符的结果都是boolean型。

运算符

运算

==

相等于

!=

不等于

<

小于

>

大于

<=

小于等于

>=

大于等于

instanceof

检查是否是类的对象

4.逻辑运算符

  1. 逻辑运算符操作的都是boolean类型的变量。
  2. &(与)与&&(短路与)的区分
  • 相同点:运算结果相同当符号左边为true时,二者都会执行符号右边的运算
  • 不同点:当符号左边为false时,&会继续执行符号右边的运算,但&&会跳过符号右边的运算
  1. |与||的区分
  • 相同点:运算结果相同当符号左边为false时,二者都会执行符号右边的运算
  • 不同点:当符号左边为true时,|会继续执行符号右边的运算,但||会跳过符号右边的运算

运算符

运算

&

逻辑与

|

逻辑或


逻辑非

&&

短路与

||

短路或

^

逻辑异或

5.位运算符

  1. 位运算符操作的都是整型的数据;
  2. 在一定范围内,每向左移一位,相当于*2
  3. 在一定范围内,每向右移一位,相当于**/2**。

运算符

运算

细节

<<

左移

空位补0,被移除的高位丢弃,空缺位补0

>>

右移

被移位的二进制最高位为0,右移后,空缺位补0;最高位为1,右移后空缺位补1

>>>

无符号右移

被移位二进制最高位无论是1或0,空缺位都用0补

&

与运算

二进制位进行 & 运算,只有 1 & 1 时结果为1,否则为0

|

或运算

二进制位进行 | 运算,只有 0 | 0 时结果为0,否则为1

^

异或运算

相同二进制位进行 ^ 运算结果为0;不同二进制位进行 ^ 运算结果为1

~

取反运算

正数取反,各二进制码按补码各位取 反;负数取反,各二进制码按补码各位取反

6.三元运算符

  1. 格式—— (条件表达式) ? 表达式1 : 表达式2;
  • 若条件表达式为true,运算后的结果为表达式1
  • 若条件表达式为false,运算后的结果为表达式2
  1. 表达式1和表达式2为同种类型
  2. 三元运算符可以嵌套使用。
  3. 凡是可以使用三元运算符的地方都可以改写成if-else