Java基础笔记

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

byteshortchar型移位时都会提升为int

7/2 带符号右移(>>

右侧低位丢弃,左侧补原符号位,原数为正,则一直为正,原数为负,则一直未负。右移一位相当于除以2

负数右移:求其绝对值的二进制,提升为整型,整体取反加1(包含符号位),然后右移,最高位补符号位,移位完成后符号位不变,

剩下的31位再减1取反求得移位后的原码

7/3 无符号右移(>>>)

右侧低位丢弃,左侧补0

7/4 取反操作不带符号位(~) 

7/5 异或(^

相同取0,不同取1

7/6 按位与(&

同为11,其他取0

7/7 按位或(|

同为00,其他取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);

你可能感兴趣的:(java)