一共有2种数据类型,基本数据类型和引用数据类型
基本数据类型
4类8种
1.整型
byte: 字节型 -128 ~ 127 1个字节=8位
short: 短整型 -2^15 ~ 2^15-1 2个字节=16位 2万多
int: 整型 -2^31 ~ 2^31-1 4个字节=32位 4亿多
long: 长整型 -2^63 ~ 2^63-1 8个字节=64位
long var = 20000000L; //需要在末尾有一个L或者l
2.浮点型
float: 单精度浮点型 4个字节=32位 小数 比long大
float var = 10.2F; //需要在末尾有一个F或者f
double: 双精度浮点型 8个字节=64位 小数 同上
3.字符型
char: 字符型 2个字节=16位
char var = 'a'; //字符型需要加单引号
4.布尔型
boolean: true,false 1个字节=8位
变量
定义变量,为了后期维护,重复利用
减少使用自变量
标识符,变量名的命名规则,小驼峰 checkDay stuInfo
变量值通过=赋值,把有右边的值通过=赋值给左面的变量
定义变量要明确数据类型
Java种的除法/,如果是两个整数相除,得到的一定是整数
整数和整数做运算,得到的一定是整数
Java种的 '+ - * /',数据类型严格
如果在程序中看见了一个整数的字面量,没有任何数据类型声明的话,它默认是int,小数->double
精度
整型:4种整数类型,精度是和位数挂钩,位数越大,精度越高
浮点型:double的精度比float要高
浮点型 > 整型
低精度和高精度的做计算,得到的一定是高精度数据类型的结果为什么int类型的数据给不了byte
大给小,有一种可能是 小的装不下,所以大不能给小
基本数据类型的转换
1.自动类型转换(自动类型提升)低精度->高精度
2.强制类型转换 高精度->低精度 如果平白无故的想把低精度转换成高精度,也需要强制转换
运算符
赋值运算符
+= -= *= /= %=
从计算结果来看,a+=1 -> a=a+1
赋值运算符可以进行数据类型的转换,包括a++也可以
比较运算符
大于> 小于< 大于等于>= 小于等于<= 等于== 不等于!=
没有===
逻辑运算符
与或非 异或
短路与&& 单与&双与:当发现条件中,只要有一个false,则停止判断。(效率高)
单与:无论有多少个false,所有的条件都要判断。
短路或|| 单或|:
同双与和单与
与:只有当所有条件都为true,整体结果为true。如果有一个false,整体结果为false。
或:只有当所有条件都为false,整体结果为false。如果有一个条件为true,整体结果都为true。
非:取反。
异或:有假有真即为真,全真全假即为假。
位运算符
int a = 10;
// 10的二进制 00001010
int b = 20;
// 20的二进制 00010100
System.out.println(a & b);
System.out.println(a | b);
System.out.println(a ^ b);
int x = 2;
// 左移2位
System.out.println(x << 2); // 结果 12
// 右移3位
System.out.println(x >> 3); // 结果 0
// >>> 无符号右移
// 将运算符左边的对象向右移动到指定的位数
System.out.println(x >>> 1); // 结果 1
三目运算符
public static void main(String[] args) {
int a = 10;
int b = 20;
// 条件表达式 ? 表达式1 : 表达式2
// Java 里的三元运算符,要求2个表达式的运行结果
// 的数据类型是相同的 或是可以自动转换成相同数据类型的
System.out.println(a > b ? a : b);
}
char 的特殊性
public static void main(String[] args) {
char a = 'a';
int i=a;
// 映射表 ASCII码
// 字符型 abcdefg 每一个字符在计算机都是以ASCII码的形式保存的
// char 类型是16位, short是一样的,可以自动转换成int,long,float,double
// 当char自动转换成数值类型,会对应着ASCII码去转换
// 把整数类型转换成char类型,会对应着ASCII码去转换
// 由于char类型右这样的特殊性,开发中尽量不使用char
System.out.println(a);
System.out.println(i);
// +号右连接符的功能
System.out.println("你"+"好");
}
一些关于变量定义的代码
public static void main(String[] args) {
String str1 = "善学如春起之苗";
String str2 = "不见其增,日有所长";
String str3 = "不见其损,年有所亏";
String str4 = "加油吧!少年";
System.out.println(str1);
System.out.println(str2);
System.out.println(str3);
System.out.println(str4);
char char1 = 'J';
char char2 = 'A';
char char3 = 'V';
char char4 = 'A';
char char5 = '!';
System.out.println(char1);
System.out.println(char2);
System.out.println(char3);
System.out.println(char4);
System.out.println(char5);
}
public static void main(String[] args) {
int num1 = -2147483648;
int num2 = -100;
int num3 = 0;
int num4 =100;
int num5= 2147483647;
double pointNum1 = -100.0;
double pointNum2= -10.0;
double pointNum3 = 0.0;
double pointNum4 = 10.9;
double pointNum5 =100.9;
System.out.println(num1);
System.out.println(num2);
System.out.println(num3);
System.out.println(num4);
System.out.println(num5);
System.out.println(pointNum1);
System.out.println(pointNum2);
System.out.println(pointNum3);
System.out.println(pointNum4);
System.out.println(pointNum5);
}
public static void main(String[] args) {
boolean testBool = true;
System.out.println(testBool);
testBool = false;
System.out.println(testBool);
}
public static void main(String[] args) {
byte byteMin = -128;
byte byteMax = 127;
short shortMin = -32768;
short shortMax = 32767;
int intMin = -2147483648;
int intMax = 2147483647;
long longMin = -2147483649L;
long longMax = 2147483648L;
System.out.println(byteMin);
System.out.println(byteMax);
System.out.println(shortMin);
System.out.println(shortMax);
System.out.println(intMin);
System.out.println(intMax);
System.out.println(longMin);
System.out.println(longMax);
}
public static void main(String[] args) {
float varFloat1 = -3.14F;
float varFloat2 = 3.14F;
double varDouble1 = -3.4;
double varDouble2 = 3.4;
System.out.println(varFloat1);
System.out.println(varFloat2);
System.out.println(varDouble1);
System.out.println(varDouble2);
}
public static void main(String[] args) {
char varChar1 = '9';
char varChar2 = 'J';
char varChar3 = 'a';
char varChar4 = ' ';
char varChar5 = '@';
boolean varBool1 = true;
boolean varBool2 = false;
System.out.println(varChar1);
System.out.println(varChar2);
System.out.println(varChar3);
System.out.println(varChar4);
System.out.println(varChar5);
System.out.println(varBool1);
System.out.println(varBool2);
}
public static void main(String[] args) {
int a=10;
int b=20;
System.out.println("互换前:");
System.out.println(a);
System.out.println(b);
int temp;
temp =a;
a=b;
b=temp;
System.out.println("互换后:");
System.out.println(a);
System.out.println(b);
}
public static void main(String[] args) {
System.out.println("byte的大小:"+Byte.SIZE+" byte的数据范围:"
+Byte.MIN_VALUE+"~"+Byte.MAX_VALUE);
System.out.println("short的大小:"+Short.SIZE+" short的数据范围:"
+Short.MIN_VALUE+"~"+Short.MAX_VALUE);
System.out.println("int的大小:"+Integer.SIZE+" int的数据范围:"+
Integer.MIN_VALUE+"~"+Integer.MAX_VALUE);
System.out.println("long的大小:"+Long.SIZE+" long的数据范围:"+
Long.MIN_VALUE+"~"+Long.MAX_VALUE);
System.out.println("float的大小:"+Float.SIZE+" float的数据范围:"+
Float.MIN_VALUE+"~"+Float.MAX_VALUE);
System.out.println("double的大小:"+Double.SIZE+" double的数据范围:"+
Double.MIN_VALUE+"~"+Double.MAX_VALUE);
System.out.println("char的大小:"+Character.SIZE+" char的数据范围:"+
Character.MIN_VALUE+"~"+Character.MAX_VALUE);
System.out.println("boolean的大小:"+Byte.SIZE+"boolean的数据范围:"+
Byte.MIN_VALUE+"~"+Byte.MAX_VALUE);
//String不是基本类型
String str1 = "";//生成一个String类型的引用,而且分配内存空间来存放"";
//static String str2; //只生成一个string类型的引用;不分配内存空间,默认为null
String str2 = new String(); //只生成一个string类型的引用;不分配内存空间,默认为null
System.out.println("String字符串的默认值:"+str1+"str的默认长度:"+ str1.length());
System.out.println("String字符串的默认值:"+str2);
}