1、在一个Java文件中,有多少个类,编译后就会生成多少个.class文件。一个Java文件中最多只能有一个public类。
2、生成文档注释:javadoc -d mydoc [-author][-version][…] java文件路径\Java文件
3、基本数据类型占用的字节数
Byte 1字节 | Short 2字节 | Int 4字节 | Long 8字节 | Char 2字节 | Float 4字节 | Double 8字节 | Boolean 4字节,只有最后一位是有效位 |
3/1 float型变量初始化时,需要在初始值后面加 f ,否则会默认为double型
3/2 各数据类型所能表示的范围
Byte | -128——127 |
short | -32768——32767 |
int | -2^31——231-1 |
long | -2^63——2^63-1 |
float | 3.4e^-45——1.4e^38 |
double | 4.9e^-324——1.8e^308 |
4、数据类型的相互转换(char byte short int long float double):
4/1 自动类型转换:容量小的数据类型与容量大的数据类型计算时,容量小的自动转换成容量大的数据类 型。
4/1/1 有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的那种数据类型,然后再进行计算。
4/1/2 byte,short,char之间不会相互转换,他们三者在计算时首先转换为int类型。
4/1/3 当把任何基本类型的值和字符串值进行连接运算时(+),基本类型的值将自动转化为字符串类型。
4/2 强制类型转换:容量大的数据类型转换成容量小的数据类型要使用强制类型转换符。
4/3 基本数据类型不能直接赋给字符串类型。
4/4 字符串不能直接转换为基本类型,但通过基本类型对应的包装类则可以实现把字符串转换成基本类型。
如: String a = “43”; int i =Integer.parseInt(a);
4/5 boolean类型不可以转换为其它的数据类型
4/6 赋值中的类型转换
4/6/1 byte a = 10;
10是一个整型数据(int),在赋值过程中,将int型的10隐式转换成byte类型
10 = 0000 0000 0000 0000 0000 0000 0000 1010 b,赋值前会自动去除高24位,留下0000 1010
4/6/2 short a = 10;
int b = 5;
short c = a + b;//编译错误
short d = a + 10;//编译错误
5、除以0运算和对0 取模运算
整数除以0 | 编译通过,运行异常 ArithmeticException |
整数模0 | 编译通过,运行异常 ArithmeticException |
浮点数除以0 | 无穷 Infinite |
浮点数模0 | NaN |
6、除以0.0和对0.0取模运算
整数除以0.0 | Infinite 无穷 |
浮点数除以0.0 | Infinite |
浮点数模0.0 | NaN |
整数模0.0 | NaN |
取模运算的结果的符号取决于被模数的符号,被模数为正则结果为正,被模数为负则结果为负
7、移位操作
7/1 左移操作(<<)
左侧高位丢弃,右侧补0,在没有溢出的情况下,左移一位相当于原数乘以2 左移33位,相当于左移1位
int型数据左移实际位数 = 左移位数 % 32 ===========> 0000 0000 0000 0000 0000 0000 0000 1010 -----------> 0000 0000 0000 0000 0000 0000 0001 0100
byte、short,char型移位时都会提升为int型
7/2 带符号右移(>>)
右侧低位丢弃,左侧补原符号位,原数为正,则一直为正,原数为负,则一直未负。右移一位相当于除以2
负数右移:求其绝对值的二进制,提升为整型,整体取反加1(包含符号位),然后右移,最高位补符号位,移位完成后符号位不变,
剩下的31位再减1取反求得移位后的原码
7/3 无符号右移(>>>)
右侧低位丢弃,左侧补0
7/4 取反操作不带符号位(~)
7/5 异或(^)
相同取0,不同取1
7/6 按位与(&)
同为1取1,其他取0
7/7 按位或(|)
同为0取0,其他取1
7/8 移位操作不会改变原数的大小,
而是会生成一个新的整型值
8、交换两个数的值
inta = 10;
intb = 20;
//交换两个变量的值 方式一
inttemp = a;
a= b;
b= temp;
System.out.println("a= " + a + "b = " + b);
//交换两个变量的值 方式二,将两个变量三次异或 =========>
intx = 10;
inty = 20;
x= x ^ y;
y= x ^ y;
x= x ^ y;
System.out.println("x= " + x + "y = " + y);
//求和交换 方式三
intm = 10;
intn = 20;
m= m + n;
n= m - n;
m= m - n;
System.out.println("m= " + m + "n = " + n);