Java数据类型
牢记Java是一种 强类型 的语言,每种数据都定义了一种具体的数据类型,并且在内存中分配了不同大小空间。
数据类型分为基本数据类型以及引用数据类型,这里暂时只提及基本数据类型。
数据类型
(由小到大)
整数类型 byte、short、int、long
浮点类型 float、double
字符型 char
布尔型 boolean
数据类型的大小范围:
类型 占用存储空间 表数范围
byte 1字节 -128~127 (2的八次幂)
short 2字节 -215~215-1 (2的十六次幂,但从零开始)
int 4字节 -231~231-1
long 8字节 -263~263-1
float 4字节 -3.403E38~3.403E38
double 8字节 -1.798E308~1.798E308
数据类型作用域:
变量定义在哪一级大括号中,哪个大括号的范围就是这个变量的作用域。相同的作用域中不能定义两个同名变量。
数据类型初始化值:
没有初始化值不能直接使用
Java中的运算符
运算符包括算术运算符、赋值运算符、比较运算符、逻辑运算符、位运算符、三目运算符
关系运算符
== 相等于 4==3 false
!= 不等于 4!=3 true
< 小于 4<3 false
大于 4>3 true
<= 小于等于 4<=3 false
= 大于等于 4>=3 false
关系运算符的计算结果是一个Boolean值,true或false
int a = 3;
int b = 4;
int c = 3;
System.out.println(a == c);//true
System.out.println( a = b );//4
boolean flag = a > b;
System.out.println(flag);//false
System.out.println(a >= b);//true
System.out.println(a < b);//false
System.out.println(a <= b);//true
System.out.println(a != b);//false
逻辑运算符
运算符 运算 范例 结果
& AND(与) false&true false
| OR(或) false|true true
^ XOR(异或) true^false true
! Not(非) !true false
&& AND(短路) false&true false
|| OR(短路) false||true true
特点:一般用于连接Boolean类型的表达式或值
结论:
& 逻辑与:有false则false
| 逻辑或:有true则true
^ 逻辑异或 相同为false,不同为true
!非:就是非
//&逻辑与运算
System.out.println((a>b) & (a>c)); //false
System.out.println((a>b) & (a<c)); //false
System.out.println((a<b) & (a>c)); //false
System.out.println((a<b) & (a<c)); //true
//|逻辑或运算
System.out.println((a>b) | (a>c)); //false
System.out.println((a>b) | (a<c)); //true
System.out.println((a<b) | (a>c)); //true
System.out.println((a<b) | (a<c)); //true
//^逻辑异或运算
System.out.println((a>b) ^ (a>c)); // false
System.out.println((a>b) ^ (a<c)); // true
System.out.println((a<b) ^ (a>c)); // true
System.out.println((a<b) ^ (a<c)); // false
//!逻辑非运算
System.out.println(!((a>b) ^ (a>c))); // true
System.out.println(!((a>b) ^ (a<c))); // false
&&,||
&&和&的区别,||和|的区别
A:最终结果是一样的
B:&&具有短路效果,左边为false时,右边不执行
||具有短路效果,左边为true时,右边不执行
int a = 3;
int b = 4;
int c = 5;
//&&双与
System.out.println((a > b) && (a > c)); //false && false = false
System.out.println((a > b) && (a < c)); //false && true = false
System.out.println((a < b) && (a > c)); //true && false = false
System.out.println((a < b) && (a < c)); //true && true = true
//&逻辑与运算
System.out.println((a>b) & (a>c)); //false
System.out.println((a>b) & (a<c)); //false
System.out.println((a<b) & (a>c)); //false
System.out.println((a<b) & (a<c)); //true
int x = 3;
int y = 4;
boolean b1 = ((x++ == 3) & (y++ == 4));
System.out.println("x:"+x);//4
System.out.println("y:"+y);//5
System.out.println("b1:"+b1); //true
boolean b2 = ((x++ == 3) && (y++ == 4));
System.out.println("x:"+x);//4
System.out.println("y:"+y);//5
System.out.println("b2:"+b2);//true
boolean b2 = ((x++ == 6) && (y++ == 4));
System.out.println("x:"+x);//4
System.out.println("y:"+y);//4
System.out.println("b2:"+b2);//false
boolean b1 = ((x++ == 6) & (y++ == 4));
System.out.println("x:" + x);//4
System.out.println("y:" + y);//5
System.out.println("b1:" + b1); //false
boolean b1 = ((x++ == 6) | (y++ == 4));
System.out.println("x:" + x);//4
System.out.println("y:" + y);//5
System.out.println("b1:" + b1); //true
boolean b1 = ((x++ == 3) || (y++ == 4));
System.out.println("x:" + x);//4
System.out.println("y:" + y);//4
System.out.println("b1:" + b1); //true
位运算符
<< 左移 3<<2 = 12 -->322=12
右移 3>>1 = 1 -->3/2=1
无符号右移 3>>>1 = 1 --> 3/2=1
& 与运算 6&3 = 2
| 或运算 6|3 = 7
^ 异或运算 6^3 = 5
~ 反码 ~6 = -7
补充一个位运算符的小知识点:
两个数值AB异或,其中A异或两次B,其值依旧是A
public class WeiYunSuan {
public static void main(String[] args) {
int a = 3;
int b = 4;
System.out.println(a^b^b);
System.out.println(a^b^a);
}
}
感谢阅读,我是啊帅和和,一位大数据专业即将大四学生,祝你快乐。