一、标识符
标识(zhi)符:名字,比如类名、对象名、方法名…
一个合法的标识符组成:数字、字母、_和$
注意事项:
1、不能重复
2、不能以数字开头
3、区分大小写
4、不能以关键字和保留字作为标识符
关键字:该词汇在Java中已经定义了含义
保留字:该词汇在Java中还没有定义含义,但是以后可能会用,先保留起来 goto
二、命名规范
可以阅读
阿里巴巴规范手册
- 类名
- 如果是一个单词,那么首字母大写
- 如果是组合词,那么每个单词首字母大写
- 变量名
- 如果是一个单词,那么全部小写
- 如果是组合词,那么从第二个单词开始首字母大写【驼峰式命名法】
- 常量名
- 如果是一个单词,那么全部大写
- 如果是组合词,那么全部大写,单词之间用_隔开
三、容器
1、变量
程序运行期间,该变量中的数据可以发生改变
2、常量
程序运行期间,该容器中的数据不能发生改变(必须和final进行配合使用)
注意:
1、容器的类型确定了数据的类型
2、容器的大小确定了数据的大小
四、变量使用
1、声明变量
语法:
数据类型 变量名;
package com.example.chapter2;
public class Demo_1 {
public static void main(String[] args) {
// 声明变量
byte b;
}
}
内存详情
2、变量赋值
变量赋值:把数据添加到变量容器中
语法:
变量名 = 数据;
package com.example.chapter2;
public class Demo_1 {
public static void main(String[] args) {
// 声明变量
byte b;
// 给变量赋值
b = 12;
}
}
3、获取变量值
通过变量名获取即可(变量名 == 数据)
package com.example.chapter2;
public class Demo_1 {
public static void main(String[] args) {
// 声明变量
byte b;
// 给变量赋值
b = 12;
// 获取变量值
System.out.println(b);
}
}
五、数据类型
数据类型分为两类:基本数据类型 、引用数据类型
1、基本数据类型
基本数据类型也称之为原始类型
1.1、整数类型
类型 | 类型名称 | 字节 | 范围 | 说明 |
字节型 | byte | 1字节 == 8bit | -128 ~ 127 | 在二进制中最小的八位:10000000 == -128 在二进制中最大的八位:01111111 == 127 在二进制中正负区分: 1、如果最高位是0,表示该数据是正数 2、如果最高位是1,表示该数据是负数 |
短整型 | short | 2字节 | ||
整型 | int | 4字节 | ||
长整型 | long | 8字节 | 特殊: 如果给long类型的变量赋值,数据后面没有L或l,那么jvm虚拟机会把该变量看成是int类型 在整数类型中默认的是int类型 |
注意事项:
1、必须是数字
2、必须是整数
package com.example.chapter2;
public class Demo_2 {
public static void main(String[] args) {
// 字节型
byte b;
b = 12;
System.out.println(b);
// 短整型
short s;
s = 13;
System.out.println(s);
// 整型
int i;
i = 14;
System.out.println(i);
// 长整型
long lo;
lo = 15L;
System.out.println(lo);
}
}
1.2、浮点类型
类型 | 类型名称 | 字节 | 范围 | 说明 |
单精度 | float | 4字节 | 特殊: 如果给float类型的变量赋小数值,没有在数据后面加上f或F,那么jvm虚拟机会把该数据看成是double类型的数据 因为在浮点类型中默认的是double类型 | |
双精度 | double | 8字节 |
注意事项:
1、必须是数字
2、整数小数都可以
3、获取的数据必定是小数
package com.example.chapter2;
public class Demo_3 {
public static void main(String[] args) {
float fo;
fo = 12;
System.out.println(fo); // 12.0 double类型
fo = 13F;
System.out.println(fo); // 13.0 float类型
double d;
d = 11;
System.out.println(d); // 11.0
}
}
1.3、字符类型
类型 | 类型名称 | 字节 | 范围 | 说明 |
字符型 | char | 2字节 | 特殊: 如果给char类型的变量赋整数值,并且没有使用单引号,那么返回的结果是一个字符 因为jvm虚拟机会拿着该数据到ACSII码表中找十进制对应的字符 |
注意事项:
1、可以存储任意类型
2、必须是单个
3、必须使用单引号
package com.example.chapter2;
public class Demo_4 {
public static void main(String[] args) {
char c;
c = 'A';
System.out.println(c); // A
c = '3';
System.out.println(c); // 3
c = '刘';
System.out.println(c); // 刘
c = 65;
System.out.println(c); // A
}
}
1.4、布尔类型
类型 | 类型名称 | 字节 | 范围 | 说明 |
布尔型 | boolean | 1字节 |
注意事项:
1、该类型的数据不能随意赋值
2、该类型的数据只有两个:true、false
package com.example.chapter2;
public class Demo_5 {
public static void main(String[] args) {
boolean b;
b = true;
System.out.println(b); // true
b = false;
System.out.println(b); // false
}
}
2、引用类型
引用数据类型:数组、对象、接口等等。
六、变量简写
变量简写提高了开发效率以及运行效率
1、方式一
语法:
数据类型 变量名 = 数据;
总结:声明变量时直接初始化值
2、方式二
语法:
数据类型 变量名1,变量名2,变量名3......
总结:声明变量时可以同时声明多个相同类型的变量
3、方式三
语法:
数据类型 变量名1 = 数据,变量名2,变量名3 = 数据......
总结:声明变量时可以同时声明多个相同类型的变量,并且初始化值
七、类型转换
1、自动类型转换
自动类型转换也称之为隐式转换。
含义:小容器变成大容器【数据不变,容器大小改变】
比较数据类型大小:
- 如果是同一个数据类型,那么根据字节来比较
- 如果是不同数据类型,那么根据计算机给定的方式来比较
同一个数据类型大小:
- 整数类型:byte<<<short<<<int<<<long
- 浮点类型:float<<<double
- 字符类型:char
不同数据类型大小:
整数类型<<<浮点类型
特殊类型:
- Char类型和byte、short是同一级别,区分不出大小
- Char类型不能和byte相互转换
- Char类型不能和short相互转换
注意:byte和short可以相互转换
基本数据类型从小到大排序:
(Byte<<<short<<<char)<<<int<<<long<<<float<<<double
语法:
数据类型 变量名1=数据; // 小容器
数据类型 变量名2=变量名1; // 大容器
2、强制类型转换
强制类型转换也称之为显示转换
含义:大容器变成小容器【可能会引发数据丢失问题】
语法:
数据类型 变量名1=数据; // 大容器
数据类型 变量名2=(数据类型)变量名1; // 小容器
2.1、一次转换
如果大容器强制转换到小容器,数据没有超出小容器范围,那么正常转换
package com.example.chapter2;
public class Demo_6 {
public static void main(String[] args) {
// int类型
int i = 12;
// 转换成byte类型
byte b = (byte)i;// int类型的12没有超出byte范围,那么数据不会丢失
System.out.println(b);// 12
}
}
2.2、二次转换
如果大容器强制转换到小容器,数据超出了小容器范围,那么需要再一次进行转换
package com.example.chapter2;
public class Demo_7 {
public static void main(String[] args) {
int i = 6666;
byte b = (byte)i;
System.out.println(b);// 10
// i十进制转换二进制:00000000 00000000 00011010 00001010
// byte是1字节,1字节等于8bit,以上四个8bit,那么会从最低位开始取值,结果为:00001010
// 00001010二进制转换十进制为10
}
}
以上当int转换二进制后,byte取得二进制转换十进制在范围之内,如果不在范围之内,那么需要再一次转换
package com.example.chapter2;
public class Demo_8 {
public static void main(String[] args) {
int i = 666;
byte b = (byte)i;
System.out.println(b);// -102
// i十进制转换二进制:00000000 00000000 00000010 10011010
// byte取得最低为八位为:10011010
// 转换后:154 超出范围,那么需要再一次转换
// byte范围:-128~127
// 如果超出127,那么从-128开始计算,超出一位:-128 超出两位:-127 ....
}
}
注意事项:
1、强制类型转换只会强制后面的一个,而不是所有
2、一个整数与byte、short相互运算时,在运算之前数据的数据类型会自动提升为int类型
八、运算符
含义:数据之间相互运算时使用的符号
1、算术运算符
符号 | 说明 |
---|---|
+ | 相加 |
- | 相减 |
* | 相乘 |
/ | 相除 |
+ | 正数 |
- | 负数 |
+ | 拼接 注意: 1、如果前面没有遇到字符串,那么后面的数据相运算 2、如果前面遇到了字符串,那么后面的数据全部相拼接 3、执行顺序从左往右 |
% | 取模 |
++在前 | 自增1 先自增,后赋值 别人获取的是新值 |
++在后 | 自增1 先赋值,后自增 别人获取的是旧值 |
- -在前 | 自减1 |
- -在后 | 自减1 |
2、赋值运算符
符号 | 描述 |
---|---|
= | 等号右边赋值给等号左边 |
+= | 等号右边运算完(相加)赋值给等号左边 |
-= | 等号右边运算完(相减)赋值给等号左边 |
*= | 等号右边运算完(相乘)赋值给等号左边 |
/= | 等号右边运算完(相除)赋值给等号左边 |
%= | 等号右边运算完(取模)赋值给等号左边 |
注意:
一个变量与另一个数据相加的结果重新赋值给该变量,称之为叠加
3、比较运算符
符号 | 描述 |
---|---|
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
== | 双等于 |
注意:
返回的结果类型只有一种:布尔类型
4、逻辑运算符
符号 | 描述 |
---|---|
& | 与 两个条件必须都成立,结果才成立 |
&& | 短路与 两个条件必须都成立,结果才成立 |
^ | 异或 相同为假,相异为真 |
! | 非 条件结果的反义词 |
5、条件运算符
名称:条件运算符、三木运算符、三目运算符、三元运算符
语法:
条件表达式?数据1:数据2;
条件表达式返回的结果类型:true、false
数据1:当条件表达式为true时,返回数据1给调用者
数据2:当条件表达式为false时,返回数据2给调用者
注意:
返回的数据要么直接使用要么保存
6、位运算符
符号 | 说明 |
---|---|
& | 二进制位进行&运算,只有1&1时结果是1,否则是0 |
^ | 相同二进制位进行运算,结果是0;11 = 0,0^0 = 0 不相同二进制位运算结果是1。10 = 1,0^1 = 1 |
~ | 正数取反,各二进制码按补码各位取反 反数取反,各二进制码按补码各位取反 |
7、移位运算符
符号 | 说明 |
---|---|
<< | 空位补0,被移除的高位丢弃,空缺位补0 |
>> | 被移位的二进制最高位是0,右移后,空缺位补0 最高位是1,空缺位补1 |
>>> | 被移位二进制最高位无论是0或者是1,空缺位都用0补。 |