变量与运算符
1数据类型
基本数据类型 | 占用几个字节 | 取值范围 | 包装类 |
---|---|---|---|
整形(int) | 4 | -231-231-1 | Integer |
长整形(long) | 8 | -263-263-1 | Long |
双精度浮点型(double) | 8 | Double | |
单精度浮点型(float) | 4 | Float | |
字符类型(char) | 2 | Character | |
字节类型(byte) | 1 | Byte | |
短整型(short) | 2 | -32768-32767 | Short |
布尔类型(boolean) | 1 | true/false | Boolean |
2.变量的定义
变量的理解:
1.变量的本质就是一块内存空间,空间的大小由数据类型决定
2.要想找到变量对应的内存空间,必须给该内存空间起个名字,叫做变量名称
3.变量的内存空间中没有数据是不能使用的,向变量内存空间中存储数据的过程,叫做赋值或者初始化
变量的定义格式:
格式一:
数据类型 变量名称;
变量名称 = 数据值;
int a ;
a = 10;
格式二:
数据类型 变量名称 = 数据值
int a = 10;
格式三:
数据类型 变量名称1,变量名称2… ;
变量名称1 = 数据值1;
变量名称2 = 数据值2;
int a,b;
a = 10;
b = 20;
格式四:
数据类型 变量名称1= 数据值1,变量名称2= 数据值2, … ;
int a = 10,b = 20;
3.变量的注意事项
1.变量名称:在同一个大括号范围内,变量的名字不可以相同。
2.变量赋值:定义的变量,不赋值不能使用。
3.定义long类型的变量时,需要在整数的后面加L(大小写均可,建议大写)。因为整数默认是int类型,整数太大可能超出int范围。
4.定义float类型的变量时,需要在小数的后面加F(大小写均可,建议大写)。因为浮点数的默认类型是double,double的取值范围是大于float的,类型不兼容。
public class Demo01 {
public static void main(String[] args) {
//定义int变量a,初始值10
int a = 10;
System.out.println(a);
//错误,同一个{}中不能重名
//int a = 20;
//System.out.println(a);
int b;
//错误: 在使用b之前,必须保证b中有值
//System.out.println(b);
//错误: 整数默认int类型,6000000000(60亿)已经远远超出了int的范围
//long num = 6000000000;
long num = 6000000000L;//6000000000L: long类型
System.out.println(num);
//错误:小数默认double类型(8个字节),左侧变量float(4个字节)
//float f = 6.6;
float f = 6.6F;
System.out.println(f);
}
}
4.字符串类型变量(String)
代码示例
String str = "abc";
注意事项:
1.java使用 双引号 + 若干字符 的方式表示字符串字面值。
2.和上面的类型不同, String 不是基本类型, 而是引用类型
3.字符串中的一些特定的不太方便直接表示的字符需要进行转义.
5.常量
int a = 20; //字面值常量,表示十进制
int b = 010;//字面值常量,表示八进制
int c = 0x10;//字面值常量,表示十六进制
long d = 10L;//字面值常量,
double e = 1.0;//字面值常量
double f = 1.5e2;//字面值常量,科学计算方法表示
float g = 1.0F;//字面值常量
boolean h = true//字面值常量
char ch = 'a';//字面值常量
String str = "abc";//字面值常量
final修饰的常量不能再程序运行过程中被修改
6.类型转换
1.自动类型转换
Java程序中要求参与计算的数据,必须要保证数据类型的一致性,如果数据类型不一致将发生类型的转换。
自动类型转换:
概念: 取值范围小的数据或者变量可以直接放入取值范围大的变量中(小萝卜可以直接放入大坑中)
特点:
1.是自动完成的,不需要代码的特殊处理
2.byte/short/char类型的数据,只要参加运算,会自动转换为int类型
3.byte、short、char-->int-->long-->float-->double
2.强制类型转换
概念: 取值范围大的数据或者变量,不能直接赋值给取值范围小的变量(大萝卜不能直接放入小坑中)
必须进行强制类型转换
格式:
转后类型 变量名称 = (转后类型)转前数据/变量;
7.运算符
1.算数运算符
基本四则运算:+-*/
0不能作为除数
System.out.println(10/0);
//ArithmeticException: / by zero
%表示取余
int a = 21;
System.out.println(a%2);//1
增量赋值运算
+=,-=,*=,/=,%=
自增/自减运算++/--
int c = 10;
int b = ++c;
System.out.println(b);
int d = a++;
System.out.println(d);
2.关系运算符
== != < > <= >=
int a = 40;
int b = 50;
System.out.println(a == b);//false
System.out.println(a != b);//true
System.out.println(a <= b);//true
System.out.println(a >= b);//false
3.逻辑运算符
逻辑与 &&
规则: 两个操作数都为 true, 结果为 true, 否则结果为 false.
int a = 1;
int b = 2;
int c = 3;
System.out.println(a < b && b < c);
逻辑或 ||
规则: 两个操作数都为 false, 结果为 false,否则为true
int a = 10;
int b = 20;
int c = 30;
System.out.println(a < b || b < c);
逻辑非 !
规则: 操作数为 true, 结果为 false; 操作数为 false, 结果为 true(这是个单目运算符, 只有一个操作数).
int a = 10;
int b = 20;
System.out.println(a != b);
4.位运算符
& | ~ ^
按位与 &:
如果两个二进制位都是 1, 则结果为 1, 否则结果为 0。
int a = 10;
int b = 20;
System.out.println(a & b);//0
按位或|
如果两个二进制位都是 0, 则结果为 0, 否则结果为 1。
int a = 10;
int b = 20;
System.out.println(a | b);
按位取反~
如果该位为 0 则转为 1, 如果该位为 1 则转为 0
按位异或
如果两个数字的二进制位相同,则结果为0,相异则结果为1。
5.条件运算符
表达式1 ? 表达式2 : 表达式3
当 表达式1 的值为 true 时, 整个表达式的值为 表达式2 的值; 当 表达式1 的值为 false 时, 整个表达式的值为 表达式3 的值.
也是 Java 中唯一的一个 三目运算符, 是条件判断语句的简化写法.
//求两个值得最小值
int a = 50;
int b = 20;
int min = a < b ? a : b;