java从头攻破——学习笔记2020618(一)

这里写自定义目录标题

  • 一、数据类型
    • 1. 整型
    • 2. 浮点类型
    • 3. char
    • 4. boolean 布尔类型
  • 二、变量
  • 三、字符串
    • 子串
    • 不可变字符串
          • 面试常考:String、StringBuffer、StringBuilder的区别
          • 字符串常量池
          • 堆、栈、方法区
    • 检测字符串是否相等

一、数据类型

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++ 使用变量原来的值

  • 逻辑运算符:与&& 或|| 非!

  • 位运算符:与&,或|,异或 ^,非~,>>向右移位,<<向左移位

  • 数值类型之间的转换
    java从头攻破——学习笔记2020618(一)_第1张图片
    上图实心箭头的无信息丢失转换,虚线有信息丢失

  • 强制类型转换,如

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

java从头攻破——学习笔记2020618(一)_第2张图片
详细:https://blog.csdn.net/itchuxuezhe_yang/article/details/89966303

字符串常量池
堆、栈、方法区

检测字符串是否相等

  s.equals(t) 

一定不能用==,==只能确定2个字符串是否放在了同一个位置上。

你可能感兴趣的:(Java,java)