
变量指的是程序运行是可变的量,其需要开辟内存空间用于储存一些数据
而类型是对变量的种类进行划分,不同的类型有不同的属性
byte 变量名=初始值
byte类型表示一个整形不过只占1个字节;
其数据范围为[-128,127]
public static void main(String[] args) {
System.out.println(Byte.MAX_VALUE);
System.out.println(Byte.MIN_VALUE);
}
short
***short 变量名 = 初始值 ***
short表示变量的类型是一个整型
short的取值范围[-32768,32767]
public static void main(String[] args) {
System.out.println(Short.MIN_VALUE);
System.out.println(Short.MAX_VALUE);
}
int
语法:
***int 变量名 = 初始值 ***
int 表示变量的类型是一个整型
Java中,int类型占4个字节(每个字节占8个比特位)
其数据范围是 -2^31 -> 2^31-1 , 也就大概是 -21亿 到 +21亿
public static void main(String[] args) {
System.out.println(Integer.MAX_VALUE);
System.out.println(Integer.MIN_VALUE);
}
如果运算结果超过其数据范围,就会出现溢出情况
public static void main(String[] args) {
System.out.println(Integer.MAX_VALUE+1);
System.out.println(Integer.MIN_VALUE-1);
}
21亿这样的数字对于当前的大数据时代来说, 是很容易超出的. 针对这种情况, 我们就需要使用更大范围的数据类型来表示,因此 Java 中提供了 long 类型.
语法:
***long 变量名 = 初始值 ***
long 占8个字节其数据范围 [-2^63 ,2^63-1]
public static void main(String[] args) {
long a=10l;
System.out.println(a);
}
public static void main(String[] args) {
System.out.println(Long.MAX_VALUE);
System.out.println(Long.MIN_VALUE);
}
注意:
语法:
double 变量名 = 初始值
public static void main(String[] args) {
double num = 1.0;
System.out.println(num);
}
注意:
在 Java 中, int 除以 int 的值仍然是 int(会直接舍弃小数部分).
public static void main(String[] args) {
int a = 1;
int b = 2;
System.out.println(a / b);
}
Java 中的 double 虽然也是 8 个字节, 但是浮点数的内存布局和整数差别很大, 不能单纯的用 2 ^ n 的形式表示数据范
围.
Java 的 double 类型的内存布局遵守 IEEE 754 标准(和C语言一样), 尝试使用有限的内存空间表示可能无限的小数, 势
必会存在一定的精度误差.
public static void main(String[] args) {
double num = 1.1;
System.out.println(num * num);
}
float
语法:
float 变量名 = 初始值
public static void main(String[] args) {
float num = 1.0F;
System.out.println(num);
}
float 类型在 Java 中占四个字节, 同样遵守 IEEE 754 标准. 由于表示的数据精度范围较小, 一般在工程上用到浮点数都
优先考虑 double, 不太推荐使用 float.
char 变量名 = 初始值
public static void main(String[] args){
char ch='呵';
System.out.println(ch);
}
注意:
boolean 变量名 = 初始值
public static void main(String[] args) {
boolean bool=false;
System.out.println(bool);
}
注意:
*** 如果两个二进制位都是 0, 则结果为 0, 否则结果为 1***
public static void main(String[] args) {
int a=1;
int b=2;
System.out.println(a|b);
}
运算符:&
如果两个二进制位都是 1, 则结果为 1, 否则结果为 0.
public static void main(String[] args) {
int a=1;
int b=2;
System.out.println(a&b);
}
运算符:^
*** 如果两个数字的二进制位相同, 则结果为 0, 相异则结果为 1.***
public static void main(String[] args) {
int a=1;
int b=2;
System.out.println(a^b);
}
运算符:~
如果该位为 0 则转为 1, 如果该位为 1 则转为 0
public static void main(String[] args) {
int a=1;
int b=~a;
System.out.println(b);
}
运算符:>>
最右侧位不要, 最左侧补符号位(正数补0, 负数补1)
public static void main(String[] args) {
int a=8;
System.out.println(a>>1);//向右位移1个
}
运算符:<<
最左侧位不要了, 最右侧补 0
public static void main(String[] args) {
int a=8;
System.out.println(a<<1);
}
运算符:>>>
最右侧位不要了, 最左侧补 0(无论他是否为负数)
public static void main(String[] args) {
int a=8;
System.out.println(a>>>1);
int b=-1;
System.out.println(b >>> 1);
}