Java自学第三讲|数据运算
1.数据类型、变量与常量
Java中的数据类型分为两大类:基本数据类型和引用类型。
其中基本数据类型包括:整数类型(byte,short,int,long),浮点类型(float,double),字符型(char),布尔型(boolean)。
引用数据类型包括:类(class),接口(interface),数组
(1) 逻辑型boolean
只允许取值true或false,不可以用整数进行赋值
boolean a = true; //不报错boolean b = 1; //报错
这里可以和C++做一下区别, C++是可以用整数对bool类型的变量进行赋值的。
(2) 字符型
Java字符采用Unicode编码,每个字符占两个字节
public class ZX1{public static void main(String[] args) {
char c1 = 'a';
char c2 = '\u0061';
if(c1 == c2)
System.out.println("Yes");
}
}
结果是Yes,通过\u进行赋值,0061转化为10进制数正好是97(‘a’)。
(3) 整型
Java语言各类型变量所占的字段长度是固定不变的(也体现了跨平台),这和C++是不同的,C++在不同平台上所占字段可能是不同的。
byte 1字节 -27~27-1
short 2字节 -215~215-1
int 4字节 -231~231-1
long 8字节 -263~263-1
表示形式:
十进制整数,如:12,-3等
八进制整数,要求以0开头,如012(相当于十进制数的10)
十六进制整数,要求以0x或0X开头,如0x12(相当于十进制数的18)
二进制整数,要求以0b或0B开头,如0b00001000(相当于十进制数的8)
整型常量默认为int型,声明long型常量可以后加’l’或’L’,Java中没有无符号数。
public class ZX1{public static void main(String[] args) {
int a = 10,b = 012,c = 0x12,d = 0b1000;
System.out.printf("%d %d %d %d",a,b,c,d);
}
}
输出结果为:
(4) 浮点型
Java浮点类型有固定的表数和字段长度
float 4字节 -3.403e38~3.403e38
double 8字节 -1.798e308~1.798e308
Java浮点型常量默认为double型,如果要声明常量为float类型,则需要在数字后加’f’或’F’。
2.运算符与表达式
(1)算术运算符
+,-,*,/,%,++,–
类似于C++,其中+号也可用于字符串连接(和C++中string类型的变量相同)
(2)关系运算符
<,>,>=,<=,==,!=
和C++相同
(3)逻辑运算符
!,&,|,^,&&,||
和C++类似
(4)位运算符
&,|,^,~,>>,<<,>>>
和C++类似,其中多了一个>>>,右移高位补0,区别于>>右移是补原来的符号位
public class ZX1{public static void main(String[] args) {
int a = 0b1100,b = 0b0011;
pt("a & b = ",a & b); //输出ab按位与
pt("a | b = ",a | b); //输出ab按位或
pt("~a = ",~a); //输出a按位取反
pt("a << 2 = ",a << 2); //输出a左移2位
pt("a >> 2 = ",a >> 2); //输出a带符号右移2位
pt("a >>> 2 = ",a >>> 2);//输出a补0右移2位
}
static void pt(String s1,int n) { //自定义的一个输出函数,提高代码复用率
String s2 = Integer.toBinaryString(n);
while(s2.length() < 4)
s2 = "0" + s2;
System.out.println(s1 + " " + s2);
}
}
结果如下:
(5)赋值运算符
=,扩展出:+=,-=,*=,/=
Java自学第三讲部分总结。
内容依赖于北京大学唐大仕老师的mooc。