- java基本类型
- java中最小的存储单位是字节,1字节等于8位
1、数字:
整型(默认值:0)、浮点型(默认值:0.0)
整型:byte、short、int、long
浮点型:float、double
2、整型(默认值:0):
byte 8位
short 16位
int 32位
long 64位
在JAVA中,整型数字运算时默认使用int型运算
3、浮点型(默认值:0.0):
float 32位单精度
double 64位双精度
4、字符型(默认值:null):
char 16位 范围:0-65535
使用Unicode编码集进行编码
4.1、指定源文件使用的字符编码:-encoding
例:
char d = '猿';
System.out.println(d);
结果是乱码
a:java -encoding utf-8 xxx.java
4.2、bin目录下的native2ascii.exe可以将汉字转换成对应的unicode编码
步骤:
1.进入文件所在盘符及文件夹
2.natice2ascii xxx.txt
3.得到对应编码
4.3、例:
char word1 = '\u5927';
char word2 = '\u733f';
char word3 = '\u8f6f';
char word4 = '\u4ef6';
System.out.println("" + word1 + word2 + word3 + word4);
A:word1前面加引号是为了把语句转化为字符串输出
5、布尔型
boolean表示逻辑上的“真”或者“假”
boolean类型的值只能使用true或者false
boolean类型不可和其他基础类型相互转换
- 向上转型、向下转型
byte short int long float double
有小到大:向上转型(安全)
由大到小:向下转型(强制、需在前面添加对应的类型)
例:
int a = 1;
int b = 2;
short c = (short)(a+b)
- 溢出的问题
例:
int max_int = 2147483647;
int a_int = 1;
int b_int = 2;
long along = max_int + a_int + (long)bint;
输出结果为负值,即溢出
(因前两位相加的值已溢出,故无法提升长度)
a:把(long)提前,如下:
long along = (long)max_int + a_int + bint;
- 除以零的问题
整数除以0:报异常
浮点数除以零:正负无穷大
- 运算问题
- 控制运算的优先级使用()来控制执行顺序
1、三目运算:
运算符:?:
例:
boolean aBool = true;
String result = 1 > 2 ? "it is true" : "it is false";
(若结果为true则输出?后面的语句;若为false则输出:后面的语句)
?后面的值的类型要与前面定义的类型一致
2、位运算:
例:左移<< 右移:>>
int a = 10; int a = 10;
int b = a << 2; int b = a >> 2;
System.out.println(b); System.out.println(b);
输出b为40即:b = a*2*2(a乘2的2次方) 输出b为2:即b = a/2*2(a除以2的2次方)
若b = a<<3 即:b = a*2*3(a乘2的3次方)
- 异或
两个数异或,相同输出0,不同输出1。
例1:
1^1;//输出0;
A:
1:0001;
1:0001;
得:0000 = 0;
例2:
1^2;//输出3
A:
1:0001;
2:0010;
得:0011 = 3;
- 按位非
- 二进制的最高位是符号位(若一个数最高位为1,则这个数为负数)
- 取反时除符号位外取反
步骤:原码->取反->正数-1、负数+1->补码->按位非值
即数值加一取反;如~5;5+1取反 = -6;~-12;-12+1取反11
例1:
~10
A:(正数减1)
原码:0000......0000 1010 =10
反码:0111......1111 0101
-1: 0111......1111 0100
补码:1000......0000 1011 = -11
例2:
~-12
A:(负数加1)
原码:1000......0000 1100 = -12
反码:1111......1111 0011
+1 :1111......1111 0100
补码:0000......0000 1011 = 11