JavaSE:Java基本语法(上)
基本语法思维导图
以下思维导图为大概,其中更多细节可见下面指定段落。
关键字和保留字
Java中包含的关键字有很多,但是都有见名知意的特点,并且并不需要特地的记忆,在学习的过程中自然而然的就能熟练的掌握。注意:关键字都有一个特点:所有字母都为小写。
标识符
定义合法标识符规则:
- 由26个英文字母大小写,0-9,_或者$组成
- 数字不可以开头
- 不可以使用关键字和保留字,但事实可以包含他们。
- Java中严格区分大小写
- 标识符不能包含空格
标识符中的名称命名规范:
- 包名:多单词组成时都小写:xxxyyyzzz
- 类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz
- 变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写xxxYyyZzz
- 常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ
变量
基本数据类型使用说明
使用变量时注意事项:
- Java中每个变量必须先声明,再使用
- 使用变量名来访问这块区域的数据
- 变量的作用域:其定义所在的一对 { } 中
- 变量只有其作用域内才有效
- 同一个作用域内,不能定义重名的变量
- 变量必须先声明,后使用
变量声明:
int myAge;
变量的赋值:
myAge = 12 ;
变量的使用:
System.out.println(myAge);
一些基本数据类型使用说明:
一:整型
- Java的整型常量默认为 int 型,声明long型常量需要在后面加 ‘l’ 或者 ‘L’。
- Java程序中变量通常声明为 int 型,除非不足以表示较大的数才用 long 型。
二:浮点型
与整数类型类似,Java浮点类型也有固定的表数范围和字段长度,不受具体操作影响。
浮点型常量由两种表示形式:
- 十进制数形式:如:5.12、512.0f、 .512(必须要有小数点)
- 科学计数法形式:如5.12e2、512E2、100E-2
float:单精度,位数可以精确到7位有效数字。很多情况下,精度很难满足需求。
double:双精度。精度是float的两倍。通常采用此类。
三、字符型(char)
定义 char 型变量,通常使用一对 ’ ’ ,内部只能写一个字符。
表示方式:
-
声明一个字符。例如:char c1 = ‘a’;
-
转义字符。例如:char c2 = ‘\n’;
-
直接使用unicode值来表示字符型变量。
例如:’ \uXXXX '。其 XXXX 表示十六进制整数:\u000a 表示\n:char c3 = ‘\000a’ ;
四:布尔型:blooean
- 只能取两个值之一:true 、 false
- 常常在条件判断、循环结构中使用。
基本数据类型运算
前提:布尔类型无法参加运算,因此基本的数据类型运算只存在7种基本数据类型之间。
运算规则:
-
自动类型提升:
当容量小的数据类型的变量与容量大的数据类型的变量的数据类型的变量做运算时,结果自动提升位容量大的数据类型。
byte、char、 short —> int —> long —> float —> double
byte、char、short 三种类型之间进行运算的话,结构都得最少的 int 型,包括相同类型进行运算。
class VariableTest{ public static void main(String[] args){ byte b1 = 2; int i1 = 129; //编译不通过,从 int 型转换到 byte 型可能会有损失 //byte = b1 + i1 ; int i2 = b1 + i1; //最少要使用 int 型来接收 long l1 = b1 + i1; float f = b1 + i1; System.out.println(i2); //***************************** char c1 = 'a'; int i3 = 10 ; int i4 = c1 + i3 ; System.out.println(i4); //以下都无法编译通过 //short s1 =10; //char c2 = c1 + s1; //byte b2 = 10; //char c3 = c1 + b2 ; //short s3 = b2 + s2; //short s4 = b1 + b2; } }
-
强制类型转换:
自动类型提升运算的逆运算。
- 需要使用强转符:()
- 注意:强制类型转换,可能导致精度损失。
class VariableTest2{ public static void main(String[] args){ double d1 = 12.9; //精度损失举例1 int i1 = (int)d1; //截断 System,out.println(i1); //没有精度损失 long l1 = 123; short s2 = (short)l1; //精度损失举例2 int i2 = 128; byte b1 = (byte)i2; System.out.println(b1); //打印出 -128 } }
引用数据类型使用说明
Stiring类型的使用
- String 属于引用数据类型,翻译为字符串
- 声明 String 类型变量时,使用一对""
- String可以和8种数据类型作运算,且运算只能连接运算:+
- 运算的结果仍然是 String 类型
class StringTest{
public static void main(String[] args){
String s1 = "Hello World";
System.out.println(s1);
String s2 = "2";
String s3 = "";
//char c = ''; //编译不通过,char里必须有一个字符。
//******************************
int number = 1001 ;
String numberStr = "学号:";
String info = numberStr + number; // + :连接运算
boolean b1 = ture ;
String info1 =info + b1;
System.out.println(info);
}
}
进制说明
计算机种不同进制的使用说明
对于整数,有四种表示方式:
- 二进制:0,1。以0B或者0b开头
- 十进制
- 八进制:以数字0开头
- 十六进制:以0x或者0X开头
计算机底层都以 补码 的方式开存储数据。
运算符
算术运算符
符号 | 含义 |
---|---|
+ | 正号、加、字符串连接 |
- | 负号、减 |
* | 乘 |
/ | 除 |
% | 取余 |
++ | 自增 |
– | 自减 |
赋值运算符
符号: =
- 当“=”两侧数据类型不一致时,可以使用自动类型转换或使用强制类型转换原则进行处理。
- 支持连续赋值。
扩展赋值运算符: -= += *= /= %=
class SetValue{
public static void main(String[] arg){
int v1 = 10;
int v2 = 42;
int v3,v4;
v3 = v4 = 55; //连续赋值
int v5 = 12. v6 = 23;
//*******************************
int num1 = 30;
num1 -= 21;// num1 = num - 21;
System.out.println(num1);
short s1 = 32;
//s1 = s1 +2; /。编译失败
s1 +=2; //这种运算方法不改变原本的数据类型
}
}
比较运算符
运算符 | 含义 |
---|---|
== | 相等于 |
!= | 不等于 |
< | 小于 |
> | 大于 |
<= | 小于等于 |
>= | 大于等于 |
instanceof | 检查是否为类的对象 |
逻辑运算符
注意:逻辑运算符只运用于布尔类型的变量
运算符 | 含义 |
---|---|
& | 逻辑与 |
| | 逻辑或 |
! | 逻辑非 |
&& | 短路与 |
|| | 短路或 |
^ | 短路异或 |
位运算符
运算符 | 含义 |
---|---|
<< | 左移 |
>> | 右移 |
>>> | 无符号右移 |
& | 与运算 |
| | 或运算 |
^ | 异或运算 |
~ | 取反运算 |
无符号右移:不管变量是正数还是负数,在右移时前面补的都是 0
取反:正数取反,各二进制码按补码各自取反;负数取反,各二进制码按补码各自取反
结论:
- 位运算符操作的都是整形的数据
- << :再一定范围内,每向左移动一位,相当于 *2
- 在一定范围内,每向右移一位,相当于 / 2
三元运算符
格式
(条件表达式)?表达式1:表达式2;
条件表达式结果为 true ,执行表达式1 ; 条件表达式结果为 false , 执行表达式2
- 三元运算符与if-else的联系和区别:
- 三元运算符可简化 if-else 语句
- 三元运算符要求必须返回一个结果
- if后的代码块可以有多个语句
注意:
-
表达式1 和表达式2 可以为不同类型的变量,但是必须是可以能够统一为一种变量的不同变量。
-
三元运算符可以嵌套使用
-
凡是可以使用三元运算符的地方,都可以改写为if-else;反之,则不然。