Java的值传递

Java的值传递和所谓的引用传递

本质上Java只有值传递,所有的赋值传参都是一次值的拷贝
引用数据类型其实拷贝的就是引用地址(虚地址)
基本数据类型拷贝的是值,不会传入实例对象本身
面试题:打印输出的结果是?
在这里插入图片描述
输出结果Tom
在这里插入图片描述

常用API

API(Application Programming Interface)应用程序接口
JDK给我们提供的一些已经写好的类,我们可以直接调方法来解决问题
String(可以叫API接口)
我们类的方法,在宏观上都可以称为接口

API文档,用来介绍API
时间相关的API
时间:
格林尼治天文台
时区:东八区
北京时间
时间戳:格林尼治时间1970.1.1 00:00:00 到尽头2022.7.28 9:29:30 的毫秒数
1s = 1000ms , 1min = 60s , 1h = 60min , 1day =24h。
时间戳在全世界都是固定的。忽略了时区等
在这里插入图片描述

日期类 Date

在这里插入图片描述

compareTo
在这里插入图片描述
当返回负数时,说明调用者时间是在参数时间之前。
当返回0时,说明调用者时间和参数时间相同。
当返回正数时,说明调用者时间在阐述时间之后。

日历类:日期、时间

Calendar是一个抽象类,能new不能创建对象
初始化;
提供了一组对“年月日、时分秒、星期”等信息的操作函数。可以操作不同时区的信息。
JDK1.1版本开始,在处理时间和日期时,系统推荐使用Calendar类
Calendar要比Date强大的多

在这里插入图片描述
除非要获取的年月日时分秒一次性拿取,否则一律用calendar

时区

在这里插入图片描述
ZoneId
在这里插入图片描述
日期格式化
SimpleDateFormat

format:格式化Date类型,把Date类型转成String类型
我们要展示数据到客户端
parse:把String类型的时间,转成Date类型
从客户端传过来的时间,一般都是String类型,存入数据库。

yyyy代表年,yy代表年的后两位
MM代表月
dd代表日
HH代表小时(24小时制) hh代表小时(12小时制)
mm代表分
ss代表秒
SSS代表毫秒
工具类的方法都是静态

JDK8的日期时间类
在JDK8之前,处理日期和时间,基本上就是用我们上面的几个类
Date和Calendar,获取到的月份都是0-11,而不是我们生活中的1-12

阿里巴巴规约的明确要求:
如果是JDK8的应用,可以使用Instant来代替Date,LocalDateTime代替Calendar,DateTimeFormatter代替SimpleDateFormat

新的时间类
Instant
LocalDate
LocalTime
DateTimeFormatter

持续时间Duration
在这里插入图片描述
获取当前的日期 LocalDate
在这里插入图片描述
在这里插入图片描述
判断是否为闰年
在这里插入图片描述
本地时间 LocalTime
在这里插入图片描述
获取日和时间 LocalDateTime
在这里插入图片描述
处理日期的格式化问题 DateTimeFormatter
在这里插入图片描述
把Instant转成Date
在这里插入图片描述
把Date转成Instant
在这里插入图片描述
把Instant转成LocalDateTime
在这里插入图片描述
把LocalDateTime转成Instant
在这里插入图片描述
把Date转成LocalDateTime
在这里插入图片描述
把LocalDateTime转成Date
在这里插入图片描述
Math 数学类
随机数 random() double
向上取整 ceil() double
向下取整 floor()double
四舍五入 round()long

BigDecimal统计类
在这里插入图片描述
随机类 Random
在这里插入图片描述

Arrays——数组的工具类

数组的排序
在这里插入图片描述
数组的查找
在这里插入图片描述
数组拷贝
在这里插入图片描述数组的比较

在这里插入图片描述
System类——系统类
在这里插入图片描述
Objects(工具类)JDK1.7
判断是不是空

在这里插入图片描述

EPA单词:

.length() .indexof() .lastIndexof() .substring() .charAt() .trim()
.toUpperCase() .toLowerCase() .equals() .startsWith() .endsWith()
.valueof(); .StringBuilder(); .append(); .toString(); .delete();
.insert(); .reverse(); .split(); .equals(); .intValue(); .parse…();

1.统计字符串直接用.length()长度

2.int indexof(string str)
查找给定字符串在当前字符串中的位置如果当前字符串中不包含给定的内容时返回值为-1;
indexof(“in”);
直接赋值在字符串中从头找想要的字符串in;
indexof(“in”,3);
在赋值的in后面加坐标,可也跳过给定坐标之前的in,从坐标开始找后面的第一个in

