一、变量:在程序执行过程中,其值可以改变的量叫变量
定义变量的格式:
1.数据类型 变量名 = 初始化值;
2.数据类型 变量名;
变量名 = 初始化值;
定义变量要注意变量的作用域,变量在同一个大括号内有效;同一作用域内不可出现两个同名变量;没有初始值不可直接使用;强制定义一行定义一个变量。
二、数据类型:
基本数据类型:
整数类型:
byte,空间1个字节,可表示范围为-2^7 ~ 2^7-1
short,空间2个字节,可表示范围为-2^15 ~ 2^15-1
int,空间4个字节,可表示范围为-2^31 ~ 2^31-1
long,空间8个字节,可表示范围为-2^63 ~ 2^63-1
浮点类型:
float,空间4个字节,可表示范围为:-3.403E38 ~ 3.403E38
double,空间8个字节,可表示范围为:-1.798E308 ~ 1.798E308
字符型:
char,空间2个字节
布尔型:
boolean,空间1个字节
public class Demo{
public static void main(String[] args){
// 定义一个int类型的变量
int i=10;
// 定义一个byte类型的变量
byte j=11;
//定义一个short类型的变量
short a=12;
// 定义一个long类型的数据,末尾加上L
long l=1000000000L;
// 定义一个float类型的数据,末尾加上F
float f=100000000.0F;
//定义一个char类型的数据
char c='a';
//定义一个Boolean类型的数据
boolean b=true;
}
}
注意事项:1、整数默认是int类型;
2、如果要定义一个long类型的数据,需要在后面加上L或者l,推荐L(L容易辨识);
3、小数默认是double类型;
4、如果要定义一个float类型的数据,需要在末尾加上F或者f,推荐F(与前面一致)
5、上述代码中long类型数据的定义若要将long改为int,则会报错,原因是因为该初始化值超出了int类型的可表示范围,因此只可以用表示更大范围的long类型去定义。
6、在定义char类型的数据时不可定义为char c='abc';因为abc表示的是字符串,而char类型定义的是字符型数据。
字符型说明:
public class Demo{
public static void main(String[] args){
System.out.println('a');
System.out.println('a'+1);
}
}
上述代码第一行输出为:a,第二行输出为:98
解释:在字符参与运算的时候,会将字符转换成对应的ASCII码表中的值参与运算。
ASCII码表三个常记得字符对应值:’0‘:48 ’A‘:65 ’a':97
三、自动类型转换与强制类型转换:
自动类型转换:byte,short,char在参与运算时会首先转换为int类型;表示由范围大的数据类型接收范围小的数据类型,会自动转换,不会报错。
强制类型转换:格式为:目标数据类型 目标变量名 = (目标数据类型)待转换的变量/数值;表示由范围小的数据类型接收范围大的数据类型,直接接收会报错,无法接收,因此需要强制类型转换,但不建议大量使用强制类型转换,可能会损失数据精度。
byte b1 = 3,b2 = 4,b;
b = b1 + b2;//报错
b = (byte)(b1 + b2);
b = 3+4;
解释:b1和b2在定义时是byte类型,做加法运算时首先由byte类型转换成int型,做加法运算后的值为int类型,而所被赋值的b在定义时是byte类型,属于小类型接收大类型,因此无法直接接收,报错。而b=3+4;能够输出7是由于常量在相加时会先进行计算,然后根据计算结果判断是否在接收的数据类型范围内,在,则赋值输出,不在,则报错;而下述代码同理:
byte b = 3;
int a = 4;
byte b = a;
//直接转换会报错,因此使用下面的强制类型转换
byte b = (byte)a;
四、运算符:
算术运算符:+,-,*,/,%,++,--;
赋值运算符:=,+=,-=,*=,/=,%=;
比较运算符:==,>,<,>=,<=,!=;
逻辑运算符:&,|,^,!,&&,||;
位运算符:&,|,^,~,<<,>>,>>>;
三目运算符:(关系表达式)?表达式1:表达式2;
插入:在使用IDEA时的快捷键:
ctrl+alt+L:代码格式化
ctrl+/:快速注释/取消快速注释
\t:等同于Tab键,一般为四个空格
ctrl+alt+down:将光标选至所要复制的语句末端,按住ctrl+alt,按下down即可复制语句并在下一行自动粘贴。