Java基础(一)
八大基本数据类型:
Byte、Short、Int、Long、Float、Double、Char、Boolean
float n0 = 2.7;
double n1 = 2.7;
double n2 = 8.1/3;
byte b1 = 10;
int n2 = 1;
byte b2 = n2;
char c1 = b1;
自动类型转换:
当java程序在进行赋值或运行时,精度小的类型自动转换为精度大的数据类型。
byte、short 和char 之间不能相互转换。
char–>int–>long–>float–>double
byte–>short–>int–>long–>float–>double
byte、short、char 三者可以计算,在计算时首先转换成int类型
byte b2 = 1;
byte b3 = 2;
short s1 = 1;
short s2 = b2 + s1;
byte b4 = b2 + b3;
boolean 不参与转换
自动提升原则:表达式结果类型自动提升为操作数最大的类型
强制类型转换:加()
强制符号只针对最近的操作数有效,忘完会使用() 提升优先级
Byte和short类型在进行运算时,当作int类型处理。
字符编码:
ASCII:编码表 一个字节表示,一个128个字符,实际上一个字节可以表示256个字符,只用128个。
Unicode:编码表 固定大小的编码 使用两个字节来表示字符,字母和汉字统一都是占两个字节,这样浪费空间。
utf-8:编码表,大小可变的编码 字母使用1个字节,汉字 使用3个字节。
gbk:可以表示汉字,而且范围广,字母使用一个字节,汉字2个字节。
gb2312:可以表示汉字,根本gb312<gbk。
big5码:繁体中文,台湾,香港。
运算符:+ 、-、*、/、%、++、–
关系运算符:==、!=、<、<=、>、>=、instanceof(检查是否是类对象)
逻辑运算符:
短路与 &&,短路或||,取反!
逻辑与&,逻辑或|,^逻辑异或 1、&&短路与:如果第一个条件为false,则第二个条件不会判断,最终结果为false。
2、&逻辑与:不管第一个条件是否为false,第二个条件都要判断,效率低。
3、开发中,我们使用的基本是使用与&&,效率高
短路或|| : 条件1||条件2 两个条件只要有一个成立,结果为true,否则为false
逻辑或|: 条件1|条件2 只要有一个条件成立,结果为true
a | b | a&b | a&&b | a|b | A||b | !A | A^B |
---|
true | true | true | true | true | true | false | false | true | false | false | false | true | true | false | true | false | true | false | false | true | true | true | true | false | false | false | false | false | fales | true | false |
三元运算符:
条件表达式?表达式1:表达式2
标识符的规则和规范:
- 由26个英文字母大小写,0-9,_或$
- 数字不可以开头。int 3ab//错误
- 不可以使用关键字和保留字,但能包含关键字和保留字
- Java中严格区分大小写,长度无限制。
- 标识符不能包含空格。int a b = 90;//错误
输入:Scanner scanner = new Scanner(System.in);
进制:
二进制:0,1,满2进1,以0b或0B开头。
十进制:0-9,满10进1
八进制:0-7,满8进1,以数字0开头表示
十六进制:0-9以及A(10)-F(15),满16进1,以0x或0X开头表示。此处A-F不区分大小写。
进制的转换:
其他进制转十进制:
二进制转十进制:0b1011=1*2^0+2*2^1+0*2^2+1*2^3=11
八进制转十进制:0234=4*8^0+3*8^1+2*8^2=4+24+128=156
十六进制转十进制:0x23A=10*1+3*16+2*16^2=570
十进制转其他:
十进制转二进制:该数不断除以2 ,直到商为0 为止。然后将每步的余数倒着写。34=0B00100010(一个字节8位,不够8位前面补0)
十进制转八进制:该数不断除以8 ,直到商为0 为止。然后将每步的余数倒着写。
131=0203
十进制转十六进制:该数不断除以16 ,直到商为0 为止。然后将每步的余数倒着写。
237=0xED
二进制转八进制:从低位开始三个为一组 ,转换成对应的八进制数即可。
0b11 010 101=> 0325
二进制转十六进制:从低位开始四个为一组 ,转换成对应的十六进制数即可。
0b11010101=>0xD5
八进制转换成二进制:八进制数的每一位转换成对应的一个三位的二进制数。
0237=0b10011111
十六进制转换成二进制:十六 进制数的每一位转换成对应的一个四位的二进制数。
0x2(0010) 3(0011) B(1011) =0b001000111011
位运算:>>(算术右移)、<<(算术左移) 、>>>(逻辑右移)
1、算术右移>>:低位溢出,符号位不变,并用符号位补溢出的高位
2、算术左移<<:符号位不变,地位补0
3、>>>逻辑右移也叫无符号右移,运算规则是:地位溢出,高位补0
4、特别说明:没有<<<符号
4<<3//4*2*2*2 15>>2//15/2/2
原码、反码、补码(important):
1、二进制的最高位是符号位:0表示正数,1表示负数。(口诀:0->0 ,1->-)
2、正数的原码、反码、补码都一样。(三码合一)
3、负数的反码=它原码符号位不变其他位取反(0->1,1->0)
4、负数的补码=它的反码+1,负数的反码=负数的补码-1.
5、0的反码、补码都是0。
6、Java没有无符号数,换言之,Java中的数都是有符号的。
7、在计算机运算的时候,都是以补码的方式来运算的。
8、当我们看到运算结果的时候,要看它的原码。
API文档:www.matools.com
|