7.24笔记

一、String字符串

String 对象比较等问题 :

String s="aaa";//堆内存中

String ss=new String("aaa");//new堆内存

StringBuilder 与 StringBuffer :

StringBuffer :一个线程安全的、可变的字符序列,字符串缓冲区类似于String ,但可以修改,字符串冲

区可以安全地被多个线程使用

从 JDK 5 开始,这个类已经补充了一个为单线程使用而设计的等效类StringBuilder , 通常应该优先使用

StringBuilder类而不是这个类,因为它支持所有相同的操作,但速度更快,因为它不执行同步

StringBuilder :可变的字符序列, 此类提供与StringBuffer兼容的 API,但不保证同步

学习 :

1.StringBuilder 与 StringBuffer对象创建方式

2.StringBuilder 与 StringBuffer底层结构与扩容问题

底层结构 : 来自于父类AbstractStringBuilder的成员 :

jdk8及之前版本 : char[] value;

jdk8之后 : byte[] value;;

扩容机制 : 每次扩容原容量的2倍+2

 int newLength = oldLength + oldLength + 2

3.StringBuilder 与 StringBuffer 常用方法

StringBuilder()

构造一个其中没有字符且初始容量为 16 个字符的字符串构建器

StringBuilder(String str)

构造一个初始化为指定字符串内容的字符串构建器

StringBuilder(int capacity)

构造一个字符串构建器,其中没有字符,初始容量由capacity参数指定

StringBuilder append(boolean b)

将boolean参数的字符串表示形式附加到序列中

StringBuilder delete(int start, int end)

删除此序列的子字符串中的字符

StringBuilder insert(int offset, boolean b)

将boolean参数的字符串表示形式插入此序列

StringBuilder replace(int start, int end, String str)

将此序列的子字符串中的字符替换为指定的String中的字符

StringBuilder reverse()

导致此字符序列被相反的序列替换

4.StringBuilder|StringBuffer与String之间相互转换问题

 StringBuilder|StringBuffer-->String
                     1)StringBuilder|StringBuffer的toString
                        2)new String(StringBuilder|StringBuffer)
                String-->StringBuilder|StringBuffer
                     1) new StringBuilder|StringBuffer(String)

注意 :

如果某个类型的底层结构涉及到数组的使用,需要关注数组的初始容量+扩容机制

二、包装类

java为所有基本数据类型都提供了一个与之对应的引用数据类型

为什么有了基本数据类型还要提高包装类?

1.类中可以提供众多的成员,功能强大

2.集合中只能存储引用数据类型的对象数据

3.在结合业务使用中,属性如果为包装类类型可以便于区分以下两种状态 :账户余额 Double

null :没有充过值

0.0 :充过值但是已经消费为0

为什么有了包装类还要存在基本数据类型?

1.基本数据类型使用简答方便

2.有利与节省内存空间

基本数据类型与包装类之间相互转换 :

jdk5新特性 : 自动拆装箱

自动装箱 : 基本-->包装

自动拆箱 : 包装-->基本

基本-->包装

int Integer

char Character

注意:自动装箱拆箱时,对于-128-127之间的值,编译器仍然会把它当做基本类型处理

三、基本数据类型与包装类数据比较问题 :

在数据值相等的前提下 :

1.两个int类型比较,值相等就相等

2.两个new Integer,只要是new就是新的地址,肯定不相等

3.int与Integer比较,包装类会先发生自动拆箱,然后两个基本数据类型比较值相等就相等

4.Integer与 new Integer比较,new参与肯定不相等

5.两个Integer比较,如果值在[-128,127]之间,返回缓冲区对象相等,如果不再返回之内,返回new Integer不相等

注意 : Short,Integer,Long类型的valueOf方法内部存在[-128,127]返回判断是否返回缓冲区对象、

四、Math:数据相关模型

Math类包含用于执行基本数值运算的方法,例如初等指数、对数、平方根和三角函数

static double abs(double a)

返回double值的绝对值

static double ceil(double a)

返回大于或等于参数且等于数学整数的最小(最接近负无穷大) double值

static double floor(double a)

返回小于或等于参数且等于数学整数的最大(最接近正无穷大) double值

static long max(long a, long b)

返回两个long值中的较大者

static double min(double a, double b)

返回两个double值中较小的一个

static double pow(double a, double b)

返回第一个参数的第二个参数次幂的值

static double random()  

返回一个double带正号的值,大于或等于0.0且小于1.0

随机整数

 [min,max]  (int)(Math.*random*()*(max-min+1)+min)
                    Math.*random*()---->[0.0,1.0)
                    Math.*random*()*(max-min+1)---->[0,max-min+1)
                    Math.*random*()*(max-min+1)+min---->[min,max+1)
                    (int)(Math.*random*()*(max-min+1)+min)---->[min,max]
static long round(double a)

返回最接近参数的long ,并舍入为正无穷大

static double sqrt(double a)

返回double值的正确舍入的正平方根

五、Date

时间日期类型

类Date表示特定的时间瞬间,精度为毫秒

SimpleDateFormat : 允许格式化(日期→文本)、解析(文本→日期)

1.创建SimpleDateFormat的对象 : 使用默认的模式|模板 ,指定模式|模板

2.转换

格式化(日期→文本) public final String format (Date date)

解析(文本→日期) public Date parse (String source) throws ParseException

3.创建SimpleDateFormat的对象

六、枚举

枚举 : enum

枚举也是类

一种事物的所有情况|所有可能,一个类的所有实例

枚举类的实例是由枚举类型内部提供,不允许外部构建

java中所有的枚举类型都默认隐式的继承自java.lang.Enum

枚举类中可以定义 : 字段 , 属性,功能,构造器....

枚举类中的字段,默认为当前枚举类型的实例 ,默认被public static final修饰

枚举类型的字段根据枚举类名.字段名获取使用

枚举类的构造器默认私有化

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值