Java基础(一)——基本语法

基本语法

1 编译和解释共存

在这里插入图片描述

2 数据类型

基本类型位数字节默认值
boolean1false
byte810
char162‘u0000’
short1620
int3240
long6480L
float3240f
double6480d

装箱:将基本类型用它们对应的引用类型包装起来

拆箱:将包装类型转换为基本数据类型

2.1 常量池技术

Byte, Short, Integer, Long默认创建了-128127的缓存数据,Character创建了0127的缓存数据

// 使用常量池中的对象,Integer i1 = Integer.valueOf(40);
Integer i1 = 40;
// 创建新的对象
Integer i2 = new Integer(40);
// Integer没有+操作符,会自动拆箱
Integer i3 = new Integer(40);
Integer i4 = new Integer(40);
Integer i5 = new Integer(0);
i3 == i4 + i5  // true

3 String

String:内部使用final关键字修饰字符数组保存字符串,不可变

StringBuilder:可变字符串

StringBuffer:可变字符串,增加了同步锁,线程安全

4 ==和equals()的区别

==:用于比较两个对象地址是否相等,对于基本类型,比较的就是值,对于引用类型,比较的是地址

equals:用于判断两个对象是否相等,继承于Object类的equals方法,在Object类中equals方法使用的就是==,所以一些子类需要覆盖重写equals方法用于比较对象内容

5 equals()和hashCode()

为什么需要计算哈希值:把对象加入HashSet时,会先计算哈希值判断是否存在该对象,如果存在再通过equals方法判断是否相等

为什么重写equals方法时必须重写hashCode方法:如果两个对象相等(equals返回值相同),则哈希值一定是相等的;但如果两个对象哈希值相同,两个对象不一定相等

6 Java的值传递

在Java中只有值传递,只是引用对象传递的值是对象的地址,所以看起来像是引用传递

所以,在函数中改变对象的属性时,改变的是对应地址上的对象的属性,是可以改变的

但,在函数中直接改变对象,改变的是形参指向的地址,所以原对象是无法改变的

7 深拷贝和浅拷贝

  • 浅拷贝:对基本数据类型进行值传递,对引用数据类型进行引用传递般的拷贝
  • 深拷贝:对基本数据类型进行值传递,对引用数据类型,创建一个新的对象,并复制其内容

所以对象变量间的赋值会造成两个对象变量指向同一个地址

8 重载和重写

  • 重载:同样的一个方法能够根据输入参数的不同,做出不同的处理
  • 重写:子类继承自父类的相同方法,重新改写,构造方法不可重写

9 序列化

序列化可以将对象转换为流,用于存储在本地,实现Serializable接口

transient关键字修饰的变量不会被持久化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值