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
2
3
int i = 1;
float f = i;
double d = f;

特例:将整型数据直接赋值给byte,short等类型的变量时,如果不超出其表数范围,即不需要进行强制转换。
如:

1
byte b = 100;

此处的100为int类型,int占4字节,而byte只占1字节,4字节转1字节为什么会编译通过呢?由于byte表数范围在-128~127,所以此处编译通过,反之byte=200即报错。
强制类型转换
强制类型转换又称造型,用于显式的转换一个数值的类型,在有可能丢失信息的情况下进行的转换是通过造型来完成的,但可能造成精度降低或者溢出。
如果将一种类型强制转换为另外一种类型,而又超出了目标类型的表数范围,就会被截取成为一个完全不同的值
例如:

1
2
int i = -100;
char c = (char)i;// -100不在0~65535范围内

表达式的类型提升问题
例如:

1
2
3
int a = 3;
long b = 4;
int c = a + b;

编译报错,因为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

文章目录
  1. 1. 基础语法
    1. 1.1. Java数据类型
    2. 1.2. Java中的类型转型
    3. 1.3. Java访问级别
    4. 1.4. Java中的位运算符
,