3.lastIndexof();
查找最后一个给定的字符串下标位置

4.substring(4);
从指定的下标位置开始截取字符串一直到结束.

5.char charAt(int index);
获取当前字符串中指定位置的字符下标是多少位置就在下标之上

6.String trim();
去除当前字符串两边的空白字符

7.String toUpperCase(); 将当前字符串英文转全大写

8.String toLowerCase();
将当前字符串英文转全小写

9.equals();
比较两个字符串内容时要用字符串的equals
方法执行不能用"=="比较,因为不一定成立,也不一定准.

10.startsWith();
判断当前字符串是否以给定字符串开始的

11.endsWith();
判断当前字符串是否以给定字符串结束的

12.valueof()
作用是是将给定的内容转换成为字符串类型常用与将基本类型转换为字符串

13.String字符串解析:
字符串不可频繁修改内容,会导致大量系统开销比较低的运行效率.

14.StringBuilder:比String方法多,效率高.

15.append();
将指定内容追加到字符串中末尾;

16.toString();
方法获取修改后的字符串;

17.replete();
将当前字符串中指定范围内的内容换成给定字符串
从下标几开始插入自己定义的内容

18.delete();
删除当前字f符串中指定范围内的内容
从下标几开始到下标几结束,自己选择.

19.insert();
从给定的内容插入到指定位置,
从第几位开始插入自己定义的内容.

20.reverse(); 正则表达式:
反转字符串
把正序的字符改成倒序的.

21.split();
将当前字符串按照满足正则表达式的部分拆分,将拆分出来的每一段都存入数组并将数组返回.
aha123dsv456dvf789dsv 引用split([0-9]+)用正则式拆分
按照一个数拆分,中间会有空字符串.尾部的空字符串会被系统省略

22 .String replacAll(string regex , string str)
前面的是指定信息,后面改前面的指定内容.

23.String toString()
该方法是object定义的方法,意思是将当前对象(转换为一个字符串)
默认实现中返回的字符串视为当前类的名字@地址

24.equals();方法表达式;
方法表达式的含义是两个对象的内容是相同
p.equals(p1)意识是p对象的内容和p1对象的内容是否相同,
而不是关心他们指向的是不是一个对象.
Object提供的equals方法内部仍然是用==比较的,
因此若想让子类的equals方法发挥实际比较对象内容的作用就要进行重写.

StringBuffer和StringBuilder——可变的字符序列
和String是有本质区别的
StringBuffer不能直接用等号赋值

StringBuffer

基本介绍

1、StringBuffer代表可变的字符序列,可以对字符串内容可以进行增删

2、StringBuffer是可变长度的

3、StringBuffer的直接父类是AbstractStringBuilder

4、StringBuffer实现了serializable,即StringBuffer的对象可以串行化

5、在父类中,AbstractStringBuilder的属性char[] value,不是final。该 value数组存放字符串内容,引出存放在堆中的

6、StringBuffer是final类,不能被继承

String和StringBuffer的区别

String保存的是字符串常量,里面的值不能更改,每次String类的更新实际上就是更改地址(每次创建新的对象),效率较低

StringBuffer保存的是字符串常量,里面的值可以更改,每次StringBuffer的更新实际上可以更新内容,不用更新后地址,效率较高

构造器

StringBuffer():构造一个其中不带字符的字符串缓冲区,其初始容量为16个字符串
StringBuffer(CharSequence seq):构造一个字符串缓冲区,包含与指定CharSequence相同的字符
StringBuffer(int capacity):构造一个不带字符,但是具有初始容量额字符串缓冲区。即对char[] 大小进行指定
StringBuffer(String str):构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容,长度为当前字符串长度加上16

StringBuilder

基本介绍

1、一个可变的字符序列,提供了一个与StringBuffer兼容的API,但不保证同步。该类被设计用作StringBuffer的一个简易替换,用在字符串缓冲区被单个线程使用的时候。如果可能,建议优先采用该类,因为在大多实现中,比StringBufffer要快

2、StringBuffer和StringBuilder均代表可变的字符序列,方法是一样的

3、StringBuilder的方法没有做互斥的处理,没有用synchronized关键字,因此在单线程的情况下使用

区别

1、String是一个final类,代表不可变的字符序列,也就是String引用的字符串是不能改变的
2、StringBuffer/StringBuilder表示的字符串对象可以直接进行修改,而且方法也一样
3、StringBuilder是java5中引入的,和StringBuffer的方法完全相同。区别在与它是单线程环境下使用的,因为他的所有方法都没有synchronized修饰,他的效率理论上比StringBuffer要高

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值