这里写自定义目录标题
一、数据类型
JAVA是强类型语言,意味着必须为每一个变量声明一种类型。
Java一共有8种基本类型:4种整型、2种浮点型、char、boolean类型。
1. 整型
java 4种整型:
类型 | 存储需求 | 取值范围 |
---|---|---|
int | 4字节 | -2147483648~2147483647 |
short | 2字节 | – |
long | 8字节 | – |
byte | 1字节 | – |
注释:
- 在java中,所有数据类型占据的字节数据与平台无关。
- java没有无符号类型
2. 浮点类型
2种:
类型 | 存储需求 | 取值范围 |
---|---|---|
float | 4字节 | 正负,有效位数为6~7位 |
double | 8字节 | 正负,有效位数为15位 |
3. char
4. boolean 布尔类型
有2个值,true和false。
二、变量
-
变量名区分大小写
-
必须对变量进行初始化
-
常量用final声明,final表示这个变量只能被赋值一次。常量名使用大写。
static final声明的为类常量,定义在main方法外部。 -
运算符:/:整数除法或浮点除法;%:求余
整数/0 异常
浮点数/0得到无穷大或NaN结果。 -
++n 先+1再运算;
n++ 使用变量原来的值 -
逻辑运算符:与&& 或|| 非!
-
位运算符:与&,或|,异或 ^,非~,>>向右移位,<<向左移位
-
数值类型之间的转换
上图实心箭头的无信息丢失转换,虚线有信息丢失 -
强制类型转换,如
double x=9.9997;
int nx=(int) x;
-枚举类型
三、字符串
字符串变量指向常量池中相应的位置。如复制一个字符串,则原始字符串与复制的字符串共享相同的字符。
共享带来的高效率远高于提取、拼接字符串带来的低效率。
子串
不可变字符串
String类没有提供可以修改字符串的方法,所以将String类对象称为不可变字符串。
String 类是不可改变的,所以你一旦创建了 String 对象,那它的值就无法改变了
参考:https://www.cnblogs.com/niew/p/9597379.html
面试常考:String、StringBuffer、StringBuilder的区别
String | StringBuffer | StringBuilder |
---|---|---|
每次对String的操作都会生成新的String对象,不仅效率低下,而且浪费大量优先的内存空间 | 类的对象能够被多次的修改,并且不产生新的未使用对象 | 可变类,速度更快 |
不可变 | 可变 | 可变 |
线程安全 | 线程不安全 | |
操作少量的数据用 String | 多线程操作大量数据,用StringBuffer | 单线程操作大量数据用StringBuilder |
详细:https://blog.csdn.net/itchuxuezhe_yang/article/details/89966303
字符串常量池
堆、栈、方法区
检测字符串是否相等
s.equals(t)
一定不能用==,==只能确定2个字符串是否放在了同一个位置上。