Java基础知识归档
Java基础知识归档
基础语法
Java数据类型
Java是一种强类型的语言,每个变量都必须声明其类型
Java数据类型分为:基本数据类型和引用数据类型
基本数据类型中整数类型(byte,short,int,long),浮点类型(float,double),字符类型(char),布尔类型(boolean);
引用数据类型为类(class),接口(interface),数组;
Java语言整数的三种形式:
- 十进制整型 如:1,3,5,7,9
- 八进制整型 以0开头,如010
- 十六进制整型 以0x开头,如0x14
- 二进制 以0b开头,下划线分割,如0b0000_0000_0000_0000_0000_0000_0000_0011 (jdk7新特性)
类型 | 占用存储空间 | 表数范围 |
---|---|---|
byte | 1字节 | -128~127 |
short | 2字节 | -2^15~2^15-1(-32768~32767) |
int | 4字节 | 约21亿 |
long | 8字节 | -2^63~2^63-1 |
float | 4字节 | -3.403E38~3.403E38 |
double | 8字节 | -1.798E308~1.798E308 |
char | 2字节 | 0~65535 |
boolean | 1位 | 0,1 |
Java中的类型转型
自动类型转换
容量小的类型可以直接转为容量大的类型
如:
1 | int i = 1; |
特例:将整型数据直接赋值给byte,short等类型的变量时,如果不超出其表数范围,即不需要进行强制转换。
如:
1 | byte b = 100; |
此处的100为int类型,int占4字节,而byte只占1字节,4字节转1字节为什么会编译通过呢?由于byte表数范围在-128~127,所以此处编译通过,反之byte=200即报错。
强制类型转换
强制类型转换又称造型,用于显式的转换一个数值的类型,在有可能丢失信息的情况下进行的转换是通过造型来完成的,但可能造成精度降低或者溢出。
如果将一种类型强制转换为另外一种类型,而又超出了目标类型的表数范围,就会被截取成为一个完全不同的值
例如:
1 | int i = -100; |
表达式的类型提升问题
例如:
1 | int a = 3; |
编译报错,因为a+b类型提升为long类型。如需编译通过,需要(int)(a+b);
Java访问级别
在java中共有4种访问级别,按访问权限由高到低为:public(公有的)、protected(受保护的)、友好的(default没有任何访问权限关键字修饰)和private(私有的)。
级别 | 同类 | 同包 | 子类 | 不同包 |
---|---|---|---|---|
public | √ | √ | √ | √ |
protected | √ | √ | √ | × |
default | √ | √ | × | × |
private | √ | × | × | × |
Java中的位运算符
经典面试题:最有效率的方式算出2乘以8等于多少,答案是2 << 3 。
我们知道:
位运算:m << n 等于 m × 2^n
位运算:m >> n 等于 m / n × 2
即将一个数 m
左移 n
位,就相当于 m
乘以2的 n
次方;
相反将一个数 m
右移 n
位,就相当于 m
除以(n×2)
。
那么,一个数乘以8只要将其左移3位,即2 << 